VMPlayer でCentOS Linuxで環境構築したときのメモ。OS: CentOS 5.3 i386 (32bit)

任意のポート(80番以外)でwebサイトを公開する場合の注意点

今回、runserver, Apache-mod_wsgiでdjangoを動かす際に
  • runserver -- 7001
  • mod_wsgi --7011
で外部からアクセスするようにした。
このときにいくつかはまった事柄があったのでメモしておく。

ポートが開放されていない

7001, 7011をファイアーウォールが開放していないとどうやっても外部からはアクセスできない。
ゲストOSでブラウザを起動し、localhost:7001を見ることができるのに外部から見られない場合に疑った方がいい点。
任意のポートを開放するには
System > Administration > Security Level and Firewall
のFirewall OptionsタブのOther portsに開放ポートを追加する。
また、既存のポート(http ->80, ssh -> 22 など)の開放もこのタブで設定可能。

Apacheのhttpd.confで所定のポートをListenしていない

これも忘れやすい。
<VirtualHost *:7011>
こういうVirtualHost要素を定義していても
Listen 7011
このように、Listenディレクティブが定義されていないと無理。

httpd.confのwsgiに関する設定値

httpd.confにwsgi関連の設定値が正しく設定されていないと500エラーになる。
これも注意が必要。

LoadModuleディレクティブ

LoadModule wsgi_module modules/mod_wsgi.so
これが入っていないとそもそもApacheがwsgiを有効にしないので話にならない。

WSGIPythonHomeディレクティブ

WSGIPythonHome /var/www/.virtualenvs/foo
Pythonインタプリタのホームも定義する必要がある。
上記の設定値はvirtualenvで
/var/www/.virtualenvs/foo/bin/python
を使っている為このようになる。

WSGISocketPrefixディレクティブ

(13)Permission denied: mod_wsgi (pid=6901): Unable to connect to WSGI daemon process 'live' on '/etc/httpd/logs/wsgi.6898.0.1.sock' after multiple attempts.
このようなエラーが出た場合、
WSGISocketPrefix run/wsgi
WSGISocketPrefix /var/run/wsgi
などと設定せよとのこと。

権限がないといった趣旨のエラーが発生する場合

User, Groupディレクティブがデフォルトではapacheになっているので注意。
wwwユーザーの権限でしか利用できないリソースがある場合は
User www
Group www
といったように起動ユーザーを変える必要がある。

SELinuxの設定

 ImportError: /var/www/.virtualenvs/lifemile/lib/python2.6/lib-dynload/_functools.so: failed to map segment from shared object: Permission denied
こういったエラーメッセージが出る場合、SELinuxによるHTTPDの制限に引っかかっていると考えられる。
一つの方法としてSELinuxを無効にすれば解決する。
無効にするには
System > Administration > Security Level and Firewall
のSELinuxタブでDisabledに変更すればいい。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます