Can’t open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links

Thank you for reading this post, don't forget to subscribe!

Ошиб­ка выгля­дит так:

[codesyntax lang="php"]

[/codesyntax]

Can’t open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links

При­ве­ду пару солю­ше­нов, кото­рые нашел в ине­те. Пере­про­бо­вал несколь­ко из них — пофик­сил ишью.

Реше­ние №1

Пап­ка /var/run не име­ет сим­во­ли­че­ской ссыл­ки (symbolic link) для /run дирек­то­рии. Мож­но про­ве­рить это так:

ls -ld /var/run
drwxr-xr-x 12 root root 4096 Apr 29 22:10 /var/run

Так же, пап­ка /run име­ет­ся на сер­ве­ре, проверим:

# ls -ld /run
drwxr-xr-x 32 root root 980 Apr 29 22:12 /run

Так же, мож­но греп­нуть кон­фиг nginx:

# grep -ir pid /etc/nginx
/etc/nginx/nginx.conf.default:#pid /var/run/nginx.pid;
/etc/nginx/nginx.conf:#pid /var/run/nginx.pid;

А соб­ствен­но, реше­ние вот:

# mv /var/run /var/run_orig && ln -s ../run /var/run && ls -ld /var/run

Пере­за­пус­ка­ем сер­вер с nginx и это долж­но пофик­сить проблему.

У меня не решилось…

Реше­ние №2

Смот­рим что у нас в кон­фи­гах nginx:

# grep -ir pid /etc/nginx
/etc/nginx/nginx.conf:pid /run/nginx.pid;
/etc/nginx/nginx.conf:#pid /var/run/nginx.pid;

Нахо­дим строку:

pid /var/run/nginx.pid;

И меня­ем ее на:

pid /run/nginx.pid;

Мож­но исполь­зо­вать SED и сде­лать замену:

# sed -i 's/pid \/var\/run\/nginx.pid/pid \/run\/nginx.pid/' /etc/nginx/nginx.conf

Далее, откры­ва­ем:

# vim /lib/systemd/system/nginx.service

И меня­ем строку:

PIDFile=/var/run/nginx.pid

на

PIDFile=/run/nginx.pid

Что­бы изме­не­ния при­ме­ни­лись, выполняем:

# systemctl daemon-reload

Затем, пере­за­гру­жа­ем веб-сервер:

# service nginx restart

В ито­ге, получаем:

[codesyntax lang="php"]

[/codesyntax]

нор­маль­ное пове­де­ние такое:

[codesyntax lang="php"]

[/codesyntax]

Дан­ная про­бле­ма, может касать­ся не толь­ко nginx, но может затро­нуть mysql или fail2ban и воз­мож­но — дру­гие сервисы.