2016-08-17 1 views
0

Я пытаюсь запустить тестовое приложение Flask на моем сервере Ubuntu 16.04/Apache 2.4, и при обращении к страницам я получаю ошибки 403.Пытается запустить Flask на Apache: ошибка 13 (разрешения на поиск отсутствуют)

Журналы показывают следующее:

[Wed Aug 17 10:13:39.782920 2016] [core:error] [pid 30612:tid 140294142019328] (13)Permission denied: [client 131.180.174.104:57481] AH00035: access to /favicon.ico denied (filesystem path '/home/leon/opendc-production/web-server/opendc.wsgi') because search permissions are missing on a component of the path, referer: https://opendc.ewi.tudelft.nl/ 

Я нашел (13) Permission Denied страницу на веб-сайте Apache и следуют шаги, делая sudo chmod 644 opendc.wsgi, sudo chmod 644 hello.py и sudo chmod 644 hello.pyc, а также sudo chmod +x . и cd .. весь путь вниз.

Я по-прежнему получаю то же самое, что и «разрешения поиска, отсутствующие на компоненте пути».

Вот вывод логинсервера -al в каталоге web-server:

drwxrwx--- 3 leon leon 4096 Aug 17 10:36 . 
drwxrwx--- 7 leon leon 4096 Aug 17 10:21 .. 
-rw-rw---- 1 leon leon 93 Aug 16 14:13 .gitignore 
-rw-r--r-- 1 leon leon 106 Aug 16 15:41 hello.py 
-rw-r--r-- 1 leon leon 419 Aug 16 15:45 hello.pyc 
-rw-rw---- 1 leon leon 54044 Aug 16 14:13 openapi-spec.yaml 
-rw-r--r-- 1 leon leon 37 Aug 17 10:36 opendc.wsgi 
-rw-rw---- 1 leon leon 410 Aug 16 14:13 README.md 
drwxrwx--- 6 leon leon 4096 Aug 16 15:40 venv 

Вот содержание opendc.wsgi:

from hello import app as application 

Вот содержание hello.py:

from flask import Flask 
app = Flask(__name__) 

@app.route('/') 
def hello_world(): 
     return 'Hello, OpenDC!' 

Вот содержимое моего /etc/apache2/sites-available/opendc.ewi.tudelft.nl.conf:

<VirtualHost *:443> 

     # Meta 

     ServerAdmin [email protected] 
     ServerName opendc.ewi.tudelft.nl:443 

     # SSL 

     SSLEngine on 
     SSLCertificateFile /root/opendc.ewi.tudelft.nl.crt 
     SSLCertificateKeyFile /root/opendc.ewi.tudelft.nl.key 
     SSLCertificateChainFile /root/DigiCertCA.crt 

     # WSGI Python app 

     WSGIDaemonProcess opendc user=leon group=adm threads=5 
     WSGIScriptAlias//home/leon/opendc-production/web-server/opendc.wsgi 

     <Directory /home/leon/opendc-production/web-server> 
       WSGIProcessGroup opendc 
       WSGIApplicationGroup %{GLOBAL} 
       Require all granted 
     </Directory> 
</VirtualHost> 

Другое дело, следует отметить, что я следовал за Flask installation guide, так что я питона в virtualenv, который я никогда не использовал раньше. Не знаю, изменит ли это что-либо или если я должен сделать что-то по-другому из-за этого.

Я также нашел this SO question и последовал совету туда, но это ничего не изменило.

+0

Посмотрите на это http://flask.pocoo.org/docs/0.11/deploying/mod_wsgi/ Вы пытались предоставить разрешения с помощью «Разрешить заказ», deny Allow from all '? –

+0

@SteevenBrunner yep, вот что я изначально. Просто изменил его на это, чтобы повторить попытку, и я получаю ту же ошибку. –

ответ

1

Apache работает как специальный пользователь. Если ваши файлы находятся под вашим домашним каталогом, они не смогут их прочитать. Лучше переместить их за пределы своего домашнего каталога. В противном случае вы должны сделать chmod o+rx во всех каталогах, где находятся файлы, что противоречит тому, что у вас установлено для вашей ОС.

+0

А, ок. Так что хорошего места для их размещения? '/ Вар/WWW/проект-name'? –

+0

И почему он не запускается как 'user = leon group = adm', как я указал в'/etc/apache2/sites-available/opendc.ewi.tudelft.nl.conf'? –

+0

Перемещение проекта на '/ var/www/opendc.ewi.tudelft.nl/web-server' и выполнение шагов на странице [(13) Permission Denied error] (http://wiki.apache.org/ httpd/13PermissionDenied) исправлено. Благодаря! –