Форум сайта python.su
Друзья, нужна Ваша помощь!
Пытаюсь развернуть проект на вирт. хостинге. Если конкретнее, то на timeweb. Говорили, что поддерживают и python и django. Да, действительно, подерживают, но только джанго 1.1.1.
В итоге, поставил 1.5.1, проекты создаются но при попытке зайти на сайт вместо желаемого “It worked!” выпадает 500-ая (Internal Server Error).
Проблема возникает когда кладу .htaccess в корень сайта. Что я в нем уже только не писал, ничего не помогает, в том числе и официальные доки. Наверняка, кто-нибудь сталкивался с подобной проблемой…
P.S. Вообще, я так понял что начиная с джанго версии 1.4 вся коммутация между сервером и джанго осуществляется в файле wsgi.py, который автоматически генерится, а в .htaccess необходимо всего лишь прописать пути к этому файлу и самому проекту. Судя по всему, я что-то упускаю, да???
Спасибо!
Отредактировано sliv (Июнь 8, 2013 22:56:23)
Офлайн
nginx / .htaccess ???
вы что-то делаете не так…
Офлайн
)) Прошу прощения, конечно же apache стоит! Спасибо!(поправил в названии темы) Два дня за статьями про различные настройки под apache и nginx дали о себе знать… Внимание страдает(((
Тем не менее, проблема остается открытой.
Отредактировано sliv (Июнь 8, 2013 15:18:30)
Офлайн
смотрите логи, в них все написанно.
P.S. у апача вообше mod_wsgi есть? включён?
Отредактировано s0rg (Июнь 8, 2013 15:25:19)
Офлайн
я не стал морочиться с использованием генерированного wsgi и использовал свой. вот настройки с работающего на timeweb с моей django сайта. джанга старовата, поэтому структура путей немного отличная, но думаю разберетесь.
htaccess:
Options +ExecCGI
AddHandler wsgi-script .wsgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.wsgi/$1 [QSA,PT,L]
import os, sys
sys.path.append('/home/h/***/public_html/application') # там где manage.py и приложения
sys.path.append('/home/h/***/public_html') # потому как в installed_apps указан application как пакет
sys.path.append('/home/h/***/libs') # джанга и другие либы
os.environ['DJANGO_SETTINGS_MODULE'] = 'application.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
def my_wsgi_application(environ, start_response):
status = '200 OK'
output = 'My Megasite'
response_headers = [('Content-type', 'text/plain')]
start_response(status, response_headers)
return [output]
application = my_wsgi_application
Офлайн
права на файлы *.wsgi какие? Что в логах апача?
Офлайн
s0rg, Обращался по поводу mod_wsgi в тех.поддержку. Ответили следующее:
mod_wsgi на нашем сервере имеет стандартные настройки. Все необходимые опции возможно переопределить в файле .htaccess. С Вашей стороны никаких препятствий для настройки нет.
Офлайн
С логами сейчас непонятные проблемы (нет обновлений с 6-го числа, хотя ошибки постоянно выдает.) Уже написал в тех.поддержку - разбираются.
Последнее что было в логах (c тех пор, в принципе, особо ничего не поменялось):
[Thu Jun 06 12:37:30 2013] [error] [client 193.232.56.116] Options ExecCGI is off in this directory: /home/s/****/mysite/public_html/index.wsgi
Отредактировано sliv (Июнь 8, 2013 16:04:44)
Офлайн
truporez же дал правильный .htaccess:
Options +ExecCGI
Офлайн
Попробовав, по Вашему рецепту, truporez, пришел к следующему: test отработал нормально. При подключении index вываливается 500 опять((.
В корне у меня есть две папки:
python(сюда я произвел установку джанго: /home/s/***/python/lib64/python2.7/site-packages/django)
и
mysite, в которой public_html и error_log. Внутрь public_html закинул .htaccess и index.wsgi, там же создал проект core.
В index.wsgi следующее:
import os, sys sys.path.append('/home/s/***/mysite/public_html/core') # там где manage.py и приложения sys.path.append('/home/s/***/mysite/public_html') # потому как в installed_apps указан application как пакет sys.path.append('/home/s/***/python/lib64/python2.7/site-packages') # джанга и другие либы os.environ['DJANGO_SETTINGS_MODULE'] = 'core.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
Офлайн