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

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

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

p …

no image

wordpressでのnginx設定

ここ1年、apacheではなく、nginxでサービスを作ることが多いため、設定にだいぶ慣れてきました。 今回はwordpressの設定です。 バーチャルホストでsample.comとアクセスをするとw …

no image

HTTPヘッダ・インジェクション+オープンリダイレクタ

Contents1 HTTPヘッダ・インジェクションとは?1.1 被害(ほぼクロスサイト・スクリプティング攻撃による脅威と同じ脅威)1.2 対策2 オープンリダイレクタとは?2.1 対策 HTTPヘッ …

no image

シェルの基礎+ユーザー切り替え関連

雑誌を見ていたらシェルの特集があったので、ちょっとメモリます。 補強したいところのみ要点をチェック。 Contents0.1 実行パスについて0.2 ビルドインコマンド0.3 シェル変数・環境変数0. …

no image

Linuxコマンドの総復習

ちょっとスポット的にLinuxコマンドの復習などを。 Contents1 コマンドの実行2 リダイレクト処理の一覧2.1 コマンド> ファイル2.2 コマンド<ファイル2.3 コマンド&g …