SystemdDoctor
служба не работает python права сокеты

uWSGI: веб-сервер не может писать в сокет

Сокет создаёт uWSGI, и права на него задаются его настройками, а не unit-файлом. Если веб-сервер не входит в группу-владельца, обращения к приложению заканчиваются ошибкой шлюза.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Права на сокет не позволяют запись веб-серверу

    По умолчанию сокет создаётся с правами владельца. Пользователь веб-сервера в них не попадает.

  2. Каталог сокета не создаётся при запуске

    Каталог в /run исчезает при перезагрузке. Без объявления через параметр systemd приложение не сможет создать сокет.

  3. Путь в настройках веб-сервера не совпадает

    Простая рассинхронизация: приложение создаёт сокет по одному пути, веб-сервер ищет по другому.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Права и владелец сокета.

sudo ls -l /run/myapp/

Проверка доступа от пользователя веб-сервера.

sudo -u www-data test -w /run/myapp/uwsgi.sock && echo доступ есть || echo отказ

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Права на сокет не позволяют запись веб-серверу
Почему происходит
По умолчанию сокет создаётся с правами владельца. Пользователь веб-сервера в них не попадает.
Как проверить
Посмотрите права сокета и настройки.
sudo ls -l /run/myapp/uwsgi.sock
grep -iE "chmod-socket|chown-socket|uid|gid" /etc/uwsgi/apps-enabled/myapp.ini 2>/dev/null
Как исправить
Задайте владельца и права сокета в настройках приложения: общая группа с веб-сервером и права 0660.
2. Каталог сокета не создаётся при запуске
Почему происходит
Каталог в /run исчезает при перезагрузке. Без объявления через параметр systemd приложение не сможет создать сокет.
Как проверить
Посмотрите каталог и параметр unit.
ls -ld /run/myapp 2>/dev/null
systemctl show myapp.service -p RuntimeDirectory
Как исправить
Объявите каталог через RuntimeDirectory=: systemd создаст его с нужным владельцем при каждом запуске.
3. Путь в настройках веб-сервера не совпадает
Почему происходит
Простая рассинхронизация: приложение создаёт сокет по одному пути, веб-сервер ищет по другому.
Как проверить
Сравните пути.
sudo nginx -T 2>/dev/null | grep uwsgi_pass
sudo ss -xln | grep uwsgi
Как исправить
Приведите пути к одному значению и перезагрузите настройки веб-сервера.

Пример вывода

Веб-сервер не может писать в сокет приложения. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

nginx[1121]: [crit] *12 connect() to unix:/run/myapp/uwsgi.sock failed (13: Permission denied) while connecting to upstream

$ sudo ls -l /run/myapp/uwsgi.sock
srw------- 1 app app 0 Sep 15 16:02 /run/myapp/uwsgi.sock

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация uWSGI: параметры сокета документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено сокетом с правами 0600 при обращении от веб-сервера.
    собственная проверка, systemd 255
    сверено 15 сентября 2026