Como impedir que o nginx seja iniciado automaticamente na instalação?

1

Estou tentando instalar o Nginx no Ubuntu 16.04 através do seguinte comando: sudo apt-get install nginx

Mas estou recebendo o seguinte erro:

Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
invoke-rc.d: initscript nginx, action "start" failed.
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2017-07-11 16:41:31 UTC; 6ms ago
  Process: 17851 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=1/FAILURE)
 Main PID: 31524 (code=exited, status=0/SUCCESS)

Jul 11 16:41:31 vm systemd[1]: Starting A high performance web server and a reverse proxy s...r...
Jul 11 16:41:31 vm nginx[17851]: nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (2: N...ory)
Jul 11 16:41:31 vm nginx[17851]: nginx: configuration file /etc/nginx/nginx.conf test failed
Jul 11 16:41:31 vm systemd[1]: nginx.service: Control process exited, code=exited status=1
Jul 11 16:41:31 vm systemd[1]: Failed to start A high performance web server and a reverse ...ver.
Jul 11 16:41:31 vm systemd[1]: nginx.service: Unit entered failed state.
Jul 11 16:41:31 vm systemd[1]: nginx.service: Failed with result 'exit-code'.
Hint: Some lines were ellipsized, use -l to show in full.
dpkg: error processing package nginx-core (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of nginx:
 nginx depends on nginx-core (>= 1.10.3-0ubuntu0.16.04.1) | nginx-full (>= 1.10.3-0ubuntu0.16.04.1) | nginx-light (>= 1.10.3-0ubuntu0.16.04.1) | nginx-extras (>= 1.10.3-0ubuntu0.16.04.1); however:
  Package nginx-core is not configured yet.
  Package nginx-full is not installed.
  Package nginx-light is not installed.
  Package nginx-extras is not installed.
 nginx depends on nginx-core (<< 1.10.3-0ubuntu0.16.04.1.1~) | nginx-full (<< 1.10.3-0ubuntu0.16.04.1.1~) | nginx-light (<< 1.10.3-0ubuntu0.16.04.1.1~) | nginx-extras (<< 1.10.3-0ubuntu0.16.04.1.1~); however:
  Package nginx-core is not configured yet.
  Package nginx-full is not installed.
  Package nginx-light is not installed.
  Package nginx-extras is not installed.

dpkg: error processing package nginx (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
  Errors were encountered while processing:
 nginx-core
 nginx

Acho que está tentando iniciar o nginx automaticamente por padrão após a instalação, mas não consegue encontrar os arquivos de configuração do nginx. Como posso impedir que ele seja iniciado automaticamente logo após a instalação, para que meu comando apt-get install não falhe.

    
por soham 11.07.2017 / 18:44

1 resposta

1

Em distribuições baseadas em Debian, o padrão infeliz para serviços na instalação é iniciado e ativado. Isso geralmente faz com que o problema de erro terrível ocorra na instalação de serviços que não contêm configuração padrão de ponta a ponta, bem como um monte de lixo ao usar produtos CM que lêem um fluxo de saída diretamente, como Ansible.

Você pode alterar este padrão de pacote, mas isso exigirá que você reembale o aplicativo (neste caso, nginx) na máquina localmente ou por meio de algo com um serviço de espelhamento, como Foreman ou Satellite.

Pessoalmente, resolvo isso usando o CentOS sempre que posso, o que tem um padrão razoável de "parado e desativado". Essa não é uma solução muito universal.

Use os seguintes passos para reembalar o pacote deb:

1: extrair o pacote deb

'# dpkg-deb -x <package.deb> <dir>'

2: extrair informações de controle de um pacote

'# dpkg-deb -e <package.deb> <dir/DEBIAN>'
  1. Após a conclusão de qualquer alteração de pacote, reembale o deb

# dpkg-deb -b <dir> <new-package.deb>

  1. Você pode instalar esse deb localmente ou adicioná-lo a um serviço espelho (se tiver isso).

Como alternativa, aqui está um método inteligente para contornar esse problema que estou descaradamente sendo extraído de major.io . Ele age como um interruptor que você pode ligar e desligar para impedir que novos pacotes iniciem seus serviços. Lembre-se de que isso NÃO "desativa" esses serviços, portanto, uma reinicialização os tornará iniciados, a menos que você os defina explicitamente como desativados de antemão:

Se você quiser impedir que os daemons iniciem após a instalação de um pacote, basta lançar algumas linhas em /usr/sbin/policy-rc.d:

cat > /usr/sbin/policy-rc.d < < EOF
#!/bin/sh
echo "All runlevel operations denied by policy" >&2
exit 101
EOF

Agora, instale todos os pacotes necessários e os daemons permanecerão parados até que você os inicie (ou reinicialize o servidor). Lembre-se de remover o arquivo de política que você adicionou depois de concluir a instalação dos seus pacotes.

Se você estiver usando isso com algo como Ansible, será fácil ativar e desativar a pré e pós-execução. Ele também irá parar o problema do erro de vomitar quando instalar pacotes Debian.

    
por 13.07.2017 / 00:06

Tags