inicia o nginx na inicialização com o systemd

17

Acabei de instalar o nginx 1.9 em um servidor Debian 8. O nginx está funcionando bem, quando eu digo para ele rodar, mas parece não carregar o nginx automaticamente na inicialização.

Eu tentei vários scripts de inicialização recomendados na internet, mas nada funcionou ainda. Então agora eu estou tentando descobrir isso com o systemctl.

~$ systemctl status nginx
● nginx.service
   Loaded: masked (/dev/null)
   Active: inactive (dead)
~$ sudo systemctl try-restart nginx
Failed to try-restart nginx.service: Unit nginx.service is masked.
~$ sudo systemctl reload nginx
Failed to reload nginx.service: Unit nginx.service is masked.
~$ sudo systemctl reload nginx
Failed to reload nginx.service: Unit nginx.service is masked.

Infelizmente, não sei o que significa "serviço mascarado" e não sei por que ele está mascarado.

quando eu corro

sudo nginx

o servidor funciona bem. Então, olhei para desmascarar o serviço nginx.

~$ sudo systemctl unmask nginx.service
Removed symlink /etc/systemd/system/nginx.service.

ok legal, agora eu posso começar o nginx usando systemctl. Então, verifiquei se a reinicialização carregaria o nginx automaticamente. Mas isso não acontece, e eu não tenho ideia de para onde ir a partir daqui.

Alguém pode me ajudar a fazer o nginx rodar automaticamente na inicialização?

    
por j0h 20.05.2015 / 01:01

4 respostas

2

Aqui está o que funcionou para mim: link

Eu ignorei a maior parte do documento, que era específico para compilar outras versões, do nginx, e passei para "Make it Autostart".

Eu segui as instruções lá, e agora, quando eu reinicio, o nginx 1.9 está rodando.

Eu definitivamente agradeço a ajuda de todos, e insight. Obrigado a todos!

    
por 26.05.2015 / 02:56
20

Você parece confundir operações de ativação, início e máscara.

  • systemctl start , systemctl stop : inicia (pára) a unidade em questão imediatamente ;
  • systemctl enable , systemctl disable : marca (desmarca) a unidade para inicialização automática no momento da inicialização (de uma maneira específica da unidade, descrita na seção [Install] );
  • systemctl mask , systemctl unmask : desativa (permite) todas e quaisquer tentativas de iniciar a unidade em questão (manualmente ou como uma dependência de qualquer outra unidade, incluindo as dependências do destino de inicialização padrão). Observe que a marcação para autostart no systemd é implementada adicionando uma dependência artificial do destino de inicialização padrão à unidade em questão, portanto, "mask" também não permite a inicialização automática.

Então, todas essas são operações distintas. Destes, você quer systemctl enable .

Ref .: systemctl (1) .

Mais: Lennart Poettering (2011-03-02). "Os três níveis de folga" . systemd para administradores . 0pointer.de.

    
por 20.05.2015 / 08:23
1

Corrigido o link na resposta aceita para que ele redirecione para a página correta. Mas aqui está um pouco relevante:

sudo systemctl enable nginx.service
sudo systemctl start nginx.service
sudo systemctl status nginx.service

onde /lib/systemd/system/nginx.service é algo como:

# Stop dance for nginx
# =======================
#
# ExecStop sends SIGSTOP (graceful stop) to the nginx process.
# If, after 5s (--retry QUIT/5) nginx is still running, systemd takes control
# and sends SIGTERM (fast shutdown) to the main process.
# After another 5s (TimeoutStopSec=5), and if nginx is alive, systemd sends
# SIGKILL to all the remaining processes in the process group (KillMode=mixed).
#
# nginx signals reference doc:
# http://nginx.org/en/docs/control.html
#
[Unit]
Description=A high performance web server and a reverse proxy server
After=network.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed

[Install]
WantedBy=multi-user.target

'
    
por 31.10.2016 / 17:57
0

de recursos do nginx link

echo "
[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=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
" > /lib/systemd/system/nginx.service
    
por 26.12.2016 / 20:23