LINUX.ORG.RU

Django+Apache2+mod_python


0

1

Создал проект в каталоге /home/wlan/develop/dm

Поставил апач, мод_питон.

Прописал виртуальный хост

# cat /etc/apache2/sites-available/dm
# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot /home/wlan/develop/dm
ServerName dm.141592.co.cc

# Other directives here

</VirtualHost>

Сделал a2ensite dm.

Записал простенький срипт в проекте джанге хелловорлд.

В дебаговом сервере оно работает. Апач выдаёт интернал сервер еррор.

При ребуте апача:

# /etc/init.d/apache2 restart
Restarting web server: apache2apache2: apr_sockaddr_info_get() failed for loosers
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[Fri Apr 01 18:17:09 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
apache2: apr_sockaddr_info_get() failed for loosers
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[Fri Apr 01 18:17:09 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address [::]:80

Ещё в книге по джанге написано:

Чтобы настроить Django для использования mod_python, сперва необходимо убедиться, что установлен Apache с поддержкой mod_python. Обычно это означает, что в конфигурационном файле Apache присутствует соответствующая директива LoadModule:

LoadModule python_module /usr/lib/apache2/modules/mod_python.so

Теперь добавим в этот файл следующие строки:

<Location "/">
    SetHandler mod_python
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonDebug On
</Location>

Я так и не разобрался куда это засунуть.

mod_python работает точно, джанга работает точно. А вот сервер это показывать не хочет.

Что ещё показать? Что забыл? Получается, что я с виртуальными хостами не разобрался? Подскажите как их всё-таки делать. Желательно по пунктам. И зависит ли имя каталога в котором проект от имени виртуального хостаи и домена?

★★

Правило #1. Забыть про mod_python. Напрочь и начисто. Через WSGI, через или proxy, или как угодно, но не через mod_python.

kid_lester ()
Ответ на: комментарий от kid_lester

Через mod_wsgi тоже не работает, и нужно ли отключать мод)питон при работе wsgi?

wlan ★★ ()

конфиг для FastCGI

FastCGIExternalServer /srv/hello/helloworld.fcgi -socket /tmp/helloworld.fcgi
<VirtualHost *:80>
    ServerAdmin highwaystar@example.com
    ServerName helloworld.example.com

    DocumentRoot /srv/hello
    Alias /media /usr/lib/python2.6/site-packages/django/contrib/admin/media
    RewriteEngine On
    RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^/(.*)$ /helloworld.fcgi/$1 [QSA,L]
    <Directory /srv/hello>
        Order allow,deny
        Allow from all
    </Directory>
    <Location /media>
        Order allow,deny
        Allow from all
    </Location>


</VirtualHost>
HighwayStar ★★★★★ ()

убери NameVirtualHost и Listen из конфига )
ну и
# cat > /etc/apache2/conf.d/servername
ServerName localhost
Ctrl+D
# /etc/init.d/apache2 restart

И прекрати обывать свой хост «loosers» ибо «как корабль назовешь, так и поплывет»

Jetty ★★★★★ ()
Ответ на: комментарий от Jetty

Спасибо, внезапно варнинги при ребуте апача пропали. =]

Делаю через mod_wsgi

Теперь /etc/apache2/sites-availble/dm выглядит так:


<VirtualHost *:80>
DocumentRoot /home/wlan/develop/dm
ServerName dm.141592.co.cc

        WSGIScriptAlias / /home/wlan/develop/dm/apache/django.wsgi
        WSGIDaemonProcess dm processes=2 maximum-requests=5 threads=1
        WSGIProcessGroup dm

        ErrorLog "|/usr/sbin/rotatelogs /var/log/apache2/cargo.error.%Y-%m-%d.log 86400"
        CustomLog "|/usr/sbin/rotatelogs /var/log/apache2/cargo.access.%Y-%m-%d.log 86400" combined
        ServerSignature On

        Alias /css/     "/home/wlan/develop/dm/medeia/css/"
        Alias /js/      "/home/wlan/develop/dm/media/js/"
        Alias /pics/    "/home/wlan/develop/dm/media/images/pics/"
        Alias /media/   "/home/wlan/develop/dm/media/"

# Other directives here

</VirtualHost>

Внезапно, Internal Server Error. Вон адрес в конфиге можете сами проверить. Что я забыл?

wlan ★★ ()
Ответ на: комментарий от kid_lester

При запуске дебагового сервера, оно выдаёт на выхлоп страничку с отладочной инфой и ошибкой в синтаксисе моего скрипта. При апаче интернал еррор.

wlan ★★ ()

Вот в логах что.

[Fri Apr 01 19:15:58 2011] [error] [client 46.0.25.147]   File "/var/lib/python-support/python2.5/django/conf/__init__.py", line 94, in __init__
[Fri Apr 01 19:15:58 2011] [error] [client 46.0.25.147]     raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)
[Fri Apr 01 19:15:58 2011] [error] [client 46.0.25.147] ImportError: Could not import settings 'dm.settings' (Is it on sys.path? Does it have syntax errors?): No module named dm.settings

Я не ошибся в конфиге с wsgi и виртхостом?

Если не ошибся то как sys.path правильно прописать?

wlan ★★ ()
Ответ на: комментарий от wlan

Мне например совсем непонятно зачем в данном случае WSGI !

Не проще ли Options +Exec для каталога и chmod +x megascript.py

Ну про ансекур и т.д. это отдельный вопрос, в данном случае сразу видно что «для тестовых целей»

Jetty ★★★★★ ()
Ответ на: комментарий от Jetty

Починил. Всё дело оказалось в apache/django.wsgi

Я там неправильно путь указал.

wlan ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.