запрещенная ошибка mod_wsgi в CentOS 5.7 - PullRequest
1 голос
/ 09 февраля 2012

Я знаю, что этот вопрос задавался миллионы раз, но я уже потратил много часов, пытаясь настроить Apache и mod_wsgi на CentOS 5.7, что для меня ново. Никогда не сталкивался с подобными проблемами в Debian (Ubuntu).

Я создал wsgi.conf в каталоге /etc/httpd/conf.d/, содержащем следующие строки:

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/

 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

и выход ls -l /var/xxx/yyy/

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

ps -Af | grep httpd показывает

 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

НО он запускает Apache, вызывая sudo /usr/sbin/httpd hello.wsgi начинает работать, хотя ps -Af | grep httpd показывает очень похожие строки:

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

Есть идеи, что может вызвать проблему и что еще мне нужно проверить?

1 Ответ

2 голосов
/ 09 февраля 2012

Установите соответствующий контекст файла SELinux для файлов и каталогов. Подробнее см. Справочную страницу httpd_selinux(8).

...