nginxとpythonとpyramid 起動まで
サムライファクトリーの平成コンビがお送りするWebサービスダイナシ
画像にコメントをつけて、ぜひ楽しんでください。
前回のエントリーでPyramidのインストール方法を紹介しました。
今回はプロジェクトの新規作成からサーバー起動までを紹介します。

前回作成したpythonbrewの仮想環境を起動します。

workon pyramid


コンソールに「(pyramid)[xxxx@xxx]$ 」のように表示されていれば成功です。
現在仮想環境「pyramid」にインストールされたパッケージ一覧を表示する場合はfreezeコマンドを利用します。

pip freeze

pyramidに必要なパッケージ群が一覧に表示されます。

仮想環境を起動中はPATHの先頭に「/home/yoshi/.virtualenvs/pyramid/bin」が追加されます。
pythonコマンドやpipコマンドの他に、pipでインストールしたPyramidのツールコマンドも含まれています。

pcreateコマンドで新規プロジェクトを作成します。

pcreate -s alchemy sample

カレントディレクトリにプロジェクト「sample」が作成されます。
Railsのscaffoldみたいに枠組みが自動生成されます。
ここでは「-s alchemy」で枠組みのテンプレートを指定しています。
sqlalchemyの設定などが組み込まれた状態まで自動生成してくれるのでとても便利です。
また、他のテンプレートを確認したい場合は-lコマンドで確認できます。

作成したsampleプロジェクトの「development.ini」中身を確認すると
「sqlalchemy.url = sqlite:///%(here)s/sample.db」の記述があります。
デフォルトではsqliteを利用する設定で用意されています。
ただし、先ほどのfreezeコマンドで確認した一覧にsqliteを扱うためのライブラリがインストールされていません。

別途sqliteパッケージとpython用ライブラリをインストールします。

sudo yum install sqlite.x86_64
sudo yum install sqlite-devel.x86_64


次にpipでpython用ライブラリをインストールするのですが、
せっかくなのでsetup.pyに記述しておきます。
プロジェクトのトップディレクトリにあるsetup.pyを開き、変数「requires」のリストに「pysqlite」を追加します。

requires = [
'pyramid',
'SQLAlchemy',
'transaction',
'pyramid_tm',
'pyramid_debugtoolbar',
'zope.sqlalchemy',
'waitress',
'pysqlite', <--- 追加
]


sampleプロジェクトのトップディレクトリに移動してdevelopコマンドを実行します。
※基本的にPyramidコマンドはプロジェクトのトップディレクトリで実行します。

python setup.py develop

自動的にsqlite用パッケージがインストールされ、依存パッケージがある場合は一緒にインストールされます。
「pip install」でも同じ事が可能ですが、setup.pyに記述しておく事で後から別の環境に構築するのが簡単になります。

次にデータベースの用意をします。sampleプロジェクトではすでにサンプルが用意されているのでコマンドを実行して作成します。

populate_sample development.ini

コマンドを実行するとトップディレクトリに「sample.db」が作成されます。
※2012/3/24追記
Pyramid1.3正式版からコマンドがinitialize_sample_dbに変更されました。

populate_sampleコマンドは先ほどのPATHに含まれているコマンドです。
コマンドの実態は「${PROJECT_HOME}/sample/scripts/populate.py」になります。
populate_sampleコマンドとpopulate.pyの紐付けはsetup.pyに記述されています。
setup関数のentry_points引数に文字列で下記のように指定されています

entry_points="""\
[paste.app_factory]
main=sample:main
[console_scripts]
populate_sample=sample.scripts.populate:main
""",

「コマンド名=ソースパッケージ:実行関数」の書式で指定されているので、
cronでバッチ処理を実行したい場合はここに新しいスクリプトを追加します。

以上でsampleプロジェクトの構築は完了となります。

PyramidにはデフォルトでWSGIサーバー「waitress」が付属されているのでpserveコマンドで実行します。

pserve development.ini --reload

デフォルトでポート6543で起動されることを確認したらブラウザからアクセスします。
http://domain:6543/

サンプルプロジェクトのページが表示されコンソールにSQL実行ログが表示されます。
プロジェクトの作成から設定、ログ出力など簡単なコマンドを実行するだけで用意されるのがとても便利かと思います。

2012/03/04 17:58 | Comments(0) | プログラム
nginxとpythonとpyramid スタートアップ
サムライファクトリーの平成コンビがお送りするWebサービスダイナシ
画像にコメントをつけて、ぜひ楽しんでください。
Pyramid1.3のβ版がリリースされました。
もう少しで正式リリースになると思うので構築手順をまとめてみました。
Fedora1.4 64bit(さくらVPS)+ python2.7.2で構築しています。

pythonのフレームワークといえばDjangoが人気だと思います。
日本語ドキュメントやプラグインも豊富なので今後もっと利用されるケースが増えると思います。
CoCなフルスタックフレームワークで、管理画面の自動生成が人気の理由かと思います。
自分は名前の由来(尊敬するギターリストの名前)だけで利用してみたのですが、ちょっと自由に作りたいな〜と思い別のフレームワークを探していてPyramidを試してみました。

PyramidはPylonsの後継で色々なオープンソースと組み合わせて利用するフレームワークです。
pythonで古くから利用されているsqlachemyやjinja2も組み合わせることができます。


pythonの仮想環境を利用するためにpythonbrewをインストールします。
utahtaさんのブログで詳しく解説されているので、こちらを参考にしてインストールしました。
とても解りやすく大変お世話になりました。
自分の環境では下記のパッケージを事前にインストールしておきました。

sudo yum install gcc.x86_64
sudo yum install make.x86_64
sudo yum install zlib-devel.x86_64
sudo yum install openssl-devel.x86_64
sudo yum install python-setuptools


仮想環境を作成してPyramidをインストールします。

mkvirtualenv pyramid
pip install pyramid


これだけで仮想環境(pyramid)上に最新のPyramidがインストールされます。
同じパソコンでDjangoとPyramidを使いたい、python3も試したい。。。時にとっても便利です。

今回はこのへんで。

2012/03/03 05:31 | Comments(0) | プログラム

<<前のページ | HOME | 次のページ>>