Это мой личный сервер разработки, который я недавно начал настраивать. Хотя Python работает как cgi, а автономные тестовые скрипты в Python работают нормально, Django, похоже, не работает. Все, что я вижу, это список каталогов в браузере файлов django. Любая помощь будет оценена.
Мой виртуальный хост:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
#DocumentRoot /var/www
DocumentRoot /home/aj/public_html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
#<Directory /var/www/>
<Directory /home/aj/public_html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AddHandler mod_python .py
#PythonHandler mod_python.publisher
PythonHandler mod_python.cgihandler
PythonDebug On
</Directory>
<Location "/home/aj/public_html/old/testing/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE testing.settings
PythonOption django.root /testing
PythonDebug On
</Location>
#ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
#<Directory /usr/lib/cgi-bin/>
#ScriptAlias /cgi-bin/ /var/www/cgi-bin/
#<Directory /var/www/cgi-bin/>
ScriptAlias /bin/ /home/aj/public_html/
<Directory /home/aj/public_html/>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Я установил Django, используя
sudo apt-get install python-django
Вот что я бы посоветовал сделать:
Убедитесь, что у вас установлен и включен mod_python:
$ sudo apt-get install libapache2-mod-python $ sudo a2enmod python $ sudo invoke-rc.d apache2 restart
Поместите записи конфигурации вашего сайта в отдельный файл конфигурации виртуального хоста:
$ cd /etc/apache2/sites-available $ sudo cp default python-site $ sudo a2ensite python-site
ScriptAlias /bin/ /home/aj/public_html/
линия+ExecCGI
вариант от <Directory /home/aj/public_html/>
разделAddHandler mod_python .py
из <Directory /home/aj/public_html/>
разделPythonHandler mod_python.cgihandler
из <Directory /home/aj/public_html/>
раздел Удостовериться /home/aj/public_html/old
находится в вашем PYTHONPATH, вы можете добавить его следующим образом:
<Location "/home/aj/public_html/old/testing/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
PythonPath "['/home/aj/public_html/old'] + sys.path"
PythonOption django.root /testing
PythonDebug On
SetEnv DJANGO_SETTINGS_MODULE testing.settings
</Location>
Не забудьте перезагрузить конфиги, чтобы изменения вступили в силу:
$ sudo invoke-rc.d apache2 reload
Кроме того, как уже упоминалось в topdog, я бы предложил перейти к mod_wsgi или fcgi вместо mod_python, который считается устаревшим.
Изменить:
<Location "/home/aj/public_html/old/testing/">
кому:
<Location "/testing">
Это должен быть URL-адрес, по которому он смонтирован, а не физический каталог.
Вам также не хватает директивы PythonPath, поэтому Python знает, где найти ваш сайт Django.
URL-адрес, к которому вы затем получите доступ:http: // localhost / тестирование'. Замените localhost именем хоста, если это не поле, на котором вы запускаете браузер.
Вы читали документацию Django по развертыванию mod_wsgi на сайте Django?