Servidor Apache · 4 min read · Dec 03, 2025
Como Configurar Apache2 Com mod_fcgid E PHP5 No Mandriva 2009.1
Como Configurar Apache2 Com mod_fcgid E PHP5 No Mandriva 2009.1
Versão 1.0
Autor: Falko Timme
Siga-me no Twitter
Este tutorial descreve como você pode instalar Apache2 com mod_fcgid e PHP5 no Mandriva 2009.1. mod_fcgid é uma alternativa compatível ao antigo mod_fastcgi. Ele permite que você execute scripts PHP com as permissões de seus proprietários em vez do usuário Apache.
Não dou nenhuma garantia de que isso funcionará para você!
1 Nota Preliminar
Estou usando um servidor Mandriva 2009.1 neste tutorial com o nome do host server1.example.com e o endereço IP 192.168.0.100.
Vou criar dois vhosts Apache neste tutorial, www.example1.com e www.example2.com, para demonstrar o uso do mod_fcgid.
2 Instalando Apache2/mod_fcgi/PHP5
Primeiro, atualizamos nosso banco de dados de pacotes:
urpmi.update -aPodemos instalar Apache2, mod_fcgid e PHP5 da seguinte forma (mod_fcgid requer apache-mpm-worker em vez de apache-mpm-prefork, então, se apache-mpm-prefork estiver atualmente instalado, os módulos do Apache que dependem dele serão removidos, como apache-mod_php):
urpmi apache-mpm-worker apache-mod_fcgid php-fcgi[root@server1 ~]# urpmi apache-mpm-worker apache-mod_fcgid php-fcgi
Os seguintes pacotes devem ser removidos para que outros sejam atualizados:
apache-mod_perl-2.0.4-5mdv2009.1.x86_64
(devido a conflitos com apache-mpm-worker-2.2.11-10.5mdv2009.1.x86_64)
apache-mod_php-5.2.9-1mdv2009.1.x86_64
(devido a conflitos com apache-mpm-worker[>= 2.2.8]) (y/N) <– y
Para satisfazer as dependências, os seguintes pacotes serão instalados:
Pacote Versão Lançamento Arquitetura
(médio “Atualizações Principais”)
apache-base 2.2.11 10.5mdv2009.1 x86_64
apache-mod_ssl 2.2.11 10.5mdv2009.1 x86_64
apache-modules 2.2.11 10.5mdv2009.1 x86_64
apache-mpm-prefork 2.2.11 10.5mdv2009.1 x86_64
apache-mpm-worker 2.2.11 10.5mdv2009.1 x86_64
php-fcgi 5.2.9 6.2mdv2009.1 x86_64
(médio “Contrib”)
apache-mod_fcgid 2.2 6mdv2009.1 x86_64
6MB de espaço em disco será liberado.
977KB de pacotes serão recuperados.
Prosseguir com a instalação dos 7 pacotes? (Y/n) <– Y
Em seguida, abrimos /etc/php.ini…
vi /etc/php.ini… e adicionamos a linha cgi.fix_pathinfo = 1 bem no final do arquivo:
| [...] cgi.fix_pathinfo = 1 |
Então reinicie o Apache:
/etc/init.d/httpd restart3 Criando Vhosts Para www.example1.com E www.example2.com
Agora vou criar dois vhosts, www.example1.com (com o diretório raiz do documento /var/www/web1/web) e www.example2.com (com o diretório raiz do documento /var/www/web2/web). www.example1.com será de propriedade do usuário e grupo web1, e www.example2.com do usuário e grupo web2.
Primeiro, criamos os usuários e grupos:
groupadd web1
groupadd web2
useradd -s /bin/false -d /var/www/web1 -m -g web1 web1
useradd -s /bin/false -d /var/www/web2 -m -g web2 web2
chmod 755 /var/www/web1
chmod 755 /var/www/web2Em seguida, criamos os diretórios raiz do documento e os tornamos de propriedade dos usuários/grupos web1 e web2:
mkdir -p /var/www/web1/web
chown web1:web1 /var/www/web1/web
mkdir -p /var/www/web2/web
chown web2:web2 /var/www/web2/webExecutaremos o PHP usando suExec; o diretório raiz do documento do suExec é /var/www, como o seguinte comando mostra:
/usr/sbin/suexec -V[root@server1 ~]# /usr/sbin/suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec_log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_SUEXEC_UMASK=077
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX="public_html"
[root@server1 ~]#Portanto, não podemos chamar o binário PHP (/usr/bin/php-fcgi) diretamente porque está localizado fora do diretório raiz do documento do suExec. Como o suExec não permite symlinks, a única maneira de resolver o problema é criar um script wrapper para cada site em um subdiretório de /var/www; o script wrapper chamará então o binário PHP /usr/bin/php-fcgi. O script wrapper deve ser de propriedade do usuário e grupo de cada site, portanto, precisamos de um script wrapper para cada site. Vou criar os scripts wrapper em subdiretórios de /var/www/php-fcgi-scripts, por exemplo, /var/www/php-fcgi-scripts/web1 e /var/www/php-fcgi-scripts/web2.
mkdir -p /var/www/php-fcgi-scripts/web1
mkdir -p /var/www/php-fcgi-scripts/web2vi /var/www/php-fcgi-scripts/web1/php-fcgi-starter| #!/bin/sh PHPRC=/etc/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/bin/php-fcgi |
vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter| #!/bin/sh PHPRC=/etc/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/bin/php-fcgi |
A linha PHPRC contém o diretório onde o arquivo php.ini está localizado (ou seja, /etc/ se traduz em /etc/php.ini). PHP_FCGI_MAX_REQUESTS é o número máximo de solicitações antes que um processo fcgid seja interrompido e um novo seja iniciado. PHP_FCGI_CHILDREN define o número de filhos PHP que serão lançados.
Os scripts php-fcgi-starter devem ser executáveis, e eles (e os diretórios em que estão) devem ser de propriedade do usuário e grupo do site:
chmod 755 /var/www/php-fcgi-scripts/web1/php-fcgi-starter
chmod 755 /var/www/php-fcgi-scripts/web2/php-fcgi-starter
chown -R web1:web1 /var/www/php-fcgi-scripts/web1
chown -R web2:web2 /var/www/php-fcgi-scripts/web2Agora criamos os vhosts Apache para www.example1.com e www.example2.com. Adicione os seguintes dois vhosts ao final de /etc/httpd/conf/httpd.conf:
vi /etc/httpd/conf/httpd.conf| [...] NameVirtualHost *:80 |
Certifique-se de preencher os caminhos corretos (e o usuário e grupo corretos nas linhas SuexecUserGroup).
Recarregue o Apache em seguida:
/etc/init.d/httpd reloadReceba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.