Развертывание Django на сервере OS 10.9

У меня есть проект, использующий Django, который я пытаюсь развернуть в локальной сети на машине под управлением OS X Server (10.9). Я могу запустить его локально с помощью сценария manage.py проекта и иметь все зависимости и все такое, но я изо всех сил пытаюсь заставить его работать как обычный веб-сайт через Server.app. Ниже приведены файлы конфигурации для проекта, необходимые для веб-приложений на сервере, и все они указывают на фактический код в :

/Library/Server/Web/Data/WebApps/project/.../

(на самом деле это не названный проект, я обещаю):

/Библиотека/Сервер/Веб/Конфигурация/apache2/httpd_project.conf

WSGIScriptAlias /unity /Library/Server/Web/Data/WebApps/unity/unity/site.wsgi

/Library/Server/Web/Config/apache2/webapps/com.apple.webapp.project.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>com.apple.webapp.project</string>
<key>displayName</key>
<string>Daily Download</string>
<key>launchKeys</key>
<array/>
<key>proxies</key>
<dict/>
<key>installationIndicatorFilePath</key>
<string>/Library/Server/Web/Data/WebApps/project/project/site.wsgi</string>
<key>includeFiles</key>
<array>
    <string>/Library/Server/Web/Config/apache2/httpd_project.conf</string>
</array>
<key>requiredModuleNames</key>
<array>
    <string>wsgi_module</string>
</array>

Я уже добавил его как веб-сайт в Server.app. Проблема в том, что я получаю 500 ошибок со следующей записью в /private/var/log/apache2/error_log:

[Mon Jan 06 14:55:21 2014] [error] [client 17.19.244.170] ImportError: Could not import  settings 'project.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named unity.settings

Это странно для меня, потому что я добавил этот каталог в свой PYTHONPATH и могу импортировать project.settings из командной строки Python. По крайней мере, он вызывает мой код, но я не могу понять эту проблему с системным путем. Любые идеи?


person drodman    schedule 06.01.2014    source источник
comment
Я ничего не знаю о Server.app, но под каким пользователем он работает? Вы говорите, что каталог находится в вашем PYTHONPATH, но, по-видимому, сервер работает не так, как вы.   -  person Daniel Roseman    schedule 07.01.2014
comment
Он работает как учетная запись администратора, я вручную добавил (экспортировал) PYTHONPATH в свой .bash_profile. Теперь, когда я думаю об этом, есть ли другое место, где мне нужно указать его, чтобы он распознавался Apache вместо сеанса bash?   -  person drodman    schedule 07.01.2014


Ответы (1)


Я только вчера установил django 1.6.1 с сервером OS 10.9.

Файл /Library/Server/Web/Config/apache2/httpd_wsgi2.conf[..]

WSGIScriptAlias / /Users/jens/Source/macmini/macmini/macmini.wsgi

<Directory /Users/jens/Source/macmini>
Order allow,deny
Allow from all
</Directory>

[..]

Файл /Library/Server/Web/Config/apache2/webapps/com.apple.webapp.wsgi2.plist

[...]

<?xml version="1.0" encoding="UTF-7"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>name</key>
        <string>com.apple.webapp.wsgi2</string>
        <key>displayName</key>
        <string>Django 1.6.1 Setup at / </string>
        <key>launchKeys</key>
        <array/>
        <key>proxies</key>
        <dict/>
        <key>installationIndicatorFilePath</key>
        <string>/Users/jens/Source/macmini/macmini/macmini.wsgi</string>
        <key>includeFiles</key>
        <array>
                <string>/Library/Server/Web/Config/apache2/httpd_wsgi2.conf</string>
        </array>
        <key>requiredModuleNames</key>
        <array>
                <string>wsgi_module</string>
        </array>
</dict>
</plist>

[...]

Вероятно, стоит отметить, что я установил django в домашнем каталоге Jens.

[...]

macmini:macmini jens$ ls -l
total 72
-rw-r--r--  1 jens  staff     0 14 Jan 20:43 __init__.py
-rw-r--r--  1 jens  staff   133 14 Jan 21:10 __init__.pyc
-rwxr-xr-x  1 jens  staff   482 15 Jan 09:43 macmini.wsgi
-rw-r--r--  1 jens  staff  4384 15 Jan 17:15 settings.py
-rw-r--r--  1 jens  staff  3902 15 Jan 17:16 settings.pyc
-rw-r--r--  1 jens  staff   298 14 Jan 20:43 urls.py
-rw-r--r--  1 jens  staff   413 14 Jan 21:53 urls.pyc
-rwxr-xr-x  1 jens  staff   466 14 Jan 23:46 wsgi.py
-rw-r--r--  1 jens  staff   590 14 Jan 21:52 wsgi.pyc

[...]

И, наконец, файл wsgi.py

[...]

"""
WSGI config for macmini project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/
"""

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "macmini.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

[...]

Убедитесь, что вы создали виртуальный сайт в Server.app.

Привет, Йенс

person schnipp67    schedule 15.01.2014