Как правильно развернуть приложение flask с mod_wsgi на Apache2.2

#python #apache #flask #mod-wsgi

#python #apache #flask #mod-wsgi

Вопрос:

Я пытался развернуть свое приложение на веб-сервере Ubuntu, но с ограниченным успехом. Определенный мной файл виртуального хоста :

     #WSGIRestrictStdout Off
    <VirtualHost *:80>
    ServerName demo.engineerinme.com
    WSGIDaemonProcess fedoracollege  user=engineer group=www-data threads=5
    WSGIScriptAlias / /home/engineer/fedora-college/fedora_college.wsgi
    <Directory /home/engineer/fedora-college/>
                    WSGIProcessGroup fedoracollege
                    WSGIApplicationGroup %{GLOBAL}
                    WSGIScriptReloading On
                    Options All ExecCGI Indexes FollowSymLinks
                    Order allow,deny
                    Allow from all

    </Directory>

    Alias /static /home/engineer/fedora-college/fedora_college/static
    <Directory /home/engineer/fedora-college/fedora_college/static/>
                    Order allow,deny
                    Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel debug
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
  

Проблема, с которой я сталкиваюсь, заключается в том, что статический контент работает правильно, но приложение flask не запущено. Как http://demo.engineerinme.com показывает не найденную ошибку. Но http://demo.engineerinme.com/static работает.

Сценарий wsgi для развертывания :

 #!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/home/engineer/fedora-college/")

from fedora_college import app as application
application.secret_key = 'Add your secret key'
  

Журнал ошибок :

 [Mon Jun 30 23:01:31 2014] [debug] mod_deflate.c(615): [client 59.177.114.30] Zlib: Compressed 233 to 180 : URL /
[Mon Jun 30 23:01:32 2014] [debug] mod_deflate.c(615): [client 59.177.114.30] Zlib: Compressed 233 to 180 : URL /
[Mon Jun 30 23:01:51 2014] [debug] mod_deflate.c(615): [client 59.177.114.30] Zlib: Compressed 233 to 180 : URL /
  

Access.log

         59.177.114.30 - - [30/Jun/2014:23:01:32  0400] "GET / HTTP/1.1" 404 441 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"
        59.177.114.30 - - [30/Jun/2014:23:01:51  0400] "GET / HTTP/1.1" 404 442 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"
  

Код для приложения присутствует здесь:https://github.com/hammadhaleem/fedora-college /

Любая помощь с возможным развертыванием будет высоко оценена.

Спасибо

Комментарии:

1. пожалуйста, включите также журнал ошибок apache

2. @PaoloCasciello, я добавил выходные данные для файлов журнала.

3. Нет, я не думаю, что это обязательно.

4. @PaoloCasciello #решаемая. Спасибо 🙂

Ответ №1:

Я столкнулся с этой проблемой, и решение для нее было в файле виртуального хоста.

Также иногда журналы Apache показывали эту ошибку:

 [Mon Oct 17 15:24:24 2011] [error] [client 90.181.85.69] (13)Permission denied: mod_wsgi (pid=21805): Unable to connect to WSGI daemon process 'fedoracollege' on '/var/run/apache2/wsgi.16282.4.1.sock' after multiple attempts.
  

Эта проблема была объяснена здесь должным образом. Я только что перестроил wsgi_mod.

https://serverfault.com/questions/322131/wsgi-says-permissions-denied-on-my-ubuntu-server-no-wsgisocketprefix-setting

Кроме того, перепишите файл виртуального хоста в этот формат. (Удаление тегов virtualhost и direcory)

 Alias /static  /home/engineer/fedora-college/fedora_college/static
WSGIDaemonProcess fedoracollege user=engineer group=www-data threads=5
#WSGIDaemonProcess fedoracollege maximum-requests=1000 display-name=fedora-college processes=4 threads=4
WSGISocketPrefix /var/run/wsgi
WSGIRestrictStdout Off
WSGIRestrictSignal Off
WSGIPythonOptimize 1
WSGIScriptAlias /  /home/engineer/fedora-college/fedora_college.wsgi
<Location />
    WSGIProcessGroup fedoracollege
</Location>


ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel debug
CustomLog ${APACHE_LOG_DIR}/access.log combined
  

Кроме того, установите

 application = True 
  

Для правильного сообщения об ошибках.

Надеюсь, это кому-то поможет. (Не забудьте проголосовать за: P )

Спасибо за всю вашу помощь.

Комментарии:

1. Вам не нужны WSGIRestrictStdout или WSGIRestrictSignal в течение очень долгого времени. WSGIPythonOptimize на самом деле тоже ничего не дает. И вы, вероятно, имеете в виду что-то другое, кроме «application = True».

2. Странно, потому что я не вижу никаких изменений на странице, связанных с тем, что я выделил.