Ubuntuにmod-wsgiいれたメモ
サーバーいじっていて忘れそうなのをメモ。
ウェブアプリをデプロイする場所として大学のサーバーをいじっていた。許可はとってる。
wsgiとは
python用の高速なCGIだと思えばいい。pythonを動かすならmod-pythonより速いらしい。
Web Server Gateway Interface (WSGI) は、プログラミング言語Pythonのための、Webアプリケーション(もしくは、フレームワーク)とWebサーバ間の簡潔かつ統一されたインタフェースを定義する。
前提
- Ubuntu10.4
- Apacheがインストールされていること
インストール+有効化
$ sudo sudo apt-get install libapache2-mod-wsgi #インストール $ sudo a2enmod mod-wsgi #有効化 $ sudo apache2ctl restart #サーバー再起動
a2enmodコマンドはApache2のmoduleをenableにするコマンドで、伝統的にmod-(hoge)のhogeの部分だけ入力するらしいが、今回はmod-が必要だった。ひどい話。
Apacheなれないです。
/etc/apache2/site-available/default
NameVirtualHost * <VirtualHost *> ServerAdmin webmaster@localhost DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> ...中略... #以下を追記 Alias /mizchi/ "/home/mizchi/www/" #ドキュメントルート以下の自分のディレクトリと作業フォルダを結ぶ <Directory "/home/mizchi/www"> Options Indexes FollowSymLinks MultiViews ExecCGI AddHandler cgi-script .cgi AddHandler wsgi-script .wsgi AddHandler wsgi-script .py AllowOverride None Order allow,deny allow from all </Directory> </VirtualHost>
サンプル
/home/mizchi/www/hello.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]
サーバーの http://###.com/mizchi/hello.wsgiにアクセス。Hello World!と表示されれば成功。hello.wsgiの中身全てが見えてしまうならmod-wsgiが有効化されていないので、Apache設定ファイルを見直す必要がある。
参考 : Ubuntu + Apache2 + WSGI (mod_wsgi) with LAMP - Ubuntu Forums