まあタイトルのようなことをやりたいのでやってみる。
参考にしたページは以下。
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系は環境構築がめんどいから嫌いだ。