Apache 2.0 em sistemas Unix
Esta seção contém notas e dicas específicas para a instalação do PHP em Apache 2.x
em sistemas Unix.
AvisoNão recomendados utilizar o
threaded MPM em produção com o Apache 2. Utilize o prefork MPM, que é
MPM padrão no Apache 2.0 e 2.2.
Para mais informações veja o FAQ relacionado sobre o uso de
Apache2 com threaded MPM
A » documentação do Apache
é a fonte mais importante sobre o servidor Apache 2.x.
Mais informações sobre opções de instalação podem ser encontradas
lá.
A versão mais recente do servidor Apache HTTP pode ser obtida do
» site de download Apache,
e uma versão correspondente do PHP pode ser obtida dos locais mencionados anteriormente.
Esse guia rápido cobre apenas o básico para iniciar o Apache 2.x
e PHP. Para mais informações leia a
» documentação do Apache.
Os números de versão estão omitidos aqui, para garantir que
as instruções não fiquem desatualizadas. Nos exemplos abaixo 'NN' deve
ser substituído com as versão específica do Apache utilizado.
Atualmente há duas versões do Apache 2.x. - 2.0 e 2.2.
Embora haja razões para escolher entre elas, 2.2 é a versão mais
atual, e aquela recomendada, se essa opção lhe for
possível. Entretanto as instruções aqui funcionarão para
ambas as versões 2.0 e 2.2.
-
Obter o Apache HTTP do endereço acima e
descompactar:
gzip -d httpd-2_x_NN.tar.gz
tar -xf httpd-2_x_NN.tar
-
Da mesma forma, obter e descompactar os fontes do PHP:
gunzip php-NN.tar.gz
tar -xf php-NN.tar
-
Compilar e instalar o Apache. Consulte a documentação de instalação do Apache
para mais detalhes/opções de compilação.
cd httpd-2_x_NN
./configure --enable-so
make
make install
-
Você agora tem um Apache 2.x.NN disponível em /usr/local/apache2,
configurado com módulos carregáveis e o MPM prefork padrão.
Para testar a instalação utilize o procedimento de inicialização
do servidor Apache. Por exemplo:
/usr/local/apache2/bin/apachectl start
e depois pare o servidor para configurar o PHP:
/usr/local/apache2/bin/apachectl stop
-
Agora configure e compile o PHP. Aqui você pode personalizar o PHP
com várias opções, por exemplo quais extensões estarão disponíveis. Rode
./configure --help para uma lista de opções disponíveis. Em nosso exemplo
nós iremos configurar apenas com suporte ao Apache 2 e MySQL.
Se você compilou o Apache a partir dos fontes como descrito acima os exemplos abaixo terão
caminhos coincidentes do apxs, mas se instalou de outra forma você terá de
ajustar o caminho para o apxs. Algumas distribuições renomeiam
apxs para apxs2.
cd ../php-NN
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
make
make install
Se decidir modificar suas configurações depois da instalação você
terá de rodar novamente o configure, make e make install.
Terá também de
reiniciar o Apache para que o novo módulo seja carregado. Uma recompilação do
Apache não é necessária.
Note que por padrão 'make install' também instalará o PEAR,
várias ferramentas do PHP como phpize, instalar o PHP CLI, entre outros.
-
Configure seu php.ini:
cp php.ini-development /usr/local/lib/php.ini
Você pode editar seu arquivo .ini para configurar o PHP. Se preferir ter
um php.ini em outra localização, utilize --with-config-file-path=/some/path no
passo 5.
Se preferir utilizar o php.ini-production leia atentamente
esse arquivo, dado que ele modifica o comportamento do PHP.
-
Edite seu httpd.conf para carregar o módulo do PHP. O caminho a direita
da instrução LoadModule precisa apontar para o caminho do módulo do PHP
em seu sistema. O 'make install' acima pode ter feito isso
por você, mas é bom confirmar.
LoadModule php7_module modules/libphp7.so
LoadModule php5_module modules/libphp5.so
-
Configure o Apache para interpretar certas extensões de arquivos do PHP. Por exemplo configurar
o Apache para interpretar aquivos .php. Em vez de utilizar apenas a diretiva Apache AddType
é recomendado evitar uploads potencialmente perigosos e nomes de
arquivos como exploit.php.jpg de serem executados pelo PHP. Nesse exemplo
você pode ter qualquer extensão (ou extensões) configuradas.
Adicionaremos .php como demonstração.
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
Ou, pode-se acrescentar também .php, .php2, .php3, .php4, .php5, .php6 e
.phtml para ser executado como PHP, desta forma:
<FilesMatch "\.ph(p[2-6]?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
Para permitir que arquivos .phps sejam interpretados pelo filtro de fontes do PHP e
exibidos como código fonte destacado, utilize isso:
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
mod_rewrite pode ser utilizado para permitir que qualquer arquivo .php seja exibido
como código fonte destacado, sem ter de renomear ou copiar aquivos
para a extensão .phps, assim:
RewriteEngine On
RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]
O filtro de fontes PHP não deve ser ativado em ambiente de produção, onde
ele pode expor dados confidenciais ou de outra forma importantes, que estejam
incluídos no código fonte.
-
Depois utilize a forma normal de iniciar o servidor Apache:
/usr/local/apache2/bin/apachectl start
ou
Seguindo os passos acima você terá um Apache2 rodando com
suporte ao PHP como um módulo SAPI
. Existem muitas outras
opções de configuração disponíveis no Apache e PHP. Para mais
informações rode ./configure --help na código
fonte correspondente.
Apache pode ser construído com multithread através da seleção do MPM
worker, em vez do padrão MPM
prefork. Isso é possível
acrescentado-se o seguinte argumento no ./configure do
passo 3 acima:
Isso não deve ser feito sem conhecer as consequências
dessa decisão, ou pelo menos ter uma boa noção de
suas implicações. A documentação do Apache
sobre » MPM-Modules
discute essas questões em grandes detalhes.
Nota:
A Apache MultiViews
FAQ discute multiviews com o PHP.
Nota:
Para construir uma versão multithread o sistema destino precisa suportar threads.
Nesse caso o PHP também deve ser compilado com o (experimental)
Zend Thread Safety (ZTS). Nessa configuração nem todas as extensões estarão disponíveis.
A configuração recomendada é construir o Apache com o módulo MPM
prefork padrão.