2013年3月5日火曜日

5. MySQLを使ったPyramidプロジェクトをwsgiで運用

Djangoじゃないのをやってみようということで、Pyramidをさわってみる。
そのときの記録。
今回はMySQLを使ったPyramidプロジェクトをwsgiで運用動作させてみる。

  • 環境
  • MacOS 10.8.2
    Python 2.7.3 (MacPortsでインストールしたものを使用する)
    MySQL 5.5.28 (MacPortsでインストールしたものを使用する)
    py27-pip 1.2.1 (MacPortsでインストールしたものを使用する)
    Apache 2.2.7 (標準でインストールされているもの)
    (mod_wsgiはソースを落としてきてインストール)
    Eclipse 4.2.1
    Pydev 2.7.1

今までのまとめ。
MySQLをMacPortsでインストールし、そのMySQLを使うPyramidプロジェクトも作成した。http://localhost:6543で表示する開発環境ではちゃんとMySQLと接続されて動作している。
今回は、development.iniではなくproduction.iniを参照する、運用環境での動作を確認する。
1. インストールとmod_wsgiでの動作」と同じようにwsgi関係のファイルをapache.confとPyramidプロジェクトの場所に作成する。

まず、pyramid.wsgiは、~/env_mysql/へ。その内容はこれ。
from pyramid.paster import get_app, setup_logging
ini_path = '/Users/me/env_mysql/MyProject/production.ini'
setup_logging(ini_path)
application = get_app(ini_path, 'main')

modwsgi.confは、/etc/apache2/other/へ。
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
WSGIDaemonProcess pyramid user=me group=staff threads=4 \
   python-path=/Users/me/env_mysql/lib/python2.7/site-packages
WSGIScriptAlias /myproject /Users/me/env_mysql/pyramid.wsgi

<Directory /Users/me/env_mysql>
  WSGIProcessGroup pyramid
  Order allow,deny
  Allow from all
</Directory>

これらのファイルを置いた後は「$ sudo apachectl restart」でapacheを再起動させておく。
で、http://localhost/myprojectに表示される。
そのはずなのに、エラーが発生する。
/var/log/apache2/error_logを見ると、libmysqlclient.18.dylibが見つかっていないようだ。
このファイルは「/opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib」にあるので、「/usr/lib/libmysqlclient.18.dylib」としてシンボリックリンクを作成する。
$ sudo ln -s /usr/lib/libmysqlclient.18.dylib /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib

これで、http://localhost/myprpjectを見に行くとPyramidのページが表示される。

次回は、レコードの一覧や追加削除などの基本的な動作をするアプリを作成する予定。

0 件のコメント:

コメントを投稿