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

ログ抽出コマンド特集 その3 データの収集や抽出にかかわるコマンド群(sort ,tr,cut)

サーバーの負荷を見る場合、unixコマンドでログを抽出できたりすると何かと便利です。 いままでも下記の記事でこれらの出力を行いました。 ログ抽出コマンド特集 その1 cat+grep+sort 私が本 …

no image

サーバー設定ファイルについて nginx

最近はwebサーバーのシェアとしてnginxが徐々に伸びてきていますね。 先日apacheについて解説をしましたが、nginxについて書きたいと思います。 Contents1 設定ファイル2 参考リン …

no image

メールヘッダ・インジェクション

Contents1 メールヘッダ・インジェクションとは?2 被害3 対策 メールヘッダ・インジェクションとは? お問い合わせメールなどでメールのヘッダを悪意のある第三者に自由に変更させられてしまう機能 …

no image

SQLインジェクション

セキュリティ関係の知識がぬるいのでちょっとお勉強。 知っていることもあるが復習もかねて勉強を。 Contents1 SQLインジェクションとは?2 被害3 対策4 参考サイト SQLインジェクションと …

no image

vagrant share

実はvagrantを使って仮想環境を一時的ではありますが、webから見ることができます。 1 まずはhttps://atlas.hashicorp.com/account/newにてアカウント登録。そ …