Ubuntu(Lubuntu)13.04でPython+WSGI+ApacheのHelloworld

まあタイトルのようなことをやりたいのでやってみる。

参考にしたページは以下。
modwsgi(本家ドキュメント)
UbuntuTips/DedicatedServer/ApacheVirtualHost

準備するもの

素のlubuntu。以上。

インストール

[bash]
sudo apt-get install apache python libapache2-mod-wsgi
[/bash]

めっちゃ簡単。

HelloWorldの配置

今回はApacheのバーチャルホストを新しく作るので、適当に新しいルートディレクトリを作る。

[bash]
mkdir ~user/www/wsgitest
[/bash]

以下の様なファイルをmyapp.wsgiとして保存。

[python]
def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'

response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)

return [output]
[/python]

Apacheの設定

バーチャルドメインを分けて管理したいのでそうする。

/etc/apache2/sites-available/defaultをwsgitestとしてコピー。

[bash]
cp /etc/apache2/sites-available/default wsgitest
[/bash]

viなどで書き換えて以下の様な感じにする。

[html]
<VirtualHost *:80> 

ServerName wsgitest ←ホスト名「wsgitest」
ServerAdmin webmaster@example.com

DocumentRoot /home/user/www/wsgitest ←ルートディレクトリ

<Directory /usr/local/www/documents>
Order allow,deny
Allow from all
</Directory>

WSGIScriptAlias /hello /home/user/www/wsgitest/myapp.wsgi ←さっきのファイル

</VirtualHost>
[/html]

サイトを有効にして設定再読み込み。
[bash]
sudo a2ensite wsgitest
sudo service apache2 reload
[/bash]

hosts書き換え

ホスト名「wsgitest」を解決できるように、/etc/hostsを以下のように書き換える。

[bash]
127.0.0.1 localhost wsgitest
[/bash]

テスト

これでおもむろにブラウザから以下URLにアクセス。

http://wsgitest/

えいっ!・・・DNSは「wsgitest」を見つけられませんでしたって出る。何故かプロクシサーバにつながっているようだ。Ubuntuではdconf-editorコマンドでGUI上からプロクシを無視するアドレスを設定できる。やってみる。変わらない。意味がわからない。

そっか、gconfは"g"confツールだからGNOMEとかunity限定のツールなんだな、と気付き、調べると、/etc/environmentを書き換えると良いと書いてある。というかこのファイルでプロクシの設定したの俺だった。忘れてた。まあ、したがって、no_proxy="localhost,wsgitest"という行を当該ファイルに追加する。再起動。うまくいかない・・・。

ここまでくるとブラウザ(chromium)がno_proxy環境変数を読んでないと判断するしか無い。http_proxyは読んでいるみたいだけど。だから、firefoxでどうだっ、ってやったら

Hello World!

って出てきた。おめでとー。ありがとー。

まあこんな感じ。Ubuntuは楽で良い。仕事で使うサーバーも全部Ubuntuにしてほしい。RedHat系は環境構築がめんどいから嫌いだ。