Diretório para PHP 5 Arquivos de soquete do FPM são excluídos após a reinicialização no Ubuntu Server

3

Eu criei um diretório para armazenar arquivos de soquete para o PHP 5 FPM: sudo mkdir /var/run/php-fpm . É de propriedade de root:root , bem como do processo principal do PHP FPM.

Quando o PHP FPM está sendo iniciado, ele cria arquivos de soquete para cada pool dentro desse diretório e o nginx os utiliza para se comunicar.

No entanto, quando eu reinicializo minha máquina ( sudo reboot ) este diretório desaparece após a reinicialização e o PHP FPM não pode iniciar, porque ele não pode criar arquivos de soquete dentro de um diretório ausente.

Qual pode ser o problema? Como depuro isso?

Estou usando o mais recente Ubuntu Server 14.04.

    
por Slava Fomin II 25.07.2014 / 13:54

2 respostas

3

A versão atual do Ubuntu está usando as configurações de up-start para executar serviços. Mais informações sobre isso podem ser encontradas aqui .

Todos os scripts de início estão localizados no diretório /etc/init . Não confunda com scripts de init antigos no diretório /etc/init.d .

Como @Rhim declarou em sua resposta, /var/run é um sistema de arquivos montado temporariamente, que é recriado após cada reinicialização, assim as alterações não são persistidas nele. Portanto, para ter um diretório personalizado para arquivos de soquete, você terá que criá-lo sempre. O melhor lugar para adicionar tal funcionalidade é uma configuração para o PHP FPM localizada em: /etc/init/php5-fpm.conf .

Veja a versão modificada desta configuração:

# php5-fpm - The PHP FastCGI Process Manager

description "The PHP FastCGI Process Manager"
author "Ondřej Surý <[email protected]>"

start on runlevel [2345]
stop on runlevel [016]

# Precise upstart does not support reload signal, and thus rejects the
# job. We'd rather start the daemon, instead of forcing users to
# reboot https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1272788
#
# reload signal USR2

pre-start script
    mkdir -p /var/run/php-fpm
    /usr/lib/php5/php5-fpm-checkconf
end script

respawn
exec /usr/sbin/php5-fpm --nodaemonize --fpm-config /etc/php5/fpm/php-fpm.conf

pre-start stanza já foi usado para verificar o arquivo de configuração do PHP FPM, então eu o convertei em uma seção de script e adicionei meu próprio comando para criar o direcotry para arquivos de soquete antes de chamar o checkconf .

Com este script, ele deve funcionar bem. Para controlar o estado do serviço, use o comando service da seguinte forma: service php5-fpm start , service php5-fpm restart etc.

Espero que ajude alguém. Felicidades!

    
por 03.08.2014 / 12:26
1

Eu acho que no Ubuntu também!

cat /etc/redhat-release 
Fedora release 20 (Heisenbug)

df -h /run
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           3.9G  904K  3.9G   1% /run

ls -la /var | grep run 
lrwxrwxrwx.   1 root root      6 Dec 28  2013 run -> ../run

This directory is mounted as tmpfs.

Adicione a um script de inicialização, crie um diretório ou altere o diretório para arquivos pid.
 Mas estou surpreso que não seja criado automaticamente após a reinicialização.

    
por 26.07.2014 / 00:09