Como eu preservo um soquete UNIX através de reinicializações (RasPi, Arch, chroot)?

0

Eu configurei o nginx e o php-fpm no Arch Linux em um RasPi. O nginx foi configurado em um chroot, conforme descrito no ArchWiki . Tudo funciona bem quando php-fpm.conf e nginx.conf estão configurados para ouvir 127.0.0.1:9000 e php-fpm.conf não declara um caminho para o pid.

Agora, quero alterar a configuração para usar um soquete UNIX conforme sugerido na web. Então, adicionei a php-fpm.conf o seguinte.

pid = /srv/http/run/php-fpm/php-fpm.pid
...
[www]
chroot = /srv/http;
listen = /srv/http/run/php-fpm/php-fpm.sock

Também foi substituído fastcgi_pass em nginx.conf com

fastcgi_pass   unix:/run/php-fpm/php-fpm.sock;

Quando eu crio manualmente o arquivo .sock e reinicio o php-fpm e o nginx, ele funciona. Mas sempre que eu reinicio, o diretório php-fpm e .sock desaparecem ...

Como posso preservá-los durante as reinicializações? /etc/fstab inclui

tmpfs           /srv/http/run   tmpfs   rw,noexec,relatime,size=1024k   0       0
tmpfs           /srv/http/tmp   tmpfs   rw,noexec,relatime,size=102400k 0       0
    
por s.d 07.04.2014 / 16:49

2 respostas

4

Você não pode. Isso seria o mesmo que preservar uma conexão TCP durante a reinicialização. O soquete é criado pelo processo que o escuta (no seu caso php-fpm ) e nginx se conecta a ele. Se você obtiver problemas porque nginx não pode abri-lo, você provavelmente iniciará seus serviços na ordem errada (você precisaria iniciar php-fpm antes de iniciar nginx , para que o soquete exista quando nginx iniciar ).

    
por 07.04.2014 / 17:09
0

tmpfiles (parte do systemd) irá criar e remover diretórios e arquivos temporários / voláteis. Normalmente, eles são colocados em / run ou / tmp, mas funcionam em qualquer lugar.

Para criar o diretório / srv / http / run / php-fpm na inicialização, crie um arquivo de configuração em /etc/tmpfiles.d desta forma:

d /srv/http/run/php-fpm 0755 http http -

Isto irá criar o diretório com as permissões 0755 para o usuário e grupo http (usuário padrão php-fpm / web do Arch)

O arquivo pode ser chamado como você quiser, mas precisa terminar em .conf. Exemplo ( php-fpm.conf )

O soquete em si é criado pelo php-fpm quando é iniciado, portanto, certifique-se de que ele esteja ativado no systemd:

systemctl enable php-fpm
    
por 08.04.2014 / 19:23