2013年3月1日金曜日

1. インストールとmod_wsgiでの動作

Djangoじゃないのをやってみようということで、Pyramidをさわってみる。
そのときの記録。

  • 環境
  • 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はソースを落としてきてインストール)

  • Pyramidのインストール
  • virtualenvで環境を作って、そこにPyramidをインストールする。アプリごとに環境を作る?
    $ sudo pip install virtualenv
    $ sudo pip install virtualenvwrapper
    $ virtualenv --no-site-packages env_pyramid
    $ cd env_pyramid
    $ bin/pip install pyramid
    

  • Pyramid Project の作成
  • $ bin/pcreate -s starter MyProject
    
    $ cd MyProject
    $ ../bin/python setup.py develop
    $ ../bin/python setup.py test -q
    $ ../bin/pserve development.ini
    で、http://localhost:6543に表示される。
    参考にしたのはここ。
    Creating a Pyramid Project

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

    modwsgi.confは、/etc/apache2/other/へ。
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    
    # env_pyramid
    WSGIDaemonProcess pyramid user=me group=staff threads=4 \
       python-path=/Users/me/env_pyramid/lib/python2.7/site-packages
    WSGIScriptAlias /myproject /Users/me/env_pyramid/pyramid.wsgi
    
    <Directory /Users/me/env_pyramid>
      WSGIProcessGroup pyramid
      Order allow,deny
      Allow from all
    </Directory>
    
    で、http://localhost/myprojectに表示される。
    参考にしたのはここ。
    Running a Pyramid Application under mod_wsgi
    modwsgi.confの内容については調べてください。
次回はMySQLの接続

P.S.
2014.01.24
複数のアプリを置く場合は、こうするようです。
mod_wsgi.conf にこんな感じで追加していきます。
# env_seconds
WSGIDaemonProcess pyramid_env_parts user=me group=staff threads=4 \
   python-path=/Users/me/env_second/lib/python2.7/site-packages
WSGIScriptAlias /second /Users/me/env_second/pyramid.wsgi
<Directory /Users/me/env_second>
  WSGIProcessGroup pyramid_env_second
  Order allow,deny
  Allow from all
</Directory>

WSGIDaemonProcess pyramid_env_parts の「pyramid_env_parts」と <Directory> の中にある WSGIProcessGroup pyramid_env_second の「pyramid_env_parts」を一致させます。
これを重複の無いようにして増やしていきます。


2014.01.23
こうすると、site-packages を引き継ぐことができます。
$ virtualenv --system-site-packages env_parts

ただし、pyramid がすでにインストールしてあると、「Requirement already satisfied」とか言われてしまうので、これ。
$ bin/pip install --upgrade pyramid

いろいろ問題が出そうなので、virtualenv --no-site-packages のほうが良さそう。

0 件のコメント:

コメントを投稿