2014-11-28 5 views
1

Я пытался развернуть мое приложение Django на Ubuntu 14.04 с установленными пакетами, которые являются:Развертывание Django на Apache 2.4

django 1.4.15 
apache 2.4 
python 2.7 
mod_wsgi 3.4 (there is one compiled as mod_wsig.so-2.7 which is the one I use) 

на моем апача конфигурации у меня есть эти поля:

# Modules 
LoadModule mpm_worker_module /usr/lib/apache2/modules/mod_mpm_worker.so 
LoadModule mime_module /usr/lib/apache2/modules/mod_mime.so 
LoadModule alias_module /usr/lib/apache2/modules/mod_alias.so 
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so-2.7 
LoadModule setenvif_module /usr/lib/apache2/modules/mod_setenvif.so 
LoadModule authn_core_module /usr/lib/apache2/modules/mod_authn_core.so 
LoadModule authz_core_module /usr/lib/apache2/modules/mod_authz_core.so 
... 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
    AuthType none 
    Require all granted 
</Directory> 
... 
# And finally the app config. 
WSGIPythonHome /home/web/.virtualenvs/web 
WSGIPythonPath /PATH/TO/MYSITE:/home/web/.virtualenvs/web/lib/python2.7/site-packages 
WSGIScriptAlias/"/PATH/TO/wsgi.py" 

Кажется, все хорошо, пока я не попытаюсь импортировать один из локальных модулей в свою систему. Под этим я имею в виду, сценарий wsgi.py не работает без проблем, а затем Джанго settings.py начать работать, в настройках у меня есть этот код:

from MYSITE.environments.prod_settings import * 

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

Другая часть заключается в том, что сайт работает отлично, когда я запускаю ./manage.py runserver, а информация в sys.path - это то же самое!

Я просто не понимаю, почему apache wsgi не позволяет мне импортировать этот модуль python.

Вот последние журналы:

[Fri Nov 28 18:07:06.222374 2014] [core:notice] [pid 3639:tid 140258688976768] AH00094: Command line: '/usr/sbin/apache2' 
[Fri Nov 28 18:07:09.322057 2014] [:error] [pid 3642:tid 140258619721472] /home/web/.virtualenvs/web <--- printed the sys.prefix 
[Fri Nov 28 18:07:09.673877 2014] [:error] [pid 3642:tid 140258619721472] 2014-11-28 18:07:09,670 (3642/MainThread) newrelic ERROR - Falling back to stderr logging as unable to create log file '/var/log/newrelic/newrelic-python-agent.log'. 
[Fri Nov 28 18:07:09.673930 2014] [:error] [pid 3642:tid 140258619721472] Traceback (most recent call last): 
[Fri Nov 28 18:07:09.673941 2014] [:error] [pid 3642:tid 140258619721472] File "/home/web/.virtualenvs/web/local/lib/python2.7/site-packages/newrelic-2.28.0.26/newrelic/common/log_file.py", line 79, in initialize_logging 
[Fri Nov 28 18:07:09.673950 2014] [:error] [pid 3642:tid 140258619721472]  _initialize_file_logging(log_file, log_level) 
[Fri Nov 28 18:07:09.673959 2014] [:error] [pid 3642:tid 140258619721472] File "/home/web/.virtualenvs/web/local/lib/python2.7/site-packages/newrelic-2.28.0.26/newrelic/common/log_file.py", line 51, in _initialize_file_logging 
[Fri Nov 28 18:07:09.673969 2014] [:error] [pid 3642:tid 140258619721472]  handler = logging.FileHandler(log_file) 
[Fri Nov 28 18:07:09.673977 2014] [:error] [pid 3642:tid 140258619721472] File "/usr/lib/python2.7/logging/__init__.py", line 903, in __init__ 
[Fri Nov 28 18:07:09.673985 2014] [:error] [pid 3642:tid 140258619721472]  StreamHandler.__init__(self, self._open()) 
[Fri Nov 28 18:07:09.673993 2014] [:error] [pid 3642:tid 140258619721472] File "/usr/lib/python2.7/logging/__init__.py", line 928, in _open 
[Fri Nov 28 18:07:09.674001 2014] [:error] [pid 3642:tid 140258619721472]  stream = open(self.baseFilename, self.mode) 
[Fri Nov 28 18:07:09.674009 2014] [:error] [pid 3642:tid 140258619721472] IOError: [Errno 13] Permission denied: '/var/log/newrelic/newrelic-python-agent.log' 
[Fri Nov 28 18:07:09.985905 2014] [:error] [pid 3642:tid 140258619721472] No module named wizzytest2 <---- My module name 

После ошибки модуля протоколирует ошибка является о проблемах с соединением с базой данных в целом. Это происходит потому, что в модуле wizzytest2 у меня есть переопределения параметров, поэтому ожидается.

