Задать вопрос
@inklink

Как настроить mod_wsgi для Apache на Windows XP?

Доброго времени суток! Я новичок в веб-разработке от слова "совсем", так что прошу извинить, если что не так) Пытаюсь создать первое приложение на джанго по джангобуку. Использую: виндовс XP, питон 2.7, джанго 1.8, апач 2.2 (через денвер). Поставил mod_wsgi, прописал в httpd.conf "LoadModule wsgi_module modules/mod_wsgi.so".
Далее джангобук говорит:
после того как вы установите и активируете mod_wsgi отредактируйте файл httpd.conf веб-сервера Apache, изменив его следующим образом. Если вы используете Apache версии ниже чем 2.4, замените Require all granted` на Allow from all и добавьте выше Order deny,allow.
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonPath /path/to/mysite.com

<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

И тут начинаются проблемы. Т.к. wsgi.py у меня лежит в c:/webservers/home/mycode/mysite, то прописываю в самом конце httpd.conf (может не там прописываю?)
WSGIScriptAlias / /home/mycode/mysite.com/mysite/wsgi.py
WSGIPythonPath /home/mycode/mysite.com

<Directory /home/mycode/mysite.com/mysite>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>

В результате денвер выдаёт:
You don't have permission to access /Tools/phpmyadmin/index.php on this server.
Подсказка Денвера

Возможные причины ошибки:
Вы пытаетесь запустить CGI-скрипт, расположив его вне CGI-директории (например, в директории документов сервера www). Корректные пути к CGI-директориям следующие:
URL Куда указывает
http://***/cgi-glob/script.cgi /home/cgi-glob/script.cgi
http://***/cgi/script.cgi /home/***/cgi/script.cgi
http://***/cgi-bin/script.cgi /home/***/cgi-bin/script.cgi
При большом желании вы все же можете запускать скрипты и из www-директории. Для этого создайте в ней файл .htaccess (с точкой в начале) следующего содержания:

Options +ExecCGI
Возможно, вы пытаетесь открыть картинку или статический HTML-файл, расположенный в CGI-директории. Этого делать нельзя. Все рисунки (а также другие файлы, за исключениям скриптов) необходимо помещать в www-директорию. См. примеры по адресу /home/localhost/www.
Если вы ожидаете получить листинг каталога, но выводится эта ошибка, вероятно, для данной директории выдача листинга запрещена (например, это CGI-папка). Чтобы разрешить листинг, создайте в нужной директории файл .htaccess следующего содержания:
Options +Indexes


Создаю .htaccess в c:\webservers с содержанием Options +ExecCGI, тогда:
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, admin@example.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Подсказка Денвера

Вероятнее всего, скрипт, который запускает данная страница, не смог корректно выполниться. Детально причины ошибки должны быть описаны в файле Z:/home/localhost/error.log.
Вот наиболее частые причины 500-й ошибки:

В скрипте имеются ошибки. Например, каждый скрипт должен выводить заголовок Content-Type перед началом печати страницы. Подробнее об этом читайте в статье Борьба с 500-й Ошибкой закончилась.
Корректные пути к CGI-директориям следующие:

URL Куда указывает
http://***/cgi-glob/script.cgi /home/cgi-glob/script.cgi
http://***/cgi/script.cgi /home/***/cgi/script.cgi
http://***/cgi-bin/script.cgi /home/***/cgi-bin/script.cgi
Вы не установили некоторые библиотеки, которые необходимы скрипту. Для Perl-скриптов: установите пакет с библиотеками Perl, который доступен по адресу dklab.ru/chicken/web/packages/perl.html.
Вы указали неправильную первую строчку в скрипте, по которой Apache определяет путь к интерпретатору. Первая строка должна быть:
для Perl:
#!/usr/bin/perl -w
или
#!/usr/local/bin/perl -w
для PHP:
#!/usr/bin/php
или
#!/usr/local/bin/php
Здесь указывается путь относительно корня до файлов perl.exe и php.exe соответственно (расширение exe и буква диска опускаются для совместимости с Unix). Проверьте, чтобы до этой строке в скрипте ничего не было (в том числе и комментариев).
Хотя Денвер поддерживает оба варианта, заметьте также, что PHP-скрипты удобнее запускать из-под mod_php, встроенного в Apache, а не через внешнюю программу php.exe. Для использования mod_php просто поместите PHP-скрипт в www-директорию (а не в директорию с CGI-скриптами).

В текущей директории расположен файл .htaccess с ошибочными директивами. Например, Apache в Денвере не поддерживает устаревший модуль mod_charset, имеющийся у некоторых хостеров, и расценивает директивы вроде CharsetDisable как ошибочные. Для того, чтобы исправить ситуацию, отредактируйте файл .htaccess, чтобы он выглядел примерно так:

CharsetRecodeMultipartForms off
# и другие директивы mod_charset


А в логах апача такое:
[Thu Apr 30 21:40:55 2015] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
[Thu Apr 30 21:40:56 2015] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
[Thu Apr 30 21:40:56 2015] [warn] mod_wsgi: Compiled for Python/2.7.9+.
[Thu Apr 30 21:40:56 2015] [warn] mod_wsgi: Runtime using Python/2.7.9.
[Thu Apr 30 21:40:56 2015] [notice] Apache/2.2.22 (Win32) mod_ssl/2.2.22 OpenSSL/1.0.1c mod_wsgi/4.4.11 Python/2.7.9 PHP/5.3.13 configured -- resuming normal operations
[Thu Apr 30 21:40:56 2015] [notice] Server built: Apr 20 2012 18:42:30
[Thu Apr 30 21:40:56 2015] [notice] Parent: Created child process 5880
[Thu Apr 30 21:40:56 2015] [notice] Disabled use of AcceptEx() WinSock2 API
[Thu Apr 30 21:40:56 2015] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
[Thu Apr 30 21:40:57 2015] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
[Thu Apr 30 21:40:57 2015] [warn] mod_wsgi: Compiled for Python/2.7.9+.
[Thu Apr 30 21:40:57 2015] [warn] mod_wsgi: Runtime using Python/2.7.9.
[Thu Apr 30 21:40:57 2015] [notice] Child 5880: Child process is running
[Thu Apr 30 21:40:57 2015] [notice] Child 5880: Acquired the start mutex.
[Thu Apr 30 21:40:57 2015] [notice] Child 5880: Starting 25 worker threads.
[Thu Apr 30 21:40:57 2015] [notice] Child 5880: Listening on port 443.
[Thu Apr 30 21:40:57 2015] [notice] Child 5880: Listening on port 8648.
[Thu Apr 30 21:40:57 2015] [notice] Child 5880: Listening on port 443.
[Thu Apr 30 21:40:57 2015] [notice] Child 5880: Listening on port 80.
[Thu Apr 30 21:40:57 2015] [error] [client 127.0.0.1] Z:/home/mycode/mysite/mysite/wsgi.py is not executable; ensure interpreted scripts have "#!" or "'!" first line, referer: localhost/denwer
[Thu Apr 30 21:40:57 2015] [error] [client 127.0.0.1] (9)Bad file descriptor: don't know how to spawn child process: Z:/home/mycode/mysite/mysite/wsgi.py, referer: localhost/denwer


Что делать дальше? Как настроить-то этот mod_wsgi? Ещё как-то изменить .htaccess? Или может из-за самого денвера проблема и лучше снести его и поставить апач напрямую?

Пардон за многабукаф, но я уже всю голову сломал, помогите, плиз!
Заранее спасибо всем, кто откликнется.
  • Вопрос задан
  • 1318 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
sim3x
@sim3x
Для разработки на джанго не нужен апач python manage runserver
Для продакшена - не нужен апач и винда
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы