2012-02-09 13 views
1

この質問は何百万回も聞かれましたが、私は既にCentOS 5.7でApacheとmod_wsgiを設定しようと何時間も過ごしました。 Debian(Ubuntu)でこの種の問題に直面したことはありません。mod_wsgiはCentOS 5.7で禁止されたエラーです

私は次の行をcontainting、/etc/httpd/conf.d/ディレクトリにwsgi.confを作成しました:

LoadModule wsgi_module modules/mod_wsgi.so 
WSGIPythonHome /var/xxx/env 

/var/xxx/envは、プロジェクトのための仮想環境が含まれています。

次に、次の行を/etc/httpd/conf.d/ssl.confに追加しました(はい、httpsに必要ですが、通常の仮想ホストに入れようとしました)。

WSGIScriptAlias /suburl /var/xxx/yyy/hello.wsgi 
<Location /suburl> 
    Order deny,allow 
    Allow from all 
</Location> 

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] 

ls -l /var/xxx/yyy/

total ... 
... 
-rwxr-xr-x 1 apache apache 238 Feb 9 05:19 hello.wsgi 
... 

ls -l /var/xxx/

total 16 
drwxr-xr-x 5 apache apache 4096 Feb 9 05:14 env 
drwxr-xr-x 7 apache apache 4096 Feb 9 05:41 yyy 

と出力の出力であり、含まれていは

root  8872  1 0 07:06 ?  00:00:00 /usr/sbin/httpd 
apache 8874 8872 0 07:06 ?  00:00:00 /usr/sbin/httpd 
apache 8875 8872 0 07:06 ?  00:00:00 /usr/sbin/httpd 
apache 8876 8872 0 07:06 ?  00:00:00 /usr/sbin/httpd 
apache 8877 8872 0 07:06 ?  00:00:00 /usr/sbin/httpd 
apache 8878 8872 0 07:06 ?  00:00:00 /usr/sbin/httpd 
apache 8879 8872 0 07:06 ?  00:00:00 /usr/sbin/httpd 
apache 8880 8872 0 07:06 ?  00:00:00 /usr/sbin/httpd 
apache 8881 8872 0 07:06 ?  00:00:00 /usr/sbin/httpd 
fedor 10609 4716 0 07:16 pts/1 00:00:00 grep httpd 

/var/log/httpd/ssl_error_log示し、次の

[Thu Feb 09 07:06:47 2012] [error] [client 127.0.0.1] (13)Permission denied: access to /suburl denied 

のような行がいっぱいですが、それはhello.wsgiはps -Af | grep httpdは非常によく似たラインを示していても、作業を開始sudo /usr/sbin/httpdを呼び出すことにより、Apacheを起動:

root  11442  1 3 07:21 ?  00:00:00 /usr/sbin/httpd 
apache 11443 11442 0 07:21 ?  00:00:00 /usr/sbin/httpd 
apache 11444 11442 0 07:21 ?  00:00:00 /usr/sbin/httpd 
apache 11445 11442 0 07:21 ?  00:00:00 /usr/sbin/httpd 
apache 11446 11442 0 07:21 ?  00:00:00 /usr/sbin/httpd 
apache 11447 11442 0 07:21 ?  00:00:00 /usr/sbin/httpd 
apache 11448 11442 0 07:21 ?  00:00:00 /usr/sbin/httpd 
apache 11449 11442 0 07:21 ?  00:00:00 /usr/sbin/httpd 
apache 11450 11442 0 07:21 ?  00:00:00 /usr/sbin/httpd 
fedor 11453 4716 0 07:21 pts/1 00:00:00 grep httpd 

何が原因で問題が発生する可能性がありますか、それ以外に何を確認する必要がありますか?

答えて

2

ファイルとディレクトリに適切なSELinuxファイルのコンテキストを設定します。詳細は、httpd_selinux(8)のマニュアルページを参照してください。

+0

ありがとうございました。 'sudo chcon -t httpd_sys_script_exec_t/var/xxx/yyy/hello.wsgi'を実行した後、スクリプトが動作し始めました。しかし、私はまだいくつかのモジュール(例えばcStringIO)をインポートする際に問題があります。これを引き起こす原因は何ですか?私はenvディレクトリ全体に対してchconを実行しようとしましたが、それは助けに見えません。 – Fedor

+0

このselinuxのヒントは、CentOS上の人にとってはゴールデンです。私は6.1歳で、[運がない有名なビデオチュートリアル](https://code.google.com/p/modwsgi/wiki/WhereToGetHelp?tm=6)に従っています。私は 'echo 0>/selinux/enforcing'でselinuxを無効にして成功しました – hamx0r

関連する問題