Configuração de LAMP do Debian 9 Stretch com usuários de sandbox usando o FPM

1

Estou tentando configurar o Apache e o FPM no Debian 9 da maneira que fizemos anteriormente com o Debian 7 e 8. Devido a, acredito, a depreciação do mod_fastcgi em favor do mod_proxy_fcgi no Apache 2.4 e a subseqüente remoção de dos repositórios apt do Debian 9, não consegui realizar a nossa configuração anterior. Basicamente, estávamos usando o FPM para proteger vários sites em um único servidor (um servidor intermediário / dev). O resultado final foi que cada site era de propriedade e agrupado para um usuário cada e o FPM executava o site em processos para esse usuário específico.

Aqui está um exemplo do vache do Apache que estávamos usando:

FastCgiExternalServer /home/siteusername/www/php5-fcgi -socket /tmp/php5-fpm-siteusername.sock -pass-header Authorization

<VirtualHost *:80>
   DocumentRoot /home/username/www/domain.com/public_html/
   ServerName www.domain.com

   <Directory /home/siteusername/www/domain.com/public_html/>
      AllowOverride all
   </Directory>

   <Directory /home/siteusername/www/>
       Require all granted
       AllowOverride all
   </Directory>

   AddHandler php5-fcgi .php
   Action php5-fcgi /php5-fcgi
   Alias /php5-fcgi /home/siteusername/www/php5-fcgi

   <ifModule mod_headers.c>
      Header set X-Robots-Tag "noindex"
   </ifModule>
</VirtualHost>

Aqui está um exemplo de configuração do FPM que estávamos usando:

[siteusername]
listen = /tmp/php5-fpm-siteusername.sock

listen.allowed_clients = 127.0.0.1
listen.owner = www-data
listen.group = www-data

user = siteusername
group = siteusername

pm = ondemand
pm.max_children = 50

php_admin_value[upload_tmp_dir] = /home/siteusername/tmp/upload
php_admin_value[session.save_path] = /home/siteusername/tmp/session

Essa configuração exata no Debian 9 com Apache 2.4, PHP 7.0, FPM 7.0, com mod_proxy_fcgi (e números de versão atualizados) resulta em um erro ao iniciar o Apache:

Invalid command 'FastCgiExternalServer', perhaps misspelled or defined by a module not included in the server configuration

Estou assumindo que o comando fazia parte do mod_fastcgi e, sem ele, parece que não consigo rodar os sites sob seus próprios usuários. Em vez disso, eles são executados em www-data como qualquer site Apache normalmente configurado.

Até agora não consegui encontrar a documentação sobre como realizar essa configuração. Alguém tem alguma idéia do que é a configuração atualizada para o mod_proxy_fcgi?

    
por Josh Janusch 03.07.2017 / 05:51

2 respostas

2

Tente isso.

Na sua definição do FPM, ADAPT o nome do socket para combinar com a versão correta do php

[siteusername]
listen = /tmp/php7-fpm-siteusername.sock

(No Debian 9 não é mais o php5, mas o php7)

Na sua definição Vhost, REMOVA o seguinte

FastCgiExternalServer /home/siteusername/www/php5-fcgi -socket /tmp/php5-fpm-siteusername.sock -pass-header Authorization
...
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /home/siteusername/www/php5-fcgi

Na mesma definição de vhost, adicione o seguinte

<FilesMatch \.php$>
   SetHandler "proxy:unix:/tmp/php7-fpm-siteusername.sock|fcgi://localhost"
</FilesMatch>

Como alternativa, você pode adicionar o seguinte na sua definição de vhost

ProxyPassMatch "^/(.*\.php(/.*)?)$" "unix:/tmp/php7-fpm-siteusername.sock|fcgi://localhost/home/siteusername/www/"

Certifique-se de ter os módulos mod_proxy e mod_proxy_fcgi ativados

a2enmod proxy proxy_fcgi
    
por 10.09.2017 / 07:32
-1

Eu estava na mesma situação do que você e encontrei essa solução.

link

Funciona para mim.

Boa sorte

    
por 11.07.2017 / 23:30