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_fastcgiApacheに入れる。
ちなみに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.com

ServerAdmin 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

というわけで原因調査中。

解決しました。↓
http://d.hatena.ne.jp/pateo/20060410/1144596275

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

ということなので、インストールはできたっぽい。