web.pyのサンプルをmod_scgiとmod_fcgiでApacheBenchしてみた
せっかくなので、ab -c 10 -n 1000してみました。
マシンはCeleron1GHzでメモリが512MBのVineLinux3.2自宅サーバです。
mod_fcgiの場合
Server Software: Apache/1.3.33 Server Hostname: localhost Server Port: 80 Document Path: /webpy/code.py/ Document Length: 283 bytes Concurrency Level: 10 Time taken for tests: 2.642 seconds Complete requests: 1000 Failed requests: 0 Broken pipe errors: 0 Non-2xx responses: 1001 Total transferred: 535535 bytes HTML transferred: 283283 bytes Requests per second: 378.50 [#/sec] (mean) Time per request: 26.42 [ms] (mean) Time per request: 2.64 [ms] (mean, across all concurrent requests) Transfer rate: 202.70 [Kbytes/sec] received
mod_scgiの場合
Server Software: Apache/1.3.33 Server Hostname: localhost Server Port: 80 Document Path: / Document Length: 14 bytes Concurrency Level: 10 Time taken for tests: 5.143 seconds Complete requests: 1000 Failed requests: 24 (Connect: 0, Length: 24, Exceptions: 0) Broken pipe errors: 0 Total transferred: 242504 bytes HTML transferred: 14048 bytes Requests per second: 194.44 [#/sec] (mean) Time per request: 51.43 [ms] (mean) Time per request: 5.14 [ms] (mean, across all concurrent requests) Transfer rate: 47.15 [Kbytes/sec] received
mod_scgiなんか遅いんですけど・・・
なんか動かし方間違ってるような気がしてきたな・・・・
Apache + mod_scgiでweb.pyを動かしてみる
scgiは速いらしいということで試してみます。
まずはmod_scgiをインストール。
Apacheは1.3系です。
$ wget http://www.mems-exchange.org/software/scgi/scgi-1.10.tar.gz $ tar zxvf scgi-1.10.tar.gz $ cd scgi-1.10/apache1 $ apxs -o mod_scgi.so -c *.c $ sudo apxs -i -a -n scgi mod_scgi.so
httpd.confでこの辺↓を編集&確認
LoadModule scgi_module /usr/lib/apache/mod_scgi.so AddModule mod_scgi.c
さらに、scgiの設定をVirtualHostのとこに追加。
/にアクセスすると動くように。
SCGIMount / 127.0.0.1:4000
次にcode.py(web.pyのトップページのサンプルほぼそのまま)を編集
web.runwsgi = web.runfcgi ↓ web.runwsgi = web.runscgi
で、シェルから起動してみました。
$ ./code.py 2006-04-11 03:28:54 : MyServer starting up
起動したようなので、アクセスしてみると動いてました。
よくわからんのですが、こうやって使うものなのかな?
Apache+mod_fastcgiでweb.pyを動かす−その2
http://d.hatena.ne.jp/pateo/20060407/1144350552
の続き・・・
原因は、flupが入ってませんでしたorz
for CGI/FastCGI/SCGI: flup
ってトップページに書いてありますね・・・。
$ wget http://www.saddi.com/software/flup/dist/flup-0.5-py2.4.egg $ sudo easy_install flup-0.5-py2.4.egg
でインストールしたら、見事に動いたようです。
まあ、easy_installが/usr/bin/easy_installを実行してたせいで、
手惑いましたけどね。野良ビルドしたんで/usr/local/bin/easy_installでした。
そんなわけで、
http://webpy.ndk-jp.com/code.py/
で「Hello, World」が表示されるようになりました。
.htaccessで/code.py/じゃなくて/code/で表示させるようにしてみました。
RewriteEngine on RewriteRule ^code/(.*)$ code.py/$1
Python Workshop the Edge 2006に行って来ました
新幹線に乗って東京へ。
こういうWorkshop的なものは地方にいると縁がないもので、
初めて参加してきたわけですが、大変良い刺激になりましたね。
Skypeが結構面白いことをやってるのを知りました。
SkypeAPIとか公開してるんですね。ちょっとやってみたくなったです。
Webアプリフレームワーク比較では、
すっかりTurboGears優勢な流れになってました。
Catwalkとか最近の進化は確かにすごいですね。
個人的にはweb.pyみたいな気軽に使えるやつが好きなんですけど、
Djangoも含めて一応全部いじってみたいところです。
Apache+mod_fastcgiでweb.pyを動かす−その1
まずはmod_fastcgiをApacheに入れる。
ちなみにfastcgiなんて使ったことないですw
$ wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.2.tar.gz $ tar zxvf mod_fastcgi-2.4.2.tar.gz $ cd mod_fastcgi-2.4.2 $ apxs -o mod_fastcgi.so -c *.c $ sudo apxs -i -a -n fastcgi mod_fastcgi.so $ sudo /sbin/service httpd restart Cannot load /etc/lib/apache/mod_fastcgi.so into server: /etc/lib/apache/mod_fastcgi.so: \ cannot open shared object file: No such file or directory
なんかエラー出ました。
apxsでインストールされた場所が/usr/lib/apache/mod_fastcgi.soだった模様。
httpd.confを書き換える
LoadModule fastcgi_module lib/apache/mod_fastcgi.so
↓
LoadModule fastcgi_module /usr/lib/apache/mod_fastcgi.so
$ sudo /sbin/service httpd restart httpdを停止中: [ OK ] httpdを起動中: [ OK ]
動きました。
http://webpy.org/install
ここに書いてある通りに設定してみる。
とりあえずVirtualHostを設定して、
#webpy.ndk-jp.comServerAdmin webmaster@ndk-jp.com ServerName webpy.ndk-jp.com DirectoryIndex index.html DocumentRoot /home/pateo/www/html-webpy AllowOverride all Options all order deny,allow deny from all allow from 192.168.0 ErrorLog /home/pateo/www/logs/error_log_webpy CustomLog /home/pateo/www/logs/access_log_webpy combined
code.pyをDocumentRootにおいて.htaccessに
SetHandler fastcgi-script
code.pyに
web.runwsgi = web.runfcgi
を書いてApacheを再起動。
http://webpy.ndk-jp.com/code.py/にアクセスすると・・・
でました!Internal Server Error!
エラーログには、
FastCGI: incomplete headers (0 bytes) received from server
よく分からないことが書いてありますw
というわけで原因調査中。
web.pyのインストール
web.py - http://webpy.org/
PythonのWebアプリケーションフレームワークで最近ちょっと話題みたいです。
このくらいシンプルだと非常にわかりやすくていいです。
インストールも簡単
$ wget http://webpy.org/web.py $ sudo mv web.py /usr/local/lib/python2.4/site-packages/
web.pyのトップに書いてあるサンプルを動かしてみる
$ python sample.py Launching server: http://0.0.0.0:8080/
起動したっぽい。もう1個の端末で
$ w3m http://localhost:8080/ Hello, world $ w3m http://localhost:8080/pateo Hello, pateo
動いたっぽい。
VineLinux3.2にPython2.4.3をインストール
自宅サーバのVineLinux3.2はPythonのバージョンが2.3.4ってことだったんで、最初から入ってるPythonを消して最新版をソースからインストール。
$ wget http://www.python.org/ftp/python/2.4.3/Python-2.4.3.tar.bz2 $ tar jxvf Python-2.4.3.tar.bz2 $ cd Python-2.4.3 $ ./configure $ make $ sudo make install
なんかinstall-shっていうインストーラっぽいものがあったけど、無視してみましたw
$ python -V Python 2.4.3
ということなので、インストールはできたっぽい。