pythonのflaskでwebアプリを作るときの
apacheのhttpd.confの設定について質問です。
単純にapacheでmod_wsgiモジュールを使った場合は
ただしく動作しました。
###mod_wsgiモジュールで実行した場合
ini
1 2<VirtualHost *:80> 3 LoadModule wsgi_module /usr/local/python/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so 4 5 WSGIDaemonProcess myapp user=my_user group=my_user 6 WSGIProcessGroup myapp 7 #WSGISocketPrefix /var/run/wsgi 8 WSGIScriptAlias / /var/www/example.com/public/index.py 9 ServerName example.com 10 DocumentRoot "/var/www/example.com/public" 11 <Directory "/var/www/example.com/public"> 12 AllowOverride All 13 Options All 14 MultiViewsMatch Handlers 15 AddHandler wsgi-script .py 16 AddHandler wsgi-script .wsgi 17 DirectoryIndex index.html index.py index.php app.wsgi 18 Order allow,deny 19 Allow from all 20 </Directory> 21</VirtualHost>
###mod_wsgiで動かす場合のpythonスクリプト
python
1def application(environ, start_response): 2 start_response('200 OK', [('Content-type', 'text/plain')]) 3 return [b'Hello, world']
上記のようなよく見るソースで問題なく動かせました。
次にflaskで実行させる場合のapacheの設定をwebで調べたところ
人様のサイトですが以下のURLから引用させてもらいました。
http://blog.akashisn.info/entry/%3Fp%3D258
上記の文献の場合
###flaskが動くと思われるapacheの設定
ini
1#flask.conf 2<VirtualHost *:80> 3 ServerName localhost 4 5 WSGIDaemonProcess flask_app user=www-data group=www-data threads=5 6 WSGIScriptAlias / /var/www/flask/flask_app.wsgi 7 8 <Directory /var/www/flask> 9 WSGIProcessGroup flask_app 10 WSGIApplicationGroup %{GLOBAL} 11 Order deny,allow 12 Allow from all 13 </Directory> 14</VirtualHost>
上記のようになっておりました。
そのため上記のような設定を踏まえて設定を変えたところ以下のようなシンタックスエラーがでました。
以下がエラー内容です Syntax error on line 211 of /usr/local/apache/conf/httpd.conf: Invalid command 'WSGIDaemonProcess', perhaps misspelled or defined by a module not included in the server configuration
結果的に動作させるためには
LoadModule wsgi_module /usr/local/python/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
上記のmod_wsgiモジュールを読み込ませないと動作しませんでした。
###実際にflaskが動いた設定
ini
1<VirtualHost *:80> 2 ServerName *** 3 LoadModule wsgi_module /usr/local/python/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so 4 WSGIDaemonProcess app user=*** group=*** threads=5 5 WSGIScriptAlias / /var/www/***/public/index.wsgi 6 <Directory /var/www/***/public> 7 Allowoverride All 8 WSGIProcessGroup app 9 WSGIApplicationGroup %{GLOBAL} 10 Order deny,allow 11 Allow from all 12 </Directory> 13</VirtualHost>
さて,質問としては
(1)このApacheの組み込みとして動かすためのmod_wsgiモジュールがなくてもflaskが動くという場合はどのような設定にすれば良いのでしょうか?
(2)また,flaskをつかった場合,スクリプトを修正してもapacheを再起動させないと,スクリプトの変更が反映されませんでした。
しかし,冒頭のflaskを使わずにpython+apacheのmod_wsgiで実行させる場合のようにapacheを再起動させずに
スクリプトを修正してその修正を反映さえるにはどのようにしたら良いのでしょうか?
(3)apacheのmod_wsgiを使った場合の動作とはphpなどのphp5_moduleやrubyのpassengerなどと同様にapacheのプロセスとして実行させるという認識でよろしいでしょうか?
以上,有識者の方ご教授いただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/08/27 10:44
2017/08/28 02:56