Как развернуть приложение django на OS X Server?
Как можно развернуть приложение Django на OS X Server 2.0, не используя homebrew или другой вариант python, чем тот, который поставляется с OS X 10.8.1? Я использую привязки какао в приложении Django и не могу заставить его работать с homebrew на моем настольном компьютере (под управлением OS X 10.8.1); отсюда и просьба развернуть приложение на установленной в системе версии Python.
У меня есть следующая среда OS X Server, с уже установленным следующим:
OS X 10.8.1 OS X Server 2.0 Python 2.7.2 Apache 2.2.22Django 1.4.1 был установлен с помощью следующей команды:
sudo easy_install django
Моя первая попытка состоит в том, чтобы развернуть пустой веб-сайт и, как только это произойдет, развернуть реальное приложение для использования в производстве. Проект был создан на/Library/Server/Web/Data/WebApps/mysite/
используя следующую команду
django-admin.py startproject mysite
Я запустил приложение, используя следующую команду. Это просто подтвердило, что приложение было запущено и работает. Это стандарт "Это сработало!" страница, когда вы впервые создали проект.
python manage.py runserver 8080
Затем я создал файл/Library/Server/Web/Config/apache2/httpd_mysite.conf
со следующим содержанием:
WSGIScriptAlias /mysite /Library/Server/Web/Data/WebApps/mysite/mysite/wsgi.py
Я далее создал файл/Library/Server/Web/Config/apache2/webapps/com.example.mysite.wsgi.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.example.mysite.wsgi</string>
<key>displayName</key>
<string>Python "My Site" app</string>
<key>launchKeys</key>
<array/>
<key>proxies</key>
<dict/>
<key>installationIndicatorFilePath</key>
<string>/Library/Server/Web/Data/WebApps/mysite/mysite/wsgi.py</string>
<key>includeFiles</key>
<array>
<string>/Library/Server/Web/Config/apache2/httpd_mysite.conf</string>
</array>
<key>requiredModuleNames</key>
<array>
<string>wsgi_module</string>
</array>
</dict>
</plist>
Файлcom.example.mysite.wsgi.plist
был адаптирован изcom.apple.webapp.wsgi.plist
а такжеhttpd_mysite.conf
адаптированы изhttpd_wsgi.conf
, Оба эти файла используются для запуска & quot; автономного & quot; Приложение Python успешно при настройке через менеджер сервера.
Затем я создал сайт с помощью диспетчера сервера и подтвердил, что мое приложение находится в списке веб-приложений. Тем не менее, когда я посещаюhttp://example.com/mysite Я получаю 500 ошибок. В журналах есть следующие записи (IP-адреса изменены из соображений конфиденциальности на 1.2.3.4):
[Sat Sep 01 21:49:17 2012] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
[Sat Sep 01 21:49:17 2012] [notice] Apache/2.2.22 (Unix) PHP/5.3.13 with Suhosin-Patch mod_wsgi/3.3 Python/2.7.2 mod_fastcgi/2.4.6 mod_ssl/2.2.22 OpenSSL/0.9.8r DAV/2 configured -- resuming normal operations
[Sat Sep 01 21:50:13 2012] [error] [client 1.2.3.4] (8)Exec format error: exec of '/Library/Server/Web/Data/WebApps/mysite/mysite/wsgi.py' failed
[Sat Sep 01 21:50:13 2012] [error] [client 1.2.3.4] Premature end of script headers: wsgi.py
Не похоже, что модуль WSGI обрабатывает запрос, но вместо этого запрос может быть обработан с использованием FCGI. Тем не менее, журнал указывает, чтоmod_wsgi/3.3
был загружен.
Когда я создал стандартное приложение Python, которое выглядит следующим образом:
def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
И обновите файлы, чтобы они указывали на/Library/Server/Web/Data/WebApps/helloworld.wsgi
скорее, чем/Library/Server/Web/Data/WebApps/mysite/mysite/wsgi.py
тогда "Привет, мир" отображается. Поэтому я предполагаю, что wsgi правильно настроен и способен выполнять приложения, и что-то еще не так с моей настройкой.