PHPのように

pythonもブラウザ実行したい。

apacheに設定したらできるだろう。

 

そう、簡単に思っていた。でも違いました。

ちょっとハマった話です。

 

「python apache」

「python apache windows」

 

とかで調べると

 

apacheのconfigファイルに

#AddHandler cgi-script .cgi

とコメントアウトされた行があるので

コメントアウトを解除して

apacheを再起動したら

表示できるよ。

 

的なことが書いてあります。

嘘です。

それだけじゃできません。

 

やろうとしたことは

test.py

print ("Content-Type: text/html\n")

print('Yes I can !')

という超簡単ファイルを

ブラウザで表示できるようにする。です。

 

以下

  • ブラウザでpythonを接続するまで①
  • ブラウザでpythonを接続するまで②
  • ブラウザでpythonを接続するまで③

と書きましたが

実行に必要なことは、①と③を見ればわかります。

②はハマった話です。

 

■■■■■以下、ブラウザでpythonを接続するまで①■■■■■

まず、apache httpd.conf

#AddHandler cgi-script .cgi

とコメントアウトされた行があるので

●コメントアウトを解除し、

同じく、apache httpd.confに

Alias /python "C:/hoge/hoge/python"

<Directory "C:/hoge/hoge/python">
    AllowOverride None
    Options FollowSymLinks
    Require all granted
    Options +ExecCGI
</Directory>

を追記。

●Alias の部分で、URLから接続する際

localhost/python/で接続できるようにエイリアス(別名)を設定。

●<Directory ~ の部分で

pythonファイルの親ディレクトリまでを

apacheからアクセスできるように設定します。

※設定は参考程度に見てください。

※とりあえず動いた。けど設定内容は各自仕様を考慮し調整する必要があります。

 

■■■■■以下、ブラウザでpythonを接続するまで②■■■■■

ハマった!

 

「python apache」で調べるとよくでてくる。

「pip install mod_wsgi」

これが曲者。

 

コマンドプロンプトを管理者権限で開き

python.exeのディレクトリまで移動

python -m pip install mod_wsgi

と打ち込み、installが実行されたけど

エラー!!

エラーの内容は

Visual C++ 14がない。

microsoftでダウンロードして入れました。

再度コマンド実行!

エラー!!(なんで)

エラーの内容は

Visual C++ 14がない。

PC再起動しても
Visual C++ の他のバージョンも削除したり

試しましたが駄目でした。

 

●結論は、

python -m pip install mod_wsgi

を実行する必要ない。

Visual C++ 14も入れる必要はない。

 

※もしかしたら、他の工程で必要となるかもしれませんが

 私が試したい超簡単コードの実行には不要です。

※このエラーは解消方法があるようです。

 まだ試していませんが、Qiitaに記事がありました。

 

 
■■■■■以下、ブラウザでpythonを接続するまで③■■■■■
pythonはcgiとして実行されます。
ここの理解はまだ浅いので詳細は省きます。
test.py の1行目に
#!"python.exeのファイルパス"
を追記。
例えば、
C:\Hoge\hoge\Python\python.exe

test.py

#!"C:\Hoge\hoge\Python\python.exe"

print ("Content-Type: text/html\n")

print('Yes I can !')

あとは、
apacheを再起動して
ブラウザに
localhost/pytho/test.py
を打ち込みEnterを押せばヨシ!
 
ちなみに、
print ("Content-Type: text/html")
にすると、ブラウザエラーになります。
理由は不明。もうちょっと調べてみよう。
 
同じ入り口でハマった人の少しでも役に立てばいいな。
あと、自分もまた忘れかねないので、メモメモ。