2017年03月 / 01月≪ 12345678910111213141516171819202122232425262728293031≫03月

2011.08.23 (Tue)

[Python] web.py の設定と使い方 [web.py]

ひょんなことから web.py を使う事になりました。
かなり環境設定でつまずいたのでメモ。

環境:
   ・Debian Linux(squeez)
   ・Python2.6
   ・apache2
   ・web.py


1.配置した python を実行するための設定
2.キャッシュファイルの設定
3.静的ファイル(画像やスタイルシートなど)の配置
4.web.py と javascript の利用



【More・・・】



0.インストール

web.py は本家の日本語サイトを見れば問題なく進めるかと思います。
easy_install なり ソースをダウンロードして python setup.py build、 python setup.py install するなりすればインストールできます。




1.python ファイルを実行するための設定

python ファイルにブラウザでアクセスするとダウンロードしてしまう。
本来は実行されて欲しい python ファイルに対してブラウザからアクセスすると、実行されずダウンロードするためのポップアップが表示されてしまった。
原因は、Web サーバの Apache で、python を実行するためのモジュールが ON になっていないため。
そのため、WSGI という python を実行するためのモジュールが起動されるようにする。

% a2enmod wsgi


を実行すれば WSGI が apache に登録される。
また、Apache の設定に .py ファイルを wsgi スクリプトとして登録しておく必要がある。
.cgi に対する "AddHandler cgi-scripts .cgi" と同様に、

/etc/apache2/sites-available/default

/etc/apache2/mods-available/userdir.conf


などに

AddHandler wsgi-scripts .py


と記述する。
さらに、Options に ExecCGI を追加する。

Options MultiViews Includes ExecCGI


設定が終わったら、 Apache の再起動を忘れないように。




2.キャッシュファイルの設定

プログラムから simplejson を import しようとした時に、以下のエラーが発生。
 

Can't extract file(s) to egg cache The following error occurred while trying to extract file(s) to the Python egg cache: [Errno 13] Permission denied: '/var/www/.python-eggs' The Python egg cache directory is currently set to: /var/www/.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.


問題は、Python の WSGI 実行におけるキャッシュファイルの設定が ON になっていないことが原因。
そこで、wsgi の設定する。

/etc/apache2/mod-available/wsgi.conf


のパスに設定ファイルがあり、内部の "WSGIPythonEggs" というところでキャッシュファイルの保存先を設定する。
ここでは /var/tmp/python_cache に設定。
パーミッションも変更しておかないと問題。

WSGIPythonEggs /var/tmp/python_cache


後は apache を再起動すれば OK.



3. 静的ファイル(画像やスタイルシートなど)の配置

スタイルシートや画像は Web ページの見栄えを良くするためには必須でしょう。
web.py では、html ファイルを ~/templates の下に置きますが、この中に画像や css ファイルを配置しても HTML ファイルから読み込むことができません。
~/static というディレクトリを作成し、この中に静的ファイルを配置&HTML から読み込みを行うことで、web.py から認識できるようになります。
他の位置に作っても認識してくれないようです。



3. web.py と Javascript の利用
web.py では、受け取った引数の変数名の先頭に "$" を付けることでアクセスします。
しかし、 "$" は javascript でも使われるため、javascript 側には "$$" としてエスケープすることで web.py の "$" と javascript の "$" を区別します。
以下は web.py での変数 webpy_var と table_sort という javascript を使用した際のソースを抜粋したサンプル。

$def with (webpy_var)

$webpy_var

<script src="../static/jquery-1.6.2.min.js">
<script src="../static/table_sorter.js/jquery.tablesorter.min.js">'lt;/script>
<script>
$$(function() {
$$("table#sortTableExample").tablesorter({ sortList: [[1,0]] });
});
</script>






テーマ : プログラミング ジャンル : コンピュータ

23:15  |  Python  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑

*Comment

コメントを投稿する

URL
COMMENT
PASS  編集・削除するのに必要
SECRET  管理者だけにコメントを表示  (非公開コメント投稿可能)
 

▲PageTop

*Trackback

この記事のトラックバックURL

→http://gasser.blog114.fc2.com/tb.php/499-097530f8

この記事にトラックバックする(FC2ブログユーザー)

この記事へのトラックバック

▲PageTop

 | BLOGTOP |