2013-01-14 [長年日記]
_ [技術]client175をwsgi経由で使う
目的
client175はPythonでできたWebベースのmpdのクライアントソフト。自前のHTTPサーバも持っているが、mod_python経由でのApacheからの利用もやり方が公開されてる。
ただ今時のPython Webアプリならmod_wsgiだしそもそもmod_pythonは開発が止まっている。client175はcherrypyベースで、cherrypyはmod_wsgiに対応しているので普通にmod_wsgiで動くはず。と言うことでやってみた。
PythonやらApacheやmod_wsgiがインストールされているのは大前提として、大筋は
- client175インストール
- site.confの"server_root"設定
- wsgiのラウンチスクリプト作成
- httpd.conf修正
である。以下手順ではApache-2.2.23、mod_wsgi-3.4、client175_0.7.tar.gzを使用している。
client175インストール
単純にアーカイブを展開するだけである。場所はどこでも。私は/usr/local/www/以下にした。なので/usr/local/www/client175に関連ファイルがおかれている。そのディレクトリはApacheの起動ユーザが書き込みできる権限にしておく。
site.confの"server_root"設定
URL的に、サーバの直下(http://xxxx/)でclient175にアクセスする形なら設定する必要はないが、普通はサブディレクトリを切る形(http://xxxx/client175/)で使うはずなので、そのサブディレクトリ名をここに設定する(この場合は"client175")。site.confのそのほかの設定も適切にやっておく。
wsgiのラウンチスクリプト作成
wsgiで起動させるのに必要なコードを作成する。server.py内に直接書いても良いくらいだが、Version Up時に楽なように切り出しておく。
import sys sys.stdout = sys.stderr sys.path = ['/usr/local/www/client175', '/usr/local/www/client175/cherrypy'] + sys.path import server server.serverless() def application(environ, start_response): return server.cherrypy.tree(environ,start_response)
3行目のsys.pathの行は、環境に合わせてclient175がインストールされているディレクトリを設定する。これを任意の名前で(俺は"client175.wsgi"にしておいた)、client175のserver.pyと同じところ(この例では/usr/local/www/client175)に置いておく。
httpd.conf修正
httpd.confに以下を設定する。WSGIScriptAliasの行の1つめの設定値はsite.confの"server_root"設定と同じに、2つめの設定値はwsgiのラウンチスクリプトをフルパスで指定する。
WSGIScriptAlias /client175 "/usr/local/www/client175/client175.wsgi" <Directory "/usr/local/www/client175/"> Order deny,allow Allow from all </Directory>
あとはApacheを再起動したら、http://xxxx/client175/(site.confの"server_root"設定がこの例と違うならそのようなURLに)にアクセスすれば、使えるようになっているはずだ。
それからこの設定だと、client175はApacheのhttpdプロセスの数だけ立ち上がるので、その数だけmpdに接続が発生する。よって接続される側のmpd.confの"max_connections"を、httpdのプロセス数より多く設定する必要がある。再起動などでの再接続なども考えると、2倍以上の数を設定しておいた方がよい。
<<
2013/01/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1. client175をwsgi経由で使う
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
このworkは、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。