Я пытаюсь развернуть на виртуальной машине с 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
инструмент командной строки.