Ошибка: ImportError при развертывании приложения Flask в файле wsgi

Я не знаю, что именно мне не хватает. Вот что у меня есть до сих пор:

всги

/opt/tools/apps/scheduler/scheduler.wsgi

Его содержание

from scheduler import app as application

init.py

/opt/tools/apps/scheduler/scheduler/__init__.py

Ошибка в журнале Apache

[Thu Feb 04 21:54:30 2016] [error] [client 10.57.136.99] mod_wsgi (pid=45485): Target WSGI script '/opt/tools/apps/scheduler/scheduler.wsgi' cannot be loaded as Python module.
[Thu Feb 04 21:54:30 2016] [error] [client 10.57.136.99] mod_wsgi (pid=45485): Exception occurred processing WSGI script '/opt/tools/apps/scheduler/scheduler.wsgi'.
[Thu Feb 04 21:54:30 2016] [error] [client 10.57.136.99] Traceback (most recent call last):
[Thu Feb 04 21:54:30 2016] [error] [client 10.57.136.99]   File "/opt/tools/apps/scheduler/scheduler.wsgi", line 1, in <module>
[Thu Feb 04 21:54:30 2016] [error] [client 10.57.136.99]     from scheduler import app as application
[Thu Feb 04 21:54:30 2016] [error] [client 10.57.136.99] ImportError: No module named scheduler

wsgi.conf

/etc/httpd/conf.d

LoadModule wsgi_module modules/mod_wsgi.so
WSGIPythonHome /opt/tools
WSGISocketPrefix run/wsgi

WSGIDaemonProcess scheduler user=abcd group=efgh processes=4
WSGIScriptAlias /scheduler /opt/tools/apps/scheduler/scheduler.wsgi
<Directory /opt/tools/apps/scheduler>
  WSGIProcessGroup scheduler
  WSGIApplicationGroup %{RESOURCE}
  Order deny,allow
  Allow from all
</Directory>

Я следовал Link1 и Link2, но не повезло. Это приложение правильно работало на одном хосте (скажем, host-1), и я пытаюсь развернуть его, скажем, на host-2.


person Shashank Vivek    schedule 05.02.2016    source источник


Ответы (1)


Поскольку ваше приложение будет работать как демон, корневой каталог будет установлен в /.

Убедитесь, что каталог вашего проекта добавлен в python PATH, или разрешите wsgi запускать приложение по правильному пути.

Ваш scheduler.wsgi должен выглядеть примерно так:

# insert application path in python path
import sys
sys.path.insert(0, "/opt/tools/apps/scheduler")

# launch app
from scheduler import app as application

Также убедитесь, что пользователь/группа apache (www-data) имеет доступ к проекту:

chown -R www-data:www-data /opt/tools/apps/scheduler
person Cyrbil    schedule 05.02.2016
comment
Изменил scheduler.wsgi, как указано выше, и разрешения аналогичны тому, что есть на host-1. :( Но это не сработало. Хотите больше информации? - person Shashank Vivek; 05.02.2016
comment
Поместите import os; print(os.getcwd()) вверху вашего сценария wsgi и покажите, что возвращает журнал apache. - person Cyrbil; 05.02.2016