skillup

技術ブログ

Python サーバー・ネットワーク

Python+cgiでwebアプリを動かすまで

投稿日:2018年5月13日 更新日:

PythonでRESTAPI的なプログラムを作った時のメモ。

あまりCGIで実行する人がいないようで、情報がそこまでありませんでしたが、Perlでやった経験もあり、動かせました。

環境

  • Mac 10.13
  • Python 3.6.0 (pyenv)
  • Webサーバー apache2.4
  • ルートディレクトリ /Library/WebServer/Documents/
  • ルートディレクトリ直下にsampledir/python.pyというファイルをおく
  • urlはhttp://localhost/sampledir/python.pyを想定

準備(主にapacheの設定)

1.cgiでpythonを動かせるようにするためにAdd-handlerに.pyを追加

2.実行するpython(URLとして叩くpythonのファイル)のパーミッションを775

実行するpythonの先頭行にシェバン(pythonのパス)を記述

*CentOSであれば/usr/bin/pyenvなどになるかと思います。

ソース

具体的なformのパラメータの取得などは下記リンクを参考に。

https://docs.python.jp/3/library/cgi.html

当初はCGI用のディレクトリ(/Library/WebServer/CGI-Executables/)でしか動かないと勘違いしていたので下記のような不要な行為をやってました。

何らかの時に役立つかもしれないので一応メモ。(DocumentsディレクトリにAddHandlerがあるので普通にcgiが動きます)

自分はDocumentsディレクトリにソースは置いておいて、CGI-ExecutablesディレクトリからDocumentsにシンボリックリンクを貼って動かそうとしました。

ちなみに間違っているわけではなく、localhost/cgi-bin/sampledir/python.pyを打てばもちろんこれでも動きます。

1 CGI用ディレクトリにアクセスした時にDocumentsをみるようにシンボリックリンクを貼る。

2 ちなみにディフォルトではシンボリックリンクが許可されていないのでOptions FollowSymlinksで許可をします。

参考リンク

CentOS7上でPython3をCGIとして動かすまで

-Python, サーバー・ネットワーク
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

正規表現その2

10/28に書いた正規表現に関しての追記です。 Contents1 覚えておきたいメタ文字2 留意点 覚えておきたいメタ文字 よく出るメタ文字の復習です。 メタ文字 メタ文字の説明 [] いずれかの1 …

no image

zabbixについて 

現在、携わっているプロジェクトでサーバー監視をする必要性がでてきたので、監視ツールについていろいろ調べとります。 Contents1 サーバー監視とは2 サーバー監視ツールとは3 おおまかなイメージ4 …

no image

システム監視の基礎

システム監視のルールがほとんどないので、ちょっと勉強中です。 Contents1 危険率の判定2 参考文献 危険率の判定 今まで一番知りたかったことがこれなんですね。例えばシステムに負荷がかかっている …

no image

vagrant 複数ホストを起動

ansbileを使おうと思ったんですが、ansibleはホスト1→ホスト2という構成になっているため、2台のホストがないと使えません。 MACであればローカル環境からいけますし、Windowsでもcy …

no image

障害調査フロー

実務でサーバーの障害が発生した時のフローなどをメモしおこうかと。 行ってしまうと「ログに始まり、ログにおわる」といった感じでしょうか。 サーバーエンジニアの方の作業をみてたんですが、基本的にはプログラ …