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

SSLに関して(主にオレオレSSLの作成方法など)

Contents1 HTTPSとは1.1 概要説明1.2 SSL費用の違いについて2 オレオレSSL2.1 秘密鍵作成コマンド2.2 公開鍵作成コマンド2.3 オレオレSSL証明書の作成3 webサー …

no image

AWSのCLIに関して

実務でAWSを使ってたんですがテスト時にはコマンドを使っている方がはるかに早いためコマンドライン環境を作っておいたほうが良いです。 ちなみに使用する前にはAWSのコンソールからIAMユーザーを作成する …

no image

シェルスクリプトでのsshログインとメール送信

久々にシェルスクリプトをやったんでその復習を。 応用範囲は結構広そうです。 Contents1 ファイルの読みこみ方2 関数の定義、使い方3 SSHログイン4 ssh鍵認証つきのログイン5 メール送信 …

no image

set,ifディレクティブ,変数に関して

これまで基本的なnginxの設定についてみてきましたが、今回はset,ifディレクティブについてみていきます。 Contents1 変数とset2 error_page3 名前付きlocation 変 …

no image

yumとrpmについて

centOSのカーネルのバージョンアップで時間があるのでブログを更新。 redhat系ではソフトウェアをインストールするときにyumかrpmのコマンドを使うと思います。 私も日頃、両方使っているのです …