Can't open PID file /run/nginx.pid (yet?

Здравствуйте коллеги!
Прошу подсказки.

Стоит система debian 11. Пакет nginx mainline 1.21.5 поставлен из официального репа.
Nginx работает от пользователя www-data. Виртуалхост настроен. Сервис запускается, но PID-файл - с ним какая-то беда.
Он находится тут /run/nginx.pid - при старте сервиса он создаётся, но дальше этого никуда "не уходит".

Если выполнить команду
systemctl status nginx

Получаю такой вывод:
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-01-03 23:49:05 +07; 7min ago
       Docs: https://nginx.org/en/docs/
    Process: 17804 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 17805 (nginx)
      Tasks: 2 (limit: 2353)
     Memory: 1.6M
        CPU: 15ms
     CGroup: /system.slice/nginx.service
             ├─17805 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
             └─17806 nginx: worker process

Jan 03 23:49:05 cloud systemd[1]: Starting nginx - high performance web server...
Jan 03 23:49:05 cloud systemd[1]: nginx.service: Can't open PID file /run/nginx.pid (yet?) after start: Operation not permitted
Jan 03 23:49:05 cloud systemd[1]: Started nginx - high performance web server.


Я так полагаю дело в этой заразе Can't open PID file /run/nginx.pid (yet?) after start: Operation not permitted
Смотрю вывод программы ss -tulnp - nginx не слушает ничего.

Думал может дело в apparmor - не. Отключил его - тоже самое. Включил его, создал профили для nginx - та же ерунда.

Прочитал кучу статей о том, чтобы пид-файл перенести в другое место - не помогает.

PID-файл читает родительский процесс NGINX, поэтому у него 100% должен быть доступ к нему. Да-к ведт и создается и уничтожается при перезапуске процесса, а в статусе во что показывает:
Can't open PID file /run/nginx.pid (yet?) after start: Operation not permitted


Делал даже так: 61d33a6888359138746635.png

Кто сталкивался с этим ? Как решили ?
  • Вопрос задан
  • 2645 просмотров
Пригласить эксперта
Ответы на вопрос 1
dimitrius86
@dimitrius86 Автор вопроса
DevOps
Если в /lib/systemd/system/nginx.service
добавить это:
ExecStartPost=/bin/sh -c 'umask 022; pgrep nginx > /var/run/nginx.pid'

то ошибка исчезает.
НО! Сервер не слушает ни 80: ни 443 порт... Опять же, определил с помощью программы ss -tulnp
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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