2016-10-26 3 views
0

У меня есть простая конфигурация nginx, которая синтаксически правильная. Я устанавливаю nginx с помощью шеф-повара, и скрипт шеф-повара отлично работает.nginx не запускается - устранение неполадок

Но поскольку я проверяю статус nginx, я вижу, что он находится в состоянии отказа. Если я перезагружаю nginx, он снова переходит в состояние отказа. journalctl -xn также оленья кожа давать много ошибок, за исключением:

[[email protected] vagrant]# journalctl -xn 
-- Logs begin at Wed 2016-10-26 04:28:18 UTC, end at Wed 2016-10-26 04:45:00 UTC. -- 
Oct 26 04:45:00 localhost.localdomain kill[17003]: -s, --signal <sig>  send specified signal 
Oct 26 04:45:00 localhost.localdomain kill[17003]: -q, --queue <sig>  use sigqueue(2) rather than kill(2) 
Oct 26 04:45:00 localhost.localdomain kill[17003]: -p, --pid    print pids without signaling them 
Oct 26 04:45:00 localhost.localdomain kill[17003]: -l, --list [=<signal>] list signal names, or convert one to a name 
Oct 26 04:45:00 localhost.localdomain kill[17003]: -L, --table   list signal names and numbers 
Oct 26 04:45:00 localhost.localdomain kill[17003]: -h, --help  display this help and exit 
Oct 26 04:45:00 localhost.localdomain kill[17003]: -V, --version output version information and exit 
Oct 26 04:45:00 localhost.localdomain kill[17003]: For more details see kill(1). 
Oct 26 04:45:00 localhost.localdomain systemd[1]: nginx.service: control process exited, code=exited status=1 
Oct 26 04:45:00 localhost.localdomain systemd[1]: Unit nginx.service entered failed state. 
[[email protected] vagrant]# 

Nginx -t успешно, и я не вижу ничего в /var/log/nginx/errors.log

Есть ли другие способ устранения неполадок, почему это не удается?

И systemctl статус nginx.service дает:

[[email protected] vagrant]# systemctl status nginx.service 
nginx.service - The nginx HTTP and reverse proxy server 
    Loaded: loaded (/usr/lib/systemd/system/nginx.service; static) 
    Active: failed (Result: exit-code) since Wed 2016-10-26 04:45:00 UTC; 9h ago 
    Process: 17003 ExecStop=/bin/kill -s QUIT $MAINPID (code=exited, status=1/FAILURE) 
    Process: 16999 ExecStart=/opt/nginx-1.10.1/sbin/nginx (code=exited, status=0/SUCCESS) 
    Process: 16998 ExecStartPre=/opt/nginx-1.10.1/sbin/nginx -t (code=exited, status=0/SUCCESS) 
Main PID: 16999 (code=exited, status=0/SUCCESS) 

Oct 26 04:45:00 localhost.localdomain kill[17003]: -s, --signal <sig>  send specified signal 
Oct 26 04:45:00 localhost.localdomain kill[17003]: -q, --queue <sig>  use sigqueue(2) rather than kill(2) 
Oct 26 04:45:00 localhost.localdomain kill[17003]: -p, --pid    print pids without signaling them 
Oct 26 04:45:00 localhost.localdomain kill[17003]: -l, --list [=<signal>] list signal names, or convert one to a name 
Oct 26 04:45:00 localhost.localdomain kill[17003]: -L, --table   list signal names and numbers 
Oct 26 04:45:00 localhost.localdomain kill[17003]: -h, --help  display this help and exit 
Oct 26 04:45:00 localhost.localdomain kill[17003]: -V, --version output version information and exit 
Oct 26 04:45:00 localhost.localdomain kill[17003]: For more details see kill(1). 
Oct 26 04:45:00 localhost.localdomain systemd[1]: nginx.service: control process exited, code=exited status=1 
Oct 26 04:45:00 localhost.localdomain systemd[1]: Unit nginx.service entered failed state. 

systemctl кот nginx.service дает:

[[email protected] sysadmin]# systemctl cat nginx.service 
Unknown operation 'cat'. 

I CD CD/Библиотека/Systemd/системы и сделать кошку на nginx.service:

[[email protected] system]# cat nginx.service 
[Unit] 
Description=The nginx HTTP and reverse proxy server 
After=network.target remote-fs.target nss-lookup.target 

[Service] 
ExecStartPre=/opt/nginx-1.10.1/sbin/nginx -t 
ExecStart=/opt/nginx-1.10.1/sbin/nginx 
ExecReload=/bin/kill -s HUP $MAINPID 
ExecStop=/bin/kill -s QUIT $MAINPID 
PrivateTmp=true 

[Install] 

Если я делаю эхо $ MAINPID, я ничего не получаю.

+2

Похоже, что у вас есть ошибка не в вашей конфигурации nginx, а в вашем устройстве nginx systemd. Добавьте 'systemctl status nginx.service' и' systemctl cat nginx.service', пожалуйста. –

+0

@HardyRust - check edit – Scooby

+0

Похоже, по какой-то причине '$ MAINPID' является epmty при убийстве. Повторите попытку, 'systemctl cat nginx.service' должен распечатать сам блок. –

ответ

0

Это не очень хороший файл. Тип не установлен и по умолчанию simple, а вы хотите, чтобы вы forking для nginx. Это может быть причиной неправильного значения $MAINPID. Попробуйте использовать official unit:

[Unit] 
Description=The NGINX HTTP and reverse proxy server 
After=syslog.target network.target remote-fs.target nss-lookup.target 

[Service] 
Type=forking 
PIDFile=/run/nginx.pid 
ExecStartPre=/opt/nginx-1.10.1/sbin/nginx -t 
ExecStart=/opt/nginx-1.10.1/sbin/nginx 
ExecReload=/bin/kill -s HUP $MAINPID 
ExecStop=/bin/kill -s QUIT $MAINPID 
PrivateTmp=true 

[Install] 
WantedBy=multi-user.target 

Вы должны просто добавить его в /etc/systemd/system/nginx.service - этот каталог он предназначен для администраторов, созданных единиц, и имеет приоритет.

Смежные вопросы