0
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Apacheのmod_proxy_uwsgiを使う

Posted at

moinmoinをApache2.4で動かしたくて少し躓いたのでメモ。

Apacheの準備

Apacheでmod_proxy_uwsgiを使うには、mod_proxyとmod_proxy_uwsgiをLoadする必要がある。
mod_proxy_uwsgiは標準では入ってない場合が多いと思うので適当にインストールする。
ArchLinuxとかならパッケージ管理システムで入る。

Apacheの設定ファイルに必要なモジュールを書いておく。

httpd.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so

アプリケーション側の準備

uwsgiで動かすアプリケーションをダウンロードするなりパッケージ管理システムで入れるなりして準備をする。そしてuwsgiの設定をuwsgi.iniファイルで行う。

今回moinmoinを動かしてみたので、その時の例をあげる。moinmoinの必要なファイルを/var/lib/moin以下に配置して、以下のようなuwsgi.iniファイルを作成した。

uwsgi.ini
[uwsgi]
uid = http
gid = http
socket = 127.0.0.1:50000
# mod_proxy_uwsgiでunix domain socketがうまく使えなかったのでTCPを使う
#socket = /run/uwsgi/moin.sock
#chmod-socket = 660
plugin = python2

chdir = /var/lib/moin/
wsgi-file = /var/lib/moin/server/moin.wsgi

master = True
workers = 2
max-requests = 200
#harakiri = 60
daemonize=/var/log/httpd/uwsgi-moin.log

とりあえず現在動いただけの段階なので細かいチューニングなどはしていない。パフォーマンスを求めるならもっとチューニングをしたほうがいいと思う。他の環境であれば当然chdirやwsgi-fileは適切に書き換える必要がある。

以上の準備ができたら、uwsgiを起動する。

$ /usr/bin/uwsgi --ini /var/lib/moin/uwsgi.ini

このように先ほど設定したuwsgi.iniを指定して起動させる。

httpd.confの設定

設定ファイル中の適当な場所に以下のように書く。

httpd.conf
ProxyPass /hogehoge uwsgi://127.0.0.1:50000/

/hogehogeのところは任意で、/でも良いがサブドメインとして利用したい場合はこのようにする。
もちろんアプリケーションによってはサブディレクトリを指定すると別途設定が必要な場合もある(moinmoinでは必要)。

unixドメインソケットも使えるらしいが、使おうとするとうまくuwsgiにアクセスできなかった。もしかしたら引数をダブルクォートで囲めばよかったのかもしれないと今になって思うが、今更確認する気も起きないのでわからない。

それと、最近のApacheはhttp/2に対応しているが、このProxyPassが有効なところでhttp/2を有効にすると、uwsgiがhttp/2に対応してないのでIOErrorとなりうまく通信できない様子。

0
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?