как запустить приложение Django в apache2 - PullRequest
1 голос
/ 09 марта 2011

Привет, я не могу запустить приложение django в веб-сервере apache2.Я просмотрел весь документ, но он все еще не работал для меня. Это файл httpd.conf моего Apache2

<Location "/mysite/">
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE mysite.settings
  PythonOption django.root /mysite
  PythonPath "['/home/djangotest/mysite'] + sys.path"
  PythonDebug On
</Location>

Местоположение моего проекта django находится в / home / djangotest / mysite, в котором я работаюприложение опросов.Есть что-то, что я должен упомянуть в settings.py или urls.py, чтобы это работало в apache2, оно отлично работает на сервере dev.или есть конфигурация, которую я должен сделать в apache2, чтобы работать

Ответы [ 3 ]

2 голосов
/ 09 марта 2011
  1. Скачать и установить http://modwsgi.googlecode.com/files/mod_wsgi-3.3.tar.gz

  2. Добавить в каталог /etc/httpd/conf.d/


<VirtualHost *:80>
  ServerName --insert--

  ErrorLog /home/djangotest/mysite/error_log
  CustomLog /home/djangotest/mysite/access_log combined

  UseCanonicalName Off

  WSGIScriptAlias /g2 /home/djangotest/mysite/mysite.wsgi
  WSGIDaemonProcess iproj processes=7 threads=1 display-name=%{GROUP}

</VirtualHost>
  1. Добавить в секцию LoadModules в /etc/httpd/conf/httpd.conf

    LoadModule wsgi_module /usr/lib/httpd/modules/mod_wsgi.so

  2. Добавить в раздел AddHandler в /etc/httpd/conf/httpd.conf

    AddHandler wsgi-script .wsgi

  3. Убедитесь, что ваш пользователь httpd может получить доступ к / home / djangotest /, а также выполнить сценарии Python

  4. Создание файла mysite.wsgi:


import os
import sys

sys.path.append('/home/djangotest/mysite')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Или, как сказал @Efazati, прочитайте инструкцию;)


Надеюсь, это решит вашу последнюю проблему:

нет модуля с именем mysite.urls, но есть файл urls.py

Проверьте файл настроек на

ROOT_URLCONF = "mysite.urls"

Это имя вашего файла URL, я полагаю, у вас нет модуля с именем mysite.urls.py? Похоже, ваша собственность должна читать:

ROOT_URLCONF = "urls"

1 голос
/ 09 марта 2011

Попробуйте добавить '/ home / djangotest' в PythonPath:

<Location "/mysite/">

  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE mysite.settings
  PythonOption django.root /mysite
  PythonPath "['/home/djangotest', '/home/djangotest/mysite'] + sys.path"

  PythonDebug On
</Location>

Вам нужно добавить это, если вы импортируете файлы своего проекта с синтаксисом. Другие парни здесь правы, хотя;переключитесь на mod-wsgi, если можете.Поддержка mod_python в Django очень скоро устареет.http://docs.djangoproject.com/en/1.2/howto/deployment/modpython/

edit: поддержка mod_python устарела в Django 1.3 и будет полностью удалена в Django 1.5.

0 голосов
/ 09 марта 2011

прочитайте инструкцию

http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...