Это казалось случайным событием: сегодня вечером сайт отключился, и после просмотра журналов ошибок Apache возникла следующая проблема:
(13)Permission denied: mod_wsgi (pid=2751): Unable to connect to WSGI daemon process 'mysite.com-ssl' on '/var/run/apache2/wsgi.2579.0.2.sock' after multiple attempts.
Теперь я читаю Конфигурация wiki для mod_wsgi, и исправление кажется разумным. Не удалось записать в этот каталог, поэтому необходимо указать альтернативу с помощью WSGISocketPrefix
Итак, я установил:
WSGISocketPrefix /var/run/wsgi
Это устраняет проблему, и сайт может загружаться после перезапуска Apache.
Однако мне очень любопытно - почему этот каталог перестал быть доступен для записи? Я что-то упускаю? В /var/run/apache2
каталог принадлежит root:root
, но новые сокеты, которые теперь работают под /var/run/wsgi*.sock
являются www-data:root
.. Была перезагрузка сервера, но все тут. Может быть, что-то теперь берет на себя права доступа к этому каталогу при загрузке?
Любые идеи? Спасибо!
Ошибка, которую вы видели, также может возникать как временная проблема, если вы выполнили изящный перезапуск Apache, а рабочий процесс Apache имел соединения с сокетами, которые еще не были подключены к процессу демона mod_wsgi для первоначального запроса или последующего запроса из-за сохранения активности на розетке.
Это произойдет, потому что при плавном перезапуске процесс демона mod_wsgi будет перезапущен независимо, и при этом путь к файлу сокета изменится так сильно. Это означает, что старые рабочие процессы, зависшие для обработки текущих запросов и запросов keepalive, не смогут подключиться к демону, поскольку они по-прежнему будут пытаться использовать старый путь для файла сокета.
Что касается каталога, в котором находятся файлы сокетов, важно, чтобы каталог был доступен для чтения www-data. Первоначально сокеты будут созданы как root с perms 0600, а затем право собственности должно быть изменено на www-data, чтобы рабочие процессы www-data могли подключаться и ничего больше. Это зависит от того, доступен ли каталог для www-данных.
Причина использования WSGISocketPrefix заключается в том, что Redhat создал каталог журналов, в котором конфигурация Apache сообщает, что этот материал следует использовать по умолчанию, чтобы его не могли читать другие, поэтому www-data не может видеть сокеты в каталоге. Вот почему в Redhat нужно изменить его на / var / run.
В какой момент права доступа к каталогу изменяются или фиксируются и может ли это случиться без обновления пакета Apache, не знаю.