[Sat Nov 29 21:37:44.923879 2014] [:error] [pid 6097:tid 140297485195008] '/home/web/.virtualenvs/web' <-- python home 
[Sat Nov 29 21:37:44.924177 2014] [:error] [pid 6097:tid 140297485195008] ['/home/web/.virtualenvs/web/lib/python2.7/site-packages', 
[Sat Nov 29 21:37:44.924230 2014] [:error] [pid 6097:tid 140297485195008] '/home/web/MYSITE/mysite', 
[Sat Nov 29 21:37:44.924256 2014] [:error] [pid 6097:tid 140297485195008] '/home/web/.virtualenvs/web/src/python-itunes', 
[Sat Nov 29 21:37:44.924287 2014] [:error] [pid 6097:tid 140297485195008] '/home/web/.virtualenvs/web/lib/python2.7', 
[Sat Nov 29 21:37:44.924312 2014] [:error] [pid 6097:tid 140297485195008] '/home/web/.virtualenvs/web/lib/python2.7/plat-x86_64-linux-gnu', 
[Sat Nov 29 21:37:44.924342 2014] [:error] [pid 6097:tid 140297485195008] '/home/web/.virtualenvs/web/lib/python2.7/lib-tk', 
[Sat Nov 29 21:37:44.924366 2014] [:error] [pid 6097:tid 140297485195008] '/home/web/.virtualenvs/web/lib/python2.7/lib-old', 
[Sat Nov 29 21:37:44.924395 2014] [:error] [pid 6097:tid 140297485195008] '/home/web/.virtualenvs/web/lib/python2.7/lib-dynload', 
[Sat Nov 29 21:37:44.924419 2014] [:error] [pid 6097:tid 140297485195008] '/usr/lib/python2.7', 
[Sat Nov 29 21:37:44.924449 2014] [:error] [pid 6097:tid 140297485195008] '/usr/lib/python2.7/plat-x86_64-linux-gnu', 
[Sat Nov 29 21:37:44.924483 2014] [:error] [pid 6097:tid 140297485195008] '/usr/lib/python2.7/lib-tk', 
[Sat Nov 29 21:37:44.924557 2014] [:error] [pid 6097:tid 140297485195008] '/home/web/.virtualenvs/web/local/lib/python2.7/site-packages', 
[Sat Nov 29 21:37:44.924583 2014] [:error] [pid 6097:tid 140297485195008] '/home/web/.virtualenvs/web/local/lib/python2.7/site-packages/newrelic-2.28.0.26', 
[Sat Nov 29 21:37:44.924615 2014] [:error] [pid 6097:tid 140297485195008] '/home/web/.virtualenvs/web/lib/python2.7/site-packages', 
[Sat Nov 29 21:37:44.924641 2014] [:error] [pid 6097:tid 140297485195008] '/home/web/.virtualenvs/web/lib/python2.7/site-packages/newrelic-2.28.0.26', 
[Sat Nov 29 21:37:44.924663 2014] [:error] [pid 6097:tid 140297485195008] '/home/web/MYSITE', 
[Sat Nov 29 21:37:44.924695 2014] [:error] [pid 6097:tid 140297485195008] '/home/web/MYSITE/mysite'] 
[Sat Nov 29 21:37:45.474168 2014] [:error] [pid 6097:tid 140297485195008] No module named wizzytest2 

Просто добавлен путь к python, так что его легче отлаживать. Я также исправил проблему newrelic, но это не имеет никакого значения для файла настроек wizzytest2.

+0

Вы пытались запустить «' runerver'' с '' django-admin.py'', в другой директории, чем ваш проект? – Zulu

+0

И можете ли вы дать сообщения '' ImportError'' и журналы ошибок apache? – Zulu

+0

только что обновил ответ журналами. – Hassek

ответ

0

Теперь с бревнами я думаю, что проблема очевидна:

IOError: [Errno 13] Permission denied: '/var/log/newrelic/newrelic-python-agent.log/' 

Пользователь, который запускает приложение не имеет права писать в '/var/log/newrelic/newrelic-python-agent.log'.

Возможно, chmod -R +w '/var/log/newrelic/' может вам помочь. Но на самом деле вы должны поместить пользователя, запускающего ваше приложение, в соответствующую группу, которая может записывать журналы.

Примечание: Вы должны использовать uWSGI или Gunicorn для управления вы приложение и использовать только апач в веб-интерфейсе.

+0

Я знаю о новой проблеме.Дело в том, что это не должно влиять на чтение python или нет файла настроек 'wizzytest2' для переопределения некоторых полей. Мой главный вопрос - почему он не может найти тот файл, который находится на пути python? – Hassek

0

В конце концов, это была проблема с разрешениями на переопределением файла настроек я хотел импортировать, в конце концов, я просто должен был сделать chown web:web к файлу и chmod.

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