Como posso descobrir por que meu php5-fpm falhou ao iniciar?

10

eu recebo 504 tempo limite do gateway quando tento acessar meu servidor uma pequena checagem não encontrou nenhum log nos logs do php5-fpm, mas apenas para ter certeza, eu tentei reiniciá-lo. quando estou tentando reiniciá-lo:

sudo service php5-fpm restart

eu recebo [fail] mas quando eu faço

sudo service php5-fpm stop
sudo service php5-fpm start

não recebo erros.

como posso investigá-lo se não houver registros? o que posso fazer?

    
por Liad Livnat 15.09.2013 / 10:32

6 respostas

16

Você verificou seu arquivo error_log para php-fpm ? A localização desse arquivo deve ser declarada em seu php-fpm.conf (na configuração do Ubuntu é /etc/php5/fpm/php-fpm.conf, o arquivo de log é / var / log / php5-fpm / log), verifique também o seu log_level , se estiver desativado (; log_level), ative-o e altere-o para o debug . Depois disso, tente reiniciar o serviço php5-fpm e verificar seus logs.

Você também pode tentar executar o php5-fpm no modo de primeiro plano:

# php5-fpm -y /etc/php5/fpm/php-fpm.conf

Talvez isso mostre algo interessante.

    
por 15.09.2013 / 11:41
3

Procedimento de solução de problemas padrão:

  • Verifique o arquivo de log. Se você não sabe onde está, verifique a configuração ou descubra o pid com ps aux | grep php-fpm , então faça lsof -p $PID | grep log (omitir o grep se ele não mostrar nada).
  • 99% dos arquivos de registro de tempo mostrarão a causa. Caso contrário, procure um nível de registro na configuração, aumente e tente novamente.
  • Talvez ele seja encerrado instantaneamente e você não consiga fazer com que o PID inspecione o processo. Você também pode tentar iniciar o processo em primeiro plano, mas isso significa descobrir quais opções de linha de comando você precisa usar. Normalmente você só precisa apontar para a sua configuração existente.
  • Se nem o arquivo de log ou stdout / stderr (saída de primeiro plano) contiver nenhuma pista, é hora de strace ... mas isso é outro post.
por 15.09.2013 / 13:05
3

Esta nota me ajudou: link

No meu caso, atualizando para nginx > 1.6.1 os parâmetros que são passados para php5-fpm estão localizados em fastcgi.conf ao invés de em fastcgi_params, resultando em um PHP que sempre retorna 200 (ok), mas nunca em qualquer conteúdo, pois o SCRIPT_FILENAME não estava mais configurado.

Espero que também ajude alguém.

    
por 18.12.2014 / 13:49
1

Para mim, o problema era que meu arquivo php-fpm.conf não estava usando o nome de arquivo de configuração padrão - foi nomeado /etc/php5/fpm/php5-fpm.conf ( php5-fpm.conf vs php-fpm.conf )

php5-fpm -t  

[26-Jul-2014 22:39:16] ERROR: failed to open configuration file '/etc/php5/fpm/php-fpm.conf': No such file or directory (2)
[26-Jul-2014 22:39:16] ERROR: failed to load configuration file '/etc/php5/fpm/php-fpm.conf'
[26-Jul-2014 22:39:16] ERROR: FPM initialization failed

Eu renomei o arquivo conf para php-fpm.conf e isso resolveu o problema.

sudo mv /etc/php5/fpm/php5-fpm.conf /etc/php5/fpm/php-fpm.conf
sudo service php5-fpm restart
 * Restarting PHP5 FastCGI Process Manager php5-fpm                                                                           [ OK ]
    
por 26.07.2014 / 12:43
0

Eu experimentei esse problema sem arquivos de log e notei que estava acessando a URL por HTTPS em vez de HTTP e esse protocolo não tinha sido configurado no Nginx, então o PHP5-FPM não estava recebendo o tráfego.

Pode ajudar alguém.

    
por 25.02.2015 / 13:58
0

Pode acontecer que em um dist-upgrade do Ubuntu o pacote php5-fpm seja desinstalado porque o php 7 usa php-fpm. tente executar isso no console:

php5-fpm

Se não existir você provavelmente já usa o php 7, então instale

apt-get install php-fpm

que instalará a versão do php7

    
por 05.05.2017 / 07:48
___ qstnhdr __ stunnel vpn tráfego e garantir que se parece com o tráfego SSL na porta 443 ______ qstntxt ___

Estou tentando fazer com que meu tráfego de entrada e saída pareça o mais legítimo possível perto do tráfego SSL. Existe uma maneira de proteger meu próprio tráfego para garantir que ele se pareça com o tráfego SSL e não com o tráfego do OpenVPN? E com base na configuração da minha configuração, todo o tráfego usa a porta 443, que é a porta SSL?

Minha configuração é a seguinte:

STUNNEL no laptop:

%pre%

OPENVPN CONFIG NO laptop:

%pre%

CONFIGURAÇÃO DO STUNNEL NO SERVIDOR:

%pre%

OPENVPN CONFIG no servidor:

