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 apacheAgora 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