2014-02-10 8 views
5

Я пытаюсь настроить флягу с mod_wsgi, но я получаю следующую ошибкуПопытка установить колбу с mod_wsgi

(13)Permission denied: access to/denied (filesystem path '/home/ec2-user/myapp') because search permissions are missing on a component of the path 

тест является действительным маршрутом в приложении колб.
Это мой myapp.conf файл в папке /etc/httpd/conf.d

WSGIRestrictStdout Off 
<VirtualHost *> 
    ServerName somewhere.compute-1.amazonaws.com 

    WSGIDaemonProcess flaskapp user=ec2-user group=ec2-user threads=5 
    WSGIScriptAlias//home/ec2-user/myapp/myapp.wsgi 

    <Directory /home/ec2-user/myapp> 
     WSGIProcessGroup flaskapp 
     WSGIApplicationGroup %{GLOBAL} 
     Order deny,allow 
     Allow from all 
    </Directory> 
    LogLevel notice 
</VirtualHost> 

Это Apache/2.2.26 с python 2.6.8
Я не использую virtualenv.

Когда я начинаю апача я вижу это как уведомление в error_log

[Mon Feb 10 14:33:00 2014] [notice] Apache/2.2.26 (Unix) DAV/2 mod_wsgi/3.2 Python/2.6.8 configured -- resuming normal operations 

Это мой myapp.wsgi файл

from flask import Flask 
application = Flask(__name__) 

@application.route("/") 
def hello(): 
    return "Hello World!" 

if __name__ == "__main__": 
    application.run(host='0.0.0.0', port=80) 

работает только python myapp.wsgi работает отлично

ошибка, кажется, скажите мне Я должен изменить некоторые разрешения на какую-то папку, но я понятия не имею, какую папку.

ответ

3

Вы должны проверить документы Apache для 13PermissionDenied и убедиться, что вы установили правильные разрешения для своей папки.

chmod 755 /home/ec2-user/myapp/ 

Вы также можете:

cd /home/ec2-user/ 
ls -la 

Какой будет выводить каждый файл и владелец: группа и права доступа для каждой группы пользователей папки. Ищите что-нибудь необычное.

От WSGIDaemonProcess docs:

пользователя = имя | user = # uid.rst

Определяет имя пользователя UNIX или числовой пользовательский пользователь пользователя, который должен запускать процессы-демоны. Если эта опция не указана, процессы-демоны будут выполняться как один и тот же пользователь, которым Apache будет запускать дочерние процессы и как определено в директиве User.

Обратите внимание, что этот параметр игнорируется, если Apache не был запущен как пользователь root, и в этом случае независимо от параметров настройки процессы-демоны будут выполняться как пользователь, с которого был запущен Apache.

Если вы работаете вашего пользователя apache это не будет работать, как ec2-user и apache пользователь должен иметь доступ ко всем подкаталогов и содержащий папку /home/ec2-user/.

Вы можете перейти к /var/www/, chown к пользователю apache и запустить оттуда, так что вы не должны переместить разрешения на ec2-user домашний каталог.

+0

Я все реплицировал всю папку из разочарования. Как вы можете видеть в моем посте, я получаю 13PermissionDenied в своем error_log, я просто не знаю, какую папку изменить –

+0

@ WillemD'haeseleer - с какого пользователя вы запускаете 'apache'? 'Root'? – Ewan

+0

Я работаю как пользователь apache, но я не совсем уверен, это может быть apache как root, а также ищет –

1

Этот вопрос задан также в списке рассылки mod_wsgi. См. Обсуждение в списке рассылки.Последующие действия будут включены в список рассылки.

+0

Эй, Грэхем, спасибо за ваш ответ. Ваш ответ в списке рассылки также помог понять проблему. –

0

я застрял на этом навсегда и не мог найти какое-либо полезное объяснения. Я даже попытался предоставить apache временную оболочку для проверки прав доступа к файлам и до сих пор не получил нигде. Я наконец наткнулся на решение, documented here.

Вкратце: эта ошибка также может быть сгенерирована, если SELinux настроен на запрет доступа к указанному каталогу/файлам. Проверьте свой Audit.log и при необходимости измените контекст безопасности файлов.

chcon --user system_u --type httpd_sys_content_t -Rv /home/ec2-user/myapp/ 

Никакой гарантии, выраженной или подразумеваемой с точки зрения любых рисков безопасности, которые могут возникнуть. Я столкнулся с этим, используя конфигурацию по умолчанию gcloud/CentOS7, но я не знаю, является ли это платформой или дистрибутивом.

Удачи вам!

Смежные вопросы