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

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

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

準備するもの

素のlubuntu。以上。

インストール

sudo apt-get install apache python libapache2-mod-wsgi

めっちゃ簡単。

HelloWorldの配置

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

mkdir ~user/www/wsgitest

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

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]

Apacheの設定

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

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

cp /etc/apache2/sites-available/default wsgitest

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

<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>

サイトを有効にして設定再読み込み。

sudo a2ensite wsgitest
sudo service apache2 reload

hosts書き換え

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

127.0.0.1    localhost wsgitest

テスト

これでおもむろにブラウザから以下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系は環境構築がめんどいから嫌いだ。