AmazonLinuxは特にLL用の
rpmをどっさり用意してくれています。
pythonの場合は、ベースが2.6ですが、2.7の
rpmが用意されています。2.7でmod_
wsgiをやる方法について、書いておきます。
方針ですが
1. なるべく
rpmだけで解決したい。ソース
コンパイルはやらない
2. python2.7をシステムデフォルトにしない
3. python2.6も一応残す
4. virtualenvで運用
1.はともかく、2.ですが、システムデフォルトを変えてしまうと、
yumで使う
pythonを変えるなどの方法もありますが、
yum update でアップグレード(2014.04 -> 2014.09)で戻りが発生したり、そもそもちゃんとVirtualenvを使えば済むので、そうします。
コマンドだけ羅列します。
$ sudo yum install python27 python27-devel
$ sudo yum install python27-pip
$ sudo pip install virtualenv
$ virtualenv -p /usr/bin/python2.7 /venvs/py27env
$ source /venvs/py27env/bin/activate
(py27env)$ python -V
Python 2.7.5
後は、
djangoなど
フレームワークを入れるだけです。この後はrunserverなどで、動作確認や 0.0.0.0:80 とかやれば公開できますが、mod_
wsgiを使う場合は一手間必要です。
yum install mod_
wsgi とやった場合、入るのは python2.6へのリンクがあるmod_
wsgiになります(詳細は lddなどで確認してください)。これでpython2.7のenvを動かすことは出来ないので、何とかしなければなりません。そこで探してみると。mod24_
wsgi-py27というのが有ります。これはapache2.4系のモジュールですので、芋づる式に
apacheも2.4系をインストールする必用があります。2.2じゃ無いと嫌なら、DSO
コンパイルです。
コマンドだけ羅列。
# yum install httpd24 httpd24-tools
# yum install mod24_wsgi-py27
httpd(apache2.2系)とはバッティングするので、既に2.2系が動いているならば
yum eraseが必用です。
後は設定ですが、これが曲者で、apache2.2系と大きく異なっています。とくに
.htaccessでやっていた deny,allowはシンプルになりましたが、そのままだとまず動かないので、
wsgiのサンプルをおきます。
WSGIScriptAlias / /proj/app/wsgi.py
WSGIPythonPath /proj:/py27env/lib/python2.7/site-packages/
Alias /static /proj/static
Require all granted
Require all granted
apache2.4は3とでもすればよかったのでは?と思うほど変わっています。みんなの興味はnginxに向かってしまったためか、そこそこ便利になっているようですが2年たった今でも(世界一のwebサーバーとしては)情報が少ないように感じます。