#python #django #apache #python-2.7 #mod-wsgi
#питон #джанго #apache #python-2.7 #мод-wsgi #python #django
Вопрос:
У меня есть выделенный сервер с GoDaddy. Кажется, я успешно все настроил правильно, но, похоже, я не могу понять, почему у меня возникает эта проблема:
Когда я перезапускаю apache:
[root@sXXX-XXX-XXX-XXX /]# /scripts/restartsrv httpd
Я понимаю это:
AH00112: Warning: DocumentRoot [/usr/local/apache/var/www/<my_django_project>] does not exist
AH00112: Warning: DocumentRoot [/usr/local/apache/var/www/<my_django_project>] does not exist
AH00112: Warning: DocumentRoot [/usr/local/apache/var/www/<my_django_project>] does not exist
Я никогда не указывал путь /usr/local/apache/var/www/<my_django_project>
???
Кажется, он просто добавляет мой var/www/<my_django_project>
к /usr/local/apache
… не уверен, почему
Мой файл httpd.conf:
... a bunch of pre configured goDaddy stuff I'm guessing here ...
LoadModule wsgi_module /usr/local/apache/extramodules/mod_wsgi.so
AddHandler wsgi-script .wsgi
<VirtualHost XXX.XXX.XXX.X:80>
ServerName XXX.XXX.XXX.XXX
ErrorLog /var/log/httpd/error.log
# DocumentRoot /public_html/
ServerAdmin admin-noreply@mysite.com
Alias /favicon.ico /var/www/<my_django_project>/static/favicon.ico
Alias /static /var/www/<my_django_project>/static
<Directory /var/www/<my_django_project>/static>
Require all granted
</Directory>
Alias /media /var/www/<my_django_project>/media
<Directory /var/www/<my_django_project>/media>
Require all granted
</Directory>
WSGIDaemonProcess <my_django_project> python-path= /var/www/<my_django_project>:/var/www/<my_django_project>/<my_django_project>:/var/www/<my_django_project>/<my_django_project_site>:/usr/local/lib/python2.7/site-packages
WSGIProcessGroup <my_django_project>
WSGIScriptAlias / /var/www/<my_django_project>/<my_django_project>/wsgi.py
<Directory /var/www/<my_django_project>/<my_django_project>>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
... more stuff already in the conf file ...
Когда я захожу XXX-XXX-XXX-XXX:80
в свой интернет-браузер, он сообщает мне, что не может найти файл .htaccess. Но теперь он просто перенаправляет меня на http://XXX.XXX.XXX.XXX/cgi-sys/defaultwebpage.cgi
Любая помощь будет высоко оценена
Редактировать:
Было указано, что AH00112: Warning: DocumentRoot [/usr/local/apache/var/www/<my_django_project>] does not exist
это произошло из-за /
того, что перед path не добавлялся.
Мой браузер теперь выдает мне:
Forbidden
You don't have permission to access / on this server.
Server unable to read htaccess file, denying access to be safe
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
Комментарии:
1. Это выполняется с помощью команды python runserver или эта команда работает?
2. @JC203 Когда я использую python2.7 manage.py runserver 0:8000 работает просто отлично. Но Apache не может обслуживать веб-сайт
Ответ №1:
Это будет означать, что вы установили DocumentRoot
директиву где-то в ваших файлах конфигурации Apache для пути, который не имеет косой черты. Когда это произойдет, Apache добавит путь к концу ServerRoot
каталога, который в вашем случае есть /usr/local/apache
. Убедитесь, что все заданные вами пути к файловой системе являются абсолютными именами путей с косой чертой.
Комментарии:
1. Большое вам спасибо, что указали на это. Но я не понимал, что «AH00112: Предупреждение: DocumentRoot» было прошлым предупреждением в журнале, я не думаю, что это связано с автоматическим перенаправлением на XXX.XXX.XXX.XXX/cgi-sys/defaultwebpage.cgi
2. Какие правила перезаписи или директивы перенаправления содержатся в вашем файле конфигурации. Также проверьте
AddHandler
правила для.py
расширения, поскольку они могут мешать.3. По-видимому, перенаправление было связано с кэшированием моего браузера. Я переключил другой браузер, и он выдает:
4. «Запрещено, у вас нет разрешения на доступ к / на этом сервере. Сервер не может прочитать файл htaccess, отказывая в доступе в целях безопасности Кроме того, при попытке использовать ErrorDocument для обработки запроса была обнаружена ошибка 403 Forbidden.»
5. Я бы предположил, что он вообще не улавливает этого
VirtualHost
и использует значение по умолчаниюVirtualHost
(первое в конфигурации). Вы не должны использовать IP-адрес дляServerName
виртуального хостинга на основе имени. А также нет необходимости указывать IP вVIrtualHost
самой директиве. Использовал бы*:80
.