Serviço Nginx se comportando mal, systemd vs upstart?

1

Eu tenho o Ubuntu 16.04 LTS e usei este guia para criar o Nginx com este módulo LDAP .

Acredito que meu problema é que o guia usa um script antigo /etc/init.d que não funciona tão bem com o 16.04. Eu então tentei este novo script para systemd que tipo de funciona, mas estou recebendo algum comportamento de serviço estranho.

Atualmente, posso "systemctl start nginx" e o serviço é iniciado (o servidor web funciona), mas tenho que usar ctrl-c para recuperar meu comando. "systemctl status nginx" mostrará isso abaixo. "systemctl stop nginx" não pára o servidor da web nginx. Para parar nginx eu tenho que "systemctl kill nginx". Eu descobri que o arquivo /usr/local/nginx/logs/nginx.pid estava faltando, mas criá-lo sozinho não corrigiu esse erro.

A partir daqui estou meio perdido, como faço para corrigir isso?

    ● nginx.service - LSB: nginx init.d dash script for Ubuntu or other *nix.
   Loaded: loaded (/etc/init.d/nginx; bad; vendor preset: enabled)
   Active: activating (start) since Thu 2018-04-05 15:44:43 EDT; 48s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 28806 ExecStart=/etc/init.d/nginx start (code=exited, status=0/SUCCESS)
    Tasks: 2
   Memory: 9.2M
      CPU: 29ms
   CGroup: /system.slice/nginx.service
           ├─28815 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.con
           └─28816 nginx: worker process                   

Apr 05 15:44:43 ubuntu systemd[1]: Starting LSB: nginx init.d dash script for Ubuntu or other *nix....
Apr 05 15:44:43 ubuntu nginx[28806]:  * Starting Nginx Server...
Apr 05 15:44:43 ubuntu nginx[28806]:    ...done.
Apr 05 15:44:43 ubuntu systemd[1]: nginx.service: PID file /usr/local/nginx/logs/nginx.pid not readable (yet?) after start: No such file or directory
    
por maxburn 05.04.2018 / 21:53

1 resposta

1

De acordo com sua saída publicada, você não está usando uma unidade de serviço systemd, mas ainda usando o script init.d.

Possivelmente você não adicionou a unidade de serviço corretamente e recarregou o systemd, ou seu script init.d antigo está interferindo, ou você está fazendo algo em sua unidade de serviço que você não está mostrando. Esse não deve ser o comportamento do arquivo systemd que você postou.

Se o conteúdo da sua unidade de serviço systemd publicada estiver de fato na posição correta place ( /etc/systemd/system/nginx.service ), e você emitiu o comando systemctl daemon-reload para carregar a nova unidade de serviço e, em seguida, tente remover seu arquivo nginx init.d ( /etc/init.d/nginx ) ou removê-lo se não precisar dele mais.

A chave aqui é a linha no topo da saída de status, "Loaded", que indica o script sendo usado. Você quer ter certeza de que a saída lhe diz que está usando o systemd. Olhando para a unidade de serviço nginx que você postou, ela deve se comportar corretamente, desde que você defina o PIDFile para o local adequado.

    
por 05.04.2018 / 22:19