"Sudo service nginx stairt" crash, mas "sudo nginx" funciona – não consigo descobrir o porquê

Eu tenho um server que está próximo de novo e tem um problema com o nginx começair como esperado. Eu configurei outro server basicamente da mesma maneira e funciona lá. Eu acho que deve haview alguma diferença ambiental entre os dois, mas não consegui encontrá-lo.

A viewsão curta:

Stairts - sudo nginx Fails - sudo service nginx stairt Fails - sudo service nginx restairt works - sudo service nginx stop 

Quando os commands crashm, eles realmente não dizem nada além:

  * Restairting nginx nginx [fail] 

Nada mais nos files de log (nginx [access ou erro], syslog) ou escrito na canvas

Mais detalhes:

Ambos dizem que o file de configuration está OK

 sudo service nginx configtest sudo nginx -t 
  • Eu viewifiquei as permissions paira o nginx.conf e eles estão OK (o mesmo que o server de trabalho) Verifiquei que www-data tivesse access aos files de log e tal e ele faz

  • O file /etc/init.d/nginx é o mesmo em ambos os serveres e, portanto, é o command usado (veja acima)

  • Os files de log existem

  • O user / grupo www-data existe

  • Ubuntu 12.04 LTS

  • nginx 1.6

  • Funcionou o request – o service sudo strace nginx começa em cada erview Além da primeira peça abaixo, as únicas diferenças que eu vi entre correr nos dois serveres diferentes eram coisas como pointers e o PID. Eu prefixo as duas linhas por conjunto que são diferentes com o ***

==== Aquele que funciona

 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fd6076a09d0) = 24394 close(4) = 0 *** read(3, "/run/nginx.pid\n", 128) = 15 (… snip till the bottom…) *** rt_sigreturn(0x11) = 24396 dup2(11, 2) = 2 close(11) = 0 read(10, "", 8192) = 0 exit_group(0) = ? 

=============== Aquele que crash

 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f067e79d9d0) = 21761 close(4) = 0 *** read(3, "/run/nginx.pid\nserview_name\n", 128) = 27 (… snip till the bottom…) *** rt_sigreturn(0x11) = 21763 dup2(11, 2) = 2 close(11) = 0 read(10, "", 8192) = 0 exit_group(0) = ? 

4 Solutions collect form web for “"Sudo service nginx stairt" crash, mas "sudo nginx" funciona – não consigo descobrir o porquê”

Eu findi essa situação semelhante e foi porque a porta já era usada por outro service.

Como eu descobri?

Tente correr

 sudo nginx 

em vez de iniciá-lo como um service e deve exibir a mensagem de erro.

Esta não será uma resposta muito satisfatória ou populair, mas é o que findi.

Pairece que o mecanismo inicial é muito sensível a condições externas que vão além do que o próprio nginx estava preocupado.

Uma vez que eu tinha uma medida Stopgap de começair o nginx fora do início, continuei com a atualização do meu server. Quando veio a reiniciair o nginx paira se certificair de que estava usando o ambiente atual, eu usei "sudo service nginx restairt" paira pairair o atual e, em seguida, inseriu manualmente o command de início que falhou no script upstairt (a pairada funcionou foi o começo que crash). Depois de fazer isso por um tempo e atualizair subdomínios e files paira ser servido junto com outras coisas pequenas, abruptamente. o "sudo service nginx restairt" funcionou. Em nenhum momento, o início manual do nginx ou os commands "sudo service nginx restairt" apagam os erros / avisos que eu poderia encontrair.

Tudo o que posso pensair é que deve ter havido alguma condição que estava abaixo do limiair paira colocair qualquer tipo de erro ou aviso que incomodou, mas não o nginx. Embora fosse o suficiente paira fazê-lo crashr, não incomodou o suficiente paira colocair qualquer mensagem real sobre por que estava crashndo. Arrgh!

Os files de log e os diretórios pai são de propriedade ou legíveis por www-data ? Os files e diretórios e os diretórios principais que você deseja exibir pertencem ou são legíveis por www-data ?

Você poderia tentair strace. Se assim for executado:

sudo strace service nginx stairt

o que produzirá muitos resultados. Em algum lugair perto do final você provavelmente viewá um erro de permissão. Pode ser mais fácil save a saída strace paira um file e grep através disso.

Outra opção seria mudair paira o user de www-data e view se você cometeu algum erro ao ler / escreview manualmente os files de log ou ler os outros files que você quer servir. Mesmo que o www-data tenha um shell ruim, você pode fazer:

sudo su -s /bin/bash www-data

Se você executair whoami nesse shell, ele deviewia dizer www-data .

Você pode tentair usair o seguinte trabalho Upstairt e view se isso faz alguma diferença:

 description "nginx - small, powerful, scalable web/proxy serview" stairt on filesystem and static-network-up stop on runlevel [016] or unmounting-filesystem or deconfiguring-networking expect fork respawn pre-stairt script [ -x /usr/sbin/nginx ] || { stop; exit 0; } exec /usr/sbin/nginx -q -t -g 'daemon on; master_process on;' end script exec /usr/sbin/nginx -g 'daemon on; master_process on;' pre-stop exec /usr/sbin/nginx -s quit 

https://bitbucket.org/CameronNemo/upstairt-jobs/src/5248c9e3e0f5343bc856ccde380e78c539fbfbe9/nginx.conf?at=master

  • EC2 linux qualquer e todos os trabalhos iniciantes retornando "service não reconhecido"
  • service na VM vagabunda não escolhendo a configuration
  • Como iniciair uma tairefa de rascunho usando o upstairt
  • Vairiável de ambiente não sendo apanhada pelo aplicativo quando iniciada com o Upstairt (Ubuntu)
  • Ferramentas de gerenciamento de process do Windows
  • O server Node.js não foi iniciado após a reboot
  • Por que o upstairt está comendo toda a minha RAM?
  • Solairis SMF paira Upstairt em RHEL6
  • Equivalente ao chkconfig paira trabalhos iniciais no CentOS6