WPHP : WSGI でPHPを動かす

WPHPをvirtualenvにインストール

(rpx)hdknr@deblen2010:~/.ve/rpx/src/myrpx$ pip install -e svn+http://svn.pythonpaste.org/Paste/wphp/trunk/#egg=Paste
Obtaining Paste from svn+http://svn.pythonpaste.org/Paste/wphp/trunk/#egg=Paste
  Checking out http://svn.pythonpaste.org/Paste/wphp/trunk/ to /home/hdknr/.ve/rpx/src/paste
  Running setup.py egg_info for package Paste
Downloading/unpacking flup (from Paste)
  Downloading flup-1.0.3.dev-20100221.tar.gz (57Kb): 57Kb downloaded
  Running setup.py egg_info for package flup
Installing collected packages: flup, Paste
  Running setup.py install for flup
  Running setup.py develop for Paste
    Creating /home/hdknr/.ve/rpx/lib/python2.5/site-packages/wphp.egg-link (link to .)
    Adding wphp 0.1dev-r8085 to easy-install.pth file

    Installed /home/hdknr/.ve/rpx/src/paste
Successfully installed flup Paste

(rpx)hdknr@deblen2010:~/.ve/rpx/src/myrpx$ python
Python 2.5.2 (r252:60911, Jan 24 2010, 14:53:14)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
imported django settings
>>> from wphp import PHPApp
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/hdknr/.ve/rpx/src/paste/wphp/__init__.py", line 13, in <module>
    from paste import fileapp
ImportError: No module named paste

(rpx)hdknr@deblen2010:~/.ve/rpx/src/myrpx$ tree ../paste/
../paste/
|– README-moved.txt
|– docs
|   |– conf.py
|   |– index.txt
|   |– license.txt
|   |– modules
|   |   `– wphp.txt
|   `– news.txt
|– regen-docs
|– setup.cfg
|– setup.py
|– tests
|   |– conftest.py
|   |– php-files
|   |   |– test.php
|   |   `– test2.php
|   `– test_php.py
|– wphp
|   |– __init__.py
|   |– __init__.pyc
|   |– default-php.ini
|   |– fcgi_app.py
|   `– php_ini_metadata.py
`– wphp.egg-info
    |– PKG-INFO
    |– SOURCES.txt
    |– dependency_links.txt
    |– entry_points.txt
    |– not-zip-safe
    |– paster_plugins.txt
    |– requires.txt
    `– top_level.txt

6 directories, 26 files

pasteディレクトリはあるが、インストールはされていな。eggの名前をpasteにしてしまっただけですね。 #egg=wphp するべき。

Pasteのインストール

(rpx)hdknr@deblen2010:~/.ve/rpx/src/myrpx$ pip install Paste
Downloading/unpacking Paste
  Downloading Paste-1.7.2.tar.gz (373Kb): 373Kb downloaded
  Running setup.py egg_info for package Paste
Installing collected packages: Paste
  Running setup.py install for Paste
    Skipping installation of /home/hdknr/.ve/rpx/lib/python2.5/site-packages/paste/__init__.py (namespace package)
    Installing /home/hdknr/.ve/rpx/lib/python2.5/site-packages/Paste-1.7.2-py2.5-nspkg.pth
Successfully installed Paste

PHPのテストコード

hdknr@deblen2010:~/test$ more ~/test/index.php
<?PHP
echo "hello !\n";
echo date( "Y/m/d (D) H:i:s\n", time() );
?>

hdknr@deblen2010:~/test$ php ~/test/index.php
hello !
2010/03/17 (Wed) 16:56:28

PHPをWSGIで実行

(rpx)hdknr@deblen2010:~/.ve/rpx/src/myrpx$ python
Python 2.5.2 (r252:60911, Jan 24 2010, 14:53:14)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
imported django settings
>>> from wphp import PHPApp
>>> myphp = PHPApp(‘/home/hdknr/test’,php_options={’magic_quote_gpc’: ‘Off’} )
>>> from wsgiref.simple_server import make_server
>>> httpd=make_server(”,8000,myphp)
>>> httpd.serve_forever()

hdknr@deblen2010:~/test$ sudo lsof -i:8000
COMMAND   PID  USER   FD   TYPE DEVICE SIZE NODE NAME
python  23894 hdknr    3u  IPv4 160912       TCP *:8000 (LISTEN)
hdknr@deblen2010:~/test$

ヘッダーを見る

hdknr@deblen2010:~/test$ curl -I http://localhost:8000/
HTTP/1.0 200 OK
Date: Wed, 17 Mar 2010 07:58:43 GMT
Server: WSGIServer/0.1 Python/2.5.2
x-powered-by: PHP/5.2.6-1+lenny6
content-type: text/html
Content-Length: 0

>>> httpd.serve_forever()
localhost – – [17/Mar/2010 16:58:43] "HEAD / HTTP/1.1" 200 0

WSGIの後ろでphp-cgiが動きだした

hdknr@deblen2010:~/test$ sudo lsof -i:8000
COMMAND   PID  USER   FD   TYPE DEVICE SIZE NODE NAME
python  23894 hdknr    3u  IPv4 160912       TCP *:8000 (LISTEN)
php-cgi 23897 hdknr    3u  IPv4 160912       TCP *:8000 (LISTEN)
php-cgi 23897 hdknr    4u  IPv4 160917       TCP localhost:8000->localhost:35084 (CLOSE_WAIT)
php-cgi 23898 hdknr    3u  IPv4 160912       TCP *:8000 (LISTEN)
php-cgi 23898 hdknr    4u  IPv4 160917       TCP localhost:8000->localhost:35084 (CLOSE_WAIT)

コンテンツの表示

hdknr@deblen2010:~/test$ curl http://localhost:8000/
hello !
2010/03/17 (Wed) 16:59:44

>>> httpd.serve_forever()
localhost – – [17/Mar/2010 16:58:43] "HEAD / HTTP/1.1" 200 0
localhost – – [17/Mar/2010 16:59:44] "GET / HTTP/1.1" 200 34

カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中