anti1869
@anti1869

Ловлю 503 Service Temporarily Unavailable когда пытаюсь запустить mod_wsgi в daemon mode?

Коллеги, я не очень большой знаток апача и не могу победить следующую проблему:



Хочу настроить на виртуальном хосте mod_wsgi в режиме Daemon, чтобы мониторить изменения исходника приложения на Python. При обращении к серверу получаю ошибку 503 Service Temporarily Unavailable



В логе:

(13)Permission denied: mod_wsgi (pid=9400): Unable to connect to WSGI daemon process 'blabla.com' on '/var/run/wsgi.5619.0.1.sock' after multiple attempts.



Вот конфиг виртуалки:

<VirtualHost *:80><br>
	DocumentRoot /home/anti1869/blabla/http<br>
	CustomLog /var/log/apache2/anti1869/blabla/access.log combined<br>
	ErrorLog /var/log/apache2/anti1869/blabla/error.log<br>
	<IfModule peruser.c><br>
		ServerEnvironment anti1869 anti1869<br>
		Processor anti1869 anti1869<br>
	</IfModule><br>
#	<IfModule mod_suexec.c><br>
#		SuexecUserGroup anti1869 anti1869<br>
#	</IfModule><br>
#	<IfModule mod_suexec><br>
#		SuexecUserGroup anti1869 anti1869<br>
#	</IfModule><br>
	ServerName blabla.com<br>
	ServerAlias www.blabla.com<br>
	Alias /.awstats/icon /usr/share/awstats/wwwroot/icon<br><br>
	WSGIDaemonProcess blabla.com user=anti1869 group=anti1869 processes=2 threads=15 display-name=%{GROUP}<br>
	WSGIProcessGroup blabla.com<br>
</VirtualHost><br>




Я пытался указывать разные директории в директиве:

WSGISocketPrefix /var/run/wsgi

но все время происходит одна и та же ошибка



пытался и /tmp/wsgi и создавать свою директорию с правами 777 — та же фигня

Создается вот такой файл, но апач не может до него достучаться

srwx------ 1 apache root 0 Jul 2 15:57 wsgi.5619.0.1.sock



Подскажите что еще попроовать? Спасибо
  • Вопрос задан
  • 5232 просмотра
Пригласить эксперта
Ответы на вопрос 3
@alz
А почему у Вас нет директивы WSGIScriptAlias?

Вот кусок моего рабочего конфига
    WSGIDaemonProcess   pb      user=django python-path=/home/django/pb

    WSGIScriptAlias     /       /home/django/pb/pb/wsgi.py
    WSGIProcessGroup    pb
    
    Alias       /static/        /home/django/pb/static/

    <Directory /home/django/pb/pb>
        <Files wsgi.py>
            Order deny,allow
            Allow from all
        </Files>

        AuthName                NTAuth
        AuthType                NTLM
        NTLMAuth                on
        NTLMBasicAuth           on
        NTLMAuthHelper          "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp"
        NTLMBasicAuthoritative  on
        Require                 valid-user
        Satisfy                 all
    </Directory>
Ответ написан
anti1869
@anti1869 Автор вопроса
alz, WSGIScriptAlias нет, потому как пока что аппликейшн у меня маппится вот так через .htaccess:

<Files code.py>
    SetHandler wsgi-script
    Options ExecCGI FollowSymLinks
</Files>


Я пока не разбирался плохо это или хорошо — просто скопировал из туториала фреймворка web.py

Похоже проблема в том, что на моем сервере используется Peruser MPM.
Вот эта директива
ServerEnvironment anti1869 anti1869
запускает процессы из под моего пользователя, а апач создает файл сокета для пользователя apache:root
Соответственно, они не стыкуются и mod_wsgi не может с этим справиться.

Я попробовал поставить ServerEnvironment apache root
503 исчезла, но потенциальный гемор с правами доступа не позволяет назвать это решением.

ServerEnvironment anti1869 anti1869
Ответ написан
Комментировать
anti1869
@anti1869 Автор вопроса
В общем, все верно. Для того чтобы mod_wsgi работал в Daemon Mode апач должен быть скомпилирован либо с prefork MPM, либо worker MPM. На моем сервере стоял peruser MPM — с ним mod_wsgi в настоящее время не совместим. Пришлось пересобрать апач
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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