[PR] 不動産担保ローン
FreeBSDにnginx+Pylonsの環境を構築する
FreeBSDにnginx+Pylonsの環境を構築したときのメモ書きです。
手順は、以前DebianやCentOSで構築したときとほぼ同じです。
Nginx + WSGI + Pylons環境の構築方法
CentOS5.2 + nginx0.6.x + WSGI + Python2.5.x環境の構築方法
せっかくなので、最新版のnginxで試しました。
ソースをhttp://sysoev.ru/nginx/nginx-0.7.32.tar.gz から
ダウンロード。
また、wsgiモジュールもダウンロードしておきます。
http://hg.mperillo.ath.cx/nginx/mod_wsgi/archive/tip.tar.gz
まず、Pythonの環境を整えました。
不要なものもあるかもしれませんが、pkg_addで以下のものをインストール
#pkg_add -r x11-toolkits/py25-tkinter-2.5.2_2
#pkg_add -r databases/py25-bsddb-2.5.2_2
#pkg_add -r databases/py25-gdbm-2.5.2
#pkg_add -r databases/py25-sqlite3-2.5.2_1
Pythonのバージョンは2.5.2です。
次に、nginxのビルドに必要なモジュールをインストール
#pkg_add -r All/pcre-7.8
#pkg_add -r All/openssl-0.9.8j
nginxとmod_wsgiのソースを展開
#mkdir /usr/local/src
#cd /usr/local/src
###ソースを/usr/local/srcにコピーして展開
#tar zxvf nginx-0.7.32.tar.gz
#tar mod_wsgi-8994b058d2db.tar.gz
#mv mod_wsgi-8994b058d2db mod_wsgi
###mod_wsgiのソースを修正
#vi mod_wsgi/src/ngx_http_wsgi_handler.c
-rc = ngx_http_discard_body(r);
+rc = ngx_http_discard_request_body(r);
#cd nginx-0.7.32
#./configure --add-module=/usr/local/src/mod_wsgi/ --sbin-path=/sbin/nginx \
--conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module --with-md5=auto/lib/md5 --with-sha1=auto/lib/sha1
またzlib系のエラーが出るかな?と思っていたのですが、
すんなりビルドが通りました。
そのまま、make,make installを実行
もっとはまるかと思ったのですが、意外とあっさり完了です。
次にPylonsの環境設定です。
http://peak.telecommunity.com/dist/ez_setup.py を取ってきて、
#/usr/bin/env python ez_setup.py
#rehash
#easy_install Pylons
これでPylonsがインストールできました。
「rehash」を実行しないとFreeBSDってコマンドを認識してくれないんですね。
かなりあせりました。
pylonsの起動テストは
#mkdir /usr/local/pylons
#cd /usr/local/pylons
#paster create -t pylons helloworld
#cd helloworld
#paster serve --reload develop.ini
http://www.example.com:5000/にアクセスすると・・・見れない。
FreeBSDのファイアーウオールが邪魔をしているのか?
※CentOSのlokkitではまったことがあるので。
と疑い調べてみましたが、そうではない模様。
オチは
#vi develop.ini
[server:main]
use = egg:Paste#http
###127.0.0.1を0.0.0.0に変更
#host = 0.0.0.0
host = 0.0.0.0
port = 5000
これで見れるようになりました。
今後はnginxのmod_wsgi経由で動くか試してみます。
###稼働用の設定ファイルを作成
#cp /usr/local/pylons/helloworld/develop.ini /usr/local/pylons/helloworld/run.ini
#vi /usr/local/pylons/helloworld/run.ini
[DEFAULT]
#debug = true
debug = false
[app:main]
set debug = false
###nginx<->Pylonsの設定ファイル差k洲栄
#mkdir /usr/local/pylons/helloworld/nginx
#vi /usr/local/pylons/helloworld/nginx/helloworld.wsgi
import os, sys
sys.path.append('/usr/local/pylons/helloworld')
os.environ['PYTHON_EGG_CACHE'] = '/usr/local/pylons/python-eggs'
from paste.deploy import loadapp
application = loadapp('config:/usr/local/pylons/helloworld/run.ini')
###niginxの設定
#wsgi用の設定ファイルをコピー
#mkdir /usr/local/nginx/conf
#cp /usr/local/src/mod_wsgi/conf/wsgi_vars /usr/local/nginx/conf/
#nginxの設定を変更
#vi /usr/local/nginx/nginx.conf
server {
#このincludeをたす
include conf/wsgi_vars;
#このセクションをたす
location /helloworld {
wsgi_pass /usr/local/pylons/helloworld/nginx/helloworld.wsgi;
}
}
これで動くだろうと思ったのですが、500エラーが表示されます。
/usr/local/nginx/logs/error.log
を見てみると
The following error occurred while trying to extract file(s) to the Python egg
cache:
[Errno 13] Permission denied: '/usr/local/pylons/python-eggs'
The Python egg cache directory is currently set to:
/usr/local/pylons/python-eggs
Perhaps your account does not have write access to this directory? You can
change the cache directory by setting the PYTHON_EGG_CACHE environment
variable to point to an accessible directory.
うーん。CentOSでは問題なかったのですが、
Pylonsの仕様が変わったのか、FreeBSDだからなのか・・・
とりあえず
mkdir /usr/local/pylons/python-eggs
chmod -R 777 /usr/local/pylons/python-eggs
として、キャッシュ用のディレクトリを作り
書き込み可能にしてやると動いてくれました。
もどる