Назад | Перейти на главную страницу

centos 6.4 - развертывание django с помощью apache и mod_wsgi

Я пытаюсь развернуть на виртуальной машине с centos 6.4 базовый проект django с apache и mod_wsgi. Это дерево проекта:

myproj/
├── manage.py
├── myapp
│   ├── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── myproj
    ├── __init__.py
    ├── __init__.pyc
    ├── settings.py
    ├── settings.pyc
    ├── urls.py
    └── wsgi.py

это файл wsgi.py (по умолчанию он создается django-admin.py startproject):

"""
WSGI config for myproj project.

This module contains the WSGI application used by Django's development server
and any production WSGI deployments. It should expose a module-level variable
named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
this application via the ``WSGI_APPLICATION`` setting.

Usually you will have the standard Django WSGI application here, but it also
might make sense to replace the whole Django WSGI application with a custom one
that later delegates to the Django one. For example, you could introduce WSGI
middleware here, or combine a Django application with an application of another
framework.

"""
import os

# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks
# if running multiple sites in the same mod_wsgi process. To fix this, use
# mod_wsgi daemon mode with each site in its own daemon process, or use
# os.environ["DJANGO_SETTINGS_MODULE"] = "myproj.settings"
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproj.settings")

# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)

и это конфигурация виртуального хоста (/etc/httpd/conf/httpd.conf):

#WSGIPythonPath /home/www/myproj/myproj
<VirtualHost *:82>
     ServerAdmin webmaster@example.com
     WSGIScriptAlias /django /home/www/myproj/mypproj/wsgi.py
     WSGIDaemonProcess myproj user=apache threads=3
     <Directory />
        Options FollowSymLinks
        AllowOverride None
     </Directory>
     DocumentRoot /tmp
     ServerName www.example.com
     ServerAlias www.example.com
     ErrorLog /var/log/httpd/error_log
     CustomLog /var/log/httpd/access_log combined
</VirtualHost>

в то время как я могу получить доступ к странице индекса apache (192.168.0.15:80 в моей локальной сети), если я попытаюсь указать своему брокеру на 192.168.0.15:82, я получу «Пункт назначения недоступен». Есть идеи, чего не хватает или что не так в конфигурации? при доступе или журнале ошибок нет следов активности ...


это измененная конфигурация виртуального хоста:

<VirtualHost *:82>
     ServerAdmin webmaster@example.com
     WSGIScriptAlias /django /home/www/myproj/myproj/wsgi.py
     WSGIDaemonProcess myproj user=apache threads=3 python-path=/home/www/myproj/myproj/:/usr/lib/python2.6/site-packages
     WSGIProcessGroup myproj
     <Directory /home/www/myproj/myproj>
        <Files wsgi.py>
            Order allow,deny
            Allow from all
        </Files>
     </Directory>
     #DocumentRoot /tmp
     #ServerName www.example.com
     #ServerAlias www.example.com
     #Alias /media/ /home/www/myproj/
     ErrorLog /var/log/httpd/error_log
     CustomLog /var/log/httpd/access_log combined
</VirtualHost>

...ничего не изменилось. На:

wget 192.168.0.15:82

Я получаю сообщение «В соединении отказано». Та же самая конфигурация на машине Debian работает (в этом случае отображается на порт 80). Любая помощь?

Если вы хотите получить доступ к порту 82 напрямую, вам необходимо открыть соответствующий порт в брандмауэре сервера. Вы можете сделать это с помощью system-config-firewall-tui инструмент командной строки.