質問: bottle.default_app() > > @bottle.route('/') > def home() : > return "apache and wsgi, sitting in a tree" > > ``` > > 1.これは、C直下のフォルダ、var/www/testにhome.wsgiというファイルを作るということでしょうか? > > apacheとmod_wsgiモジュールが正しく動作しているなら、あとはこれらをPythonスクリプトに接続するファイルに一行を追加する。 > > (中略) > > デフォルトウェブサイトを指定するセクションに次の行を追加しよう。 > > > > ``` > WSGISciptAlias / /var/www/test/home.wsgi > > ``` > > 2.セクションにこの行を追加するというのは、apacheのhttpd.confのファイルにある `# Virtual hosts` のところにこの行を書き足すということでしょうか? > > すると、セクションは次のようになる。 > > > > ``` > > DocumentRoot /var/www > > WSGISciptAlias / /var/www/test/home.wsgi > > > Order allow,deny > Allow from all > > > > ``` > > apacheを起動、または再起動して、この新しい設定を使わせよう。そして、 をブラウズすると、次のように表示されるはずだ。 > > > > ``` > apache and wsgi, sitting in a tree > > ``` > > いろいろ試行錯誤しましたが、これは表示されませんでした。 そして、3つ目の質問ですが、mod_wsgiモジュールを使うために、`pip install mod_wsgi`とコマンドを実行しても、 ``` Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. ``` というエラーが出てうまくインストールできません。この解決方法を教えてください。 補足します。 Apacheは、アパッチ 2.4 VS16 の Windows バイナリとモジュールにてダウンロードし、インストールしました。 また、初期設定はApache インストール (Windows編)に従って行いました。
回答: 答えの前に、質問時の転記ミスでしょうか、提示されたソースコードにtypoとインデント不足があります。 誤:`appkication` 正:`application` 誤:`def home() :`と`return "apache and wsgi, sitting in a tree"`が同じインデントのまま 正:`return "apache and wsgi, sitting in a tree"`を1段インデントさせる テストファイルが以下のようになっていることを確認してください。 ``` import bottle application = bottle.default_app() @bottle.route('/') def home() : return "apache and wsgi, sitting in a tree" ``` もう一つ、色々とカスタマイズする前に、インストールしただけの Apache が正常に立ち上がってサービス出来ていることを確認してください。 何もカスタマイズしていない状態では、 をブラウズすると **It works!** と表示されると思います。 「このサイトにアクセスできません」とか「Internet Information Services」の画面が表示される場合は、インストール・設定が上手く行っていません。 ちなみに私は「Apacheのビルド済パッケージを使ってインストールする」方法が上手く行かなかったので、XAMPPをインストールするのと同等の「**Bitnami WAMPスタックをインストールする**」を行いました。そしてIISも動作していたので、その時の Apache のポートは 81 でした。 そして先に3つ目から。 **Q3.mod_wsgiモジュールインストール** これらの記事が参考になるでしょう。 【Python】Windows+Apacheでmod_wsgiを使えるようにする(書きかけ) DjangoとApacheとWSGIとWindows **つまりあらかじめ環境変数`MOD_WSGI_APACHE_ROOTDIR`を設定し、インストールしたApacheフォルダのフルパス名を指定します。** これは実はエラーメッセージ`ERROR: Command errored out...`の前の行に以下の説明が出ていたはずです。 ``` raise RuntimeError('No Apache installation can be found. Set the ' RuntimeError: No Apache installation can be found. Set the MOD_WSGI_APACHE_ROOTDIR environment to its location. ``` ちなみに`Apache`のインストール先フォルダ名を **Apache** ではなく **Apache24** (かつC:ドライブのルート="C:/Apache24")にすると特に追加の設定作業無しにmod_wsgiがインストール出来ます。 1つ目2つ目に関しては、こちらの記事が参考になるでしょう。Windowsの場合はドライブ名も含めたフルパス名を指定します。 Bottle、Flaskを使ってWebサーバを起動する(Apacheも使ってやってみた) Apache **つまりすべての `/var` の前に `C:` を付けておきます。** 質問そのものは以下になります。 **Q1.これは、C直下のフォルダ、var/www/testにhome.wsgiというファイルを作るということでしょうか?** A1.そうです。 **Q2.セクションにこの行を追加するというのは、apacheのhttpd.confのファイルにある # Virtual hosts のところにこの行を書き足すということでしょうか?** A2.そうですが、上記説明のように、Windowsなのですべての `/var` の前に `C:` を付けておきます。 なお更にApache - Bottle、Flaskを使ってWebサーバを起動する(Apacheも使ってやってみた)を参考に、`mod_wsgi-express module-config`コマンド(mod_wsgi-express.exeは3.が正常に済んでいればPythonのScriptsフォルダに有ります)実行の結果を``の前に挿入してください。 参考記事では結果の内2行しか追加していませんが、以下の3行(は例で、実際は実行結果を使う)とも追加しておいた方が良いでしょう。 > > > ``` > LoadFile "c:/users/appdata/local/programs/python/python37/python37.dll" > LoadModule wsgi_module "c:/users/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd" > WSGIPythonHome "c:/users/appdata/local/programs/python/python37" > > ``` > > それから、``で指定しているポート番号の80はデフォルトの設定とバッティングするかもしれないので、デフォルト設定の方を無効にするか、新しく加える方を81とか82に変更する必要があるかもしれません。