Thank you for reading this post, don't forget to subscribe!
Ошибка выглядит так:
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
(captain-notes)─(✗)─(10:08 PM Wed Apr 29) └─(/home)─(5 files, 28Kb)─> systemctl status nginx.service ● nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: activating (start) since Wed 2020-04-29 22:06:39 EEST; 1min 54s ago Docs: http://nginx.org/en/docs/ CGroup: /system.slice/nginx.service ├─2197 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf ├─2198 nginx: worker process ├─2199 nginx: worker process ├─2200 nginx: worker process ├─2201 nginx: worker process └─2202 nginx: cache manager process Apr 29 22:06:39 captain-notes systemd[1]: Starting nginx - high performance web server… Apr 29 22:06:39 captain-notes systemd[1]: Can't open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links |
[/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"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
┌(captain-notes)─(✓)─(10:12 PM Wed Apr 29) └─(/home)─(5 files, 28Kb)─> systemctl status nginx.service ● nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2020-04-29 22:12:24 EEST; 10s ago Docs: http://nginx.org/en/docs/ Process: 2996 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 2997 (nginx) CGroup: /system.slice/nginx.service ├─2997 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf ├─2998 nginx: worker process ├─2999 nginx: worker process ├─3000 nginx: worker process ├─3001 nginx: worker process ├─3002 nginx: cache manager process └─3003 nginx: cache loader process Apr 29 22:12:24 captain-notes systemd[1]: Starting nginx - high performance web server… Apr 29 22:12:24 captain-notes systemd[1]: Started nginx - high performance web server. |
[/codesyntax]
нормальное поведение такое:
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# strace /run/nginx.pid execve("/run/nginx.pid", ["/run/nginx.pid"], 0x7ffcaef1ce40 /* 29 vars */) = -1 EACCES (Permission denied) open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=2502, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8def0a3000 read(3, "# Locale name alias data base.\n#"..., 4096) = 2502 read(3, "", 4096) = 0 close(3) = 0 munmap(0x7f8def0a3000, 4096) = 0 open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8def0a3000 write(2, "strace: exec: Permission denied\n", 32strace: exec: Permission denied ) = 32 exit_group(1) = ? +++ exited with 1 +++ |
[/codesyntax]
Данная проблема, может касаться не только nginx, но может затронуть mysql или fail2ban и возможно — другие сервисы.