%pre%     
______ azszpr681497 ___

OpenVPN por TLS

Sua VPN está usando o TCP como um protocolo de transporte. A instância stunnel é usada para encapsular o conteúdo do fluxo TCP em TLS / TCP. Você obtém esta pilha de protocolos:

%pre%

Entre as instâncias do stunnel, você tem essa pilha de protocolos no fio:

%pre%

Como o TLS criptografa sua carga útil, um invasor só consegue ver:

%pre%

Então, sim, é um tráfego TLS simples (pode ser HTTP / TLS, SMTP / TLS, POP / TLS ou qualquer outra coisa para alguém que esteja olhando para o tráfego, mas se parece muito com HTTP / TLS, pois a porta TCP 443 é usava). Você pode verificar isso usando wireshark: registre o tráfego entre as instâncias do stunnel. Na interface do usuário wireshark (botão direito em um pacote do fluxo), você pode solicitar ao wireshark para interpretar o tráfego como TLS: ele o reconhecerá como tráfego TLS (você verá as diferentes mensagens TLS, mas não a carga útil da sessão TLS) .

Você pode querer usar SNI no cliente para parecer com o que um navegador moderno faria Faz. Você pode querer usar o ALPN , mas stunnel atualmente não lida com isso.

OpenVPN com TLS incorporado

Em comparação, se você estiver usando o OpenVPN, você terá algo assim:

%pre%

Que se parece com isso:

%pre%

A camada TLS incorporada não encapsula os pacotes (IP, Ethernet), mas é usada apenas para configurar a sessão e autenticar:

%pre%

Nesse caso, o tráfego não parece um tráfego TLS simples, mas é obviamente o OpenVPN. Se você interpretar esse tráfego como OpenVPN no wireshark, você reconhecerá as mensagens OpenVPN e dentro delas as mensagens TLS (mas não a carga útil).

Aviso

Você deve estar ciente de que, se um invasor passivo não puder dizer que seu servidor remoto é, na verdade, um servidor OpenVPN, um invasor ativo poderá descobrir isso: simplesmente conectando-se ao seu servidor por TLS, ele será capaz de confirmar que é não um servidor HTTP / TLS. Ao tentar falar o protocolo OpenVPN, ele será capaz de detectar que seu servidor é um servidor OpenVPN / TLS.

OpenVPN sobre TLS com autenticação de cliente

Se você está preocupado com isso, é possível ativar a autenticação de cliente TLS: um invasor não poderá iniciar uma sessão de TLS em funcionamento e não poderá adivinhar qual carga útil será encapsulada por TLS.

* Aviso: ** Eu não estou falando sobre o suporte ao TLS embutido no OpenVPN (veja acima para explicação sobre por que ele não irá ajudá-lo).

OpenVPN / TLS e HTTP / TLS multiplexados

Outra solução é servir HTTP e OpenVPN na sessão TLS. sslh pode ser usado para detectar automaticamente a carga útil do protocolo e despachar para um servidor HTTP / TCP simples ou Servidor OpenVPN / TCP. O servidor será parecido com o servidor HTTP / TLS padrão, mas alguém que tente falar OpenVPN / TLS com esse servidor será capaz de detectar que ele também é um servidor OpenVPN / TLS.

%pre%

OpenVPN sobre HTTP CONNECT over TLS

Outra solução é usar um servidor HTTP / TLS padrão e usar HTTP CONNECT / TLS para conectar-se ao servidor OpenVPN: ele se parecerá com um servidor HTTP padrão. Você pode até mesmo exigir autenticação do cliente para autorizar a solicitação HTTP CONNECT (o squid deve poder fazer isso).

O OpenVPN tem a opção de usar um proxy HTTP:

%pre%

Você deve conseguir combinar isso com uma instância stunnel conectando-se a um HTTPS PROXY remoto:

%pre%

Qual implementaria essa pilha de protocolos:

%pre%     
______ azszpr681636 ___

A resposta do ysdx é ótima e descreve muito bem como o tráfego ficará no fio.

Não mencionado, no entanto, é que a análise de tráfego pode percorrer um longo caminho para a identificação de aplicativos.

Vamos supor que sua conexão com o OpenVPN se pareça com uma conexão https na rede, de modo que um invasor não possa ler o fluxo de bytes e saber que tipo de conexão ele é.

Uma conexão típica de https não vai durar muito tempo. Talvez o seu navegador mantenha uma conexão aberta ao seu servidor de e-mail, eu não sei. Em geral, no entanto, haverá muitas conexões relativamente curtas para diversos servidores remotos.

OTOH, a conexão OpenVPN pode viver por horas ou dias, e enviará muitos dados para o servidor openvpn.

Você pode atenuar a conexão de longa duração periodicamente descartando e reiniciando a conexão. Isso supostamente tem implicações para o tráfego de aplicativos, mas pode ser viável. O padrão de lotes e lotes de tráfego entre você e o servidor openvpn, no entanto, será muito mais difícil de camuflar.

    
___ Crie um usuário SSH com privilégios limitados para usar somente o repositório Git