Compilando e Instalando o apache V 2.4.3 + PHP V 5.4.6 + Debian Squeeze

Prepare o seu sistema com o seguinte script http://wiki.douglasqsantos.com.br/doku.php/confinicialsqueeze_en para que não falte nenhum pacote ou configuração.

Vamos mandar atualizar os repositórios e fazer um upgrade do sistema

aptitude update && aptitude dist-upgrade -y

Agora vamos instalar algumas depências para o nosso Apache.

aptitude install libapr1 libapr1-dev libaprutil1 libaprutil1-dev -y

Agora vamos obter o código fonte do Apache

cd /usr/src
wget -c http://wiki.douglasqsantos.com.br/Downloads/apache/httpd-2.4.3.tar.gz

Agora vamos obter o código fonte do PHP

wget -c http://wiki.douglasqsantos.com.br/Downloads/apache/php-5.4.6.tar.bz2

Agora vamos descompactar o nosso Apache e vamos acessar o diretório com o código fonte.

tar -xzvf httpd-2.4.3.tar.gz && cd httpd-2.4.3/

Vamos setar a configuração da compilação do nosso apache com alguns módulos padrões uma lista com os novos recursos do apache 2.4.1 pode ser vista no seguinte link http://www.eu.apache.org/dist/httpd/CHANGES_2.4

./configure --prefix=/usr/local/apache2 \
--enable-so --enable-cgi --enable-info \
--enable-rewrite --enable-speling --enable-usertrack \
--enable-deflate --enable-ssl --enable-mime-magic

Aqui acima estamos setando aonde vai ficar o ServerRoot do apache que vai ser /usr/local/apache2, vamos habilitar os módulos to tipo share, vamos habilitar a execução de cgi que vamos precisar para o php e mais alguns módulos adicionais.

Agora vamos compilar o nosso Apache

make

Agora vamos mandar instalar ele

make install

Agora vamos instalar as bibliotecas do mysql para que o nosso php tenha suporte pelo menos ao MySQL

aptitude install libmysql++-dev libmysqlclient-dev libmysqld-dev -y 

O nosso Apache já esta ok, agora vamos descompactar o nosso php e vamos acessar o diretório do código fonte

cd /usr/src
tar -xjvf php-5.4.6.tar.bz2 && cd php-5.4.6

Agora vamos instalar algumas dependências do nosso PHP

aptitude install libxml2 libxml2-dev libxml2-utils -y

Agora vamos setar a configuração para a compilação do nosso PHP.

./configure --with-apxs2=/usr/local/apache2/bin/apxs \
--prefix=/usr/local/apache2/php --with-config-file-path=/usr/local/apache2/php \
--with-zlib --with-gettext --with-mysql

Acima estamos setando o arquivo de referência do Apache para a compilação do php, o diretório aonde vai ficar o nosso php, o diretório aonde vai ficar o arquivo de configuração do nosso php, e mais alguns módulos básicos.

Agora que já configuramos o nosso PHP vamos mandar compilar ele.

make

Agora após a compilação do nosso PHP vamos mandar instalar ele.

make install

Agora vamos copiar o arquivo de configuração do php para o diretório definido no ./configure

cp php.ini-production /usr/local/apache2/php/php.ini

Vamos criar o grupo e o usuário apache para que o apache seja executado com eles e não com o usuário root.

groupadd apache
useradd -g apache apache

Agora vamos acertar a configuração do Apache para ele trabalhar com o usuário apache e reconhecer o php

vim /usr/local/apache2/conf/httpd.conf
[...]
#Usuário e grupo que o apache será executado
User apache
Group apache
[...]
#Email do WebMaster
ServerAdmin douglas@douglasqsantos.com.br
[...]
#Diretório aonde vai conter as páginas do site default
DocumentRoot "/usr/local/apache2/htdocs"
[...]
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
#Opções para o apache reconhecer o PHP
AddType application/x-httpd-php-source phps
AddType text/html .php
[...]
#Mapeamento do tipo de extenção para o Apache
#AddHandler cgi-script .cgi
AddHandler php5-script .php
[...]

