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

追跡ブランチからローカルブランチを作る方法~ (svn→gitの移行など)

SVNで運用されていたプロジェクトをgitに移行する機会があったのでその時のメモなどを。 思ってたよりは楽だったかな・・・ Contents1 準備2 実際の移行(git svn clone)3 gi …

no image

php-fpmトラブル(nginxが競合?)

php-fpmが急に停止になるトラブルがあったので、ちょっとメモ。 php-fpmを再起動しようとしても下記のようなエラーが・・・

p …

no image

メール送信に関して その2 メールメッセージのデータ形式

前回に引き続き、メールのメッセージ構造について書きたいと思います。 Contents1 大まかな構造2 ヘッダ部2.1 メールアドレス2.2 From/Sender/Reply-To2.3 To/Cc …

no image

serverspecによるサーバー自動テスト

最近は管理しているサーバーが多いのと、構成管理ツール(Ansible)なんかをちょくちょく使ってますが、ちゃんと入っているかどうかを確認するのはそれなりに大変だったりします。 が、構成管理ツール自体も …

no image

SQSについて

以前、少しQueueの登録について書きましたが、今回はAWSのキューサービスであるSQSについて。 以前のリンク Queueの登録と実際の処理に関して SQSのポイントについて簡単にまとめて置きたいこ …