AmazonLinux で python2.7 + apache + djangoを構築する
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-py27httpd(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/staticapache2.4は3とでもすればよかったのでは?と思うほど変わっています。みんなの興味はnginxに向かってしまったためか、そこそこ便利になっているようですが2年たった今でも(世界一のwebサーバーとしては)情報が少ないように感じます。Require all granted Require all granted