サーバに上げて運用できそうな感じになってきたのでwwwサーバをapacheに切り替えてみたい。
まずはローカルでテストっと。
なになに最近のOSXはweb共有コントロールパネルがなくなっちゃったから
sudo apachectl start
で手動起動すると。
$ ps aux | grep httpd
おや?起動してない・・・
http://hubfactory.jp/act/1127171
このサイトと同じ状況っぽいので
$ sudo apachectl configtest Password: AH00526: Syntax error on line 20 of /private/etc/apache2/extra/httpd-mpm.conf: Invalid command 'LockFile', perhaps misspelled or defined by a module not included in the server configuration
同じだね。
$ sudo nano /private/etc/apache2/extra/httpd-mpm.conf
LockFile “/private/var/log/apache2/accept.lock”
をコメントアウトし、
$ sudo apachectl restart $ ps aux | grep httpd kuro 1286 0.1 0.0 2423376 228 s000 R+ 9:53AM 0:00.00 grep httpd _www 1272 0.0 0.0 2458072 872 ?? S 9:52AM 0:00.00 /usr/sbin/httpd -D FOREGROUND root 1271 0.0 0.0 2450904 4960 ?? Ss 9:52AM 0:00.08 /usr/sbin/httpd -D FOREGROUND
できたね。
http://localhost/
を開くと、お約束の"It works!"が見れた。
このままだと/Library/WebServer/Documents/がドキュメントルートなので、ちょい面倒だから設定を変える。
諸々の設定は
http://tonop.cocolog-nifty.com/blog/2016/02/os-x-1011-el-ca.html
こちらを参考にした。
これで
http://locahost/~kuro/
のようにユーザのディレクトリにアクセスできるようになった。
続いてwsgiのインストール
$ pip3 install mod_wsgi Collecting mod_wsgi Downloading mod_wsgi-4.5.18.tar.gz (2.5MB) 100% | | 2.5MB 604kB/s Installing collected packages: mod-wsgi Running setup.py install for mod-wsgi ... done Successfully installed mod-wsgi-4.5.18
簡単にpipで済ませてしまおう。
さて、今回まずはテスト用に
flasktest +-template | +-index.html | +-layout.html +-sample.py +-sample.wsgi
こういう感じの構成で用意した。
sample.wsgiの中身は
import sys, os sys.path.append('~/kkuro/Sites/flasktest') from sample import app as application
これだけで、sample.pyは特に手を加えない。
wsgiが入っていないと
http://localhost:5000/
で動作することを確認したら、おもむろに
http://[サーバのアドレス]:5000/でアクセス!
できた。
このままではポート5000で占領してしまうのでポートのセッティングとディレクトリを調整してやればいけるはず
っと思ったがなんかおかしい。ポート5000で開いているってことはapacheを介していないってことだ。これはflaskで直接動いているわ。 ちょっとみなおす。
おかしい原因はpipでのインストールにありそうな気配がする(今回の環境はMacOSX)ので一旦
pip3 uninstall mod_wsgi
として、改めてbrewでインストールすることにする。
http://qiita.com/arc279/items/df28bd100cc2f72fad3c
なるほど
You must manually edit /etc/apache2/httpd.conf to include LoadModule wsgi_module /usr/local/opt/mod_wsgi/libexec/mod_wsgi.so
とな
/private/etc/apache2/httpd.conf
で
Include /private/etc/apache2/other/*.conf
のコメントを外しておいたので
/private/etc/apache2/other/python.conf
に
LoadModule wsgi_module /usr/local/opt/mod_wsgi/libexec/mod_wsgi.so ScriptAlias /flasktest /Users/kuro/Sites/flasktest/sample.py
とかくと良さそうだ。