Agora vamos iniciar o nosso apache

/usr/local/apache2/bin/apachectl start

Agora vamos testar a configuração do nosso Apache

/usr/local/apache2/bin/apachectl -t
Syntax OK

Agora vamos obter a versão do nosso Apache

/usr/local/apache2/bin/apachectl -v
Server version: Apache/2.4.3 (Unix)
Server built:   Sep  4 2012 13:07:38

Agora vamos ver as opções de compilação do nosso Apache

/usr/local/apache2/bin/apachectl -V
Server version: Apache/2.4.3 (Unix)
Server built:   Sep  4 2012 13:07:38
Server's Module Magic Number: 20120211:6
Server loaded:  APR 1.4.2, APR-UTIL 1.3.9
Compiled using: APR 1.4.2, APR-UTIL 1.3.9
Architecture:   64-bit
Server MPM:     event
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/usr/local/apache2"
 -D SUEXEC_BIN="/usr/local/apache2/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

Agora vamos verificar os módulos estáticos do Apache

/usr/local/apache2/bin/apachectl -l
Compiled in modules:
  core.c
  mod_so.c
  http_core.c
  event.c

Agora vamos visualizar os módulos disponíveis em nosso Apache

/usr/local/apache2/bin/apachectl -M
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 mpm_event_module (static)
 authn_file_module (shared)
 authn_core_module (shared)
 authz_host_module (shared)
 authz_groupfile_module (shared)
 authz_user_module (shared)
 authz_core_module (shared)
 access_compat_module (shared)
 auth_basic_module (shared)
 reqtimeout_module (shared)
 filter_module (shared)
 mime_module (shared)
 log_config_module (shared)
 env_module (shared)
 headers_module (shared)
 setenvif_module (shared)
 version_module (shared)
 unixd_module (shared)
 status_module (shared)
 autoindex_module (shared)
 dir_module (shared)
 alias_module (shared)
 php5_module (shared)

Agora vamos testar o nosso Apache via telnet

telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Date: Tue, 04 Sep 2012 16:18:59 GMT
Server: Apache/2.4.3 (Unix) PHP/5.4.6
Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
ETag: "2d-432a5e4a73a80"
Accept-Ranges: bytes
Content-Length: 45
Connection: close
Content-Type: text/html

Connection closed by foreign host.

Como pode ser notado o nosso Apache já esta reconhecendo a instalação do PHP na versão 5.4.0

Agora vamos criar um arquivo para verificar a configuração do nosso php

vim /usr/local/apache2/htdocs/phpinfo.php
<?php
phpinfo();
?>

Agora podemos acessar em http://ip_servidor/phpinfo.php

Agora vamos copiar o arquivo que controla o serviço do apache para o /etc/init.d

cp /usr/local/apache2/bin/apachectl /etc/init.d/apache

Agora vamos acertar o script para inicializar o nosso apache junto com o SO, deixe o inicio do arquivo como abaixo.

vim /etc/init.d/apache
#!/bin/sh
### BEGIN INIT INFO
# Provides:             apache
# Required-Start:       $remote_fs $syslog
# Required-Stop:        $remote_fs $syslog
# Default-Start:        2 3 4 5
# Default-Stop:         
# Short-Description:    Apache
### END INIT INFO
[...]

Agora vamos inserir o script na inicialização do sistema

insserv -f -v apache

Para testar reinicie o servidor e verifique se o serviço foi inicializado.

Agora vamos copiar os arquivos dos binários do apache e do php para o /usr/local/bin

cp -a /usr/local/apache2/php/bin/* /usr/local/bin
cp -a /usr/local/apache2/bin/* /usr/local/bin

Pronto o nosso Apache e PHP está instalado e funcionado vamos fazer um upgrade do pear para testar

pear upgrade

Agora é só acessar http://ip_servidor/phpinfo.php

Referências