PHP (um acrônimo recursivo para "PHP: Hypertext Preprocessor") é uma linguagem de programação de computadores interpretada.
Retornamos ao nosso diretório default dos downloads e baixamos a versão do php que será utilizada. Repare que não estou utilizando a última versão, por questão de compatibilidade do meu sistema, vou trabalhar com a versão php-5.2.13.
# cd /root/softwares/
# wget http://br2.php.net/get/php-5.2.13.tar.gz/from/this/mirror
# tar –xvf php-5.2.13.tar.gz
# cd php-5.2.13
Configurando, novamente perceba que estou realizando uma configuração personalizada, ative somente os plugins que você ira utilizar em seu projeto, caso contrário, não faz sentido instalar o aplicativo com código fonte.
# ./configure \
--prefix=/home/php \
--sysconfdir=/home/php/etc \
--with-exec-dir=/home/php/bin \
--with-apxs2=/home/httpd/bin/apxs \
--with-mysql=/home/mysqld \
--with-pdo-mysql=/home/mysqld \
--with-pear \
--with-curl \
--with-openssl \
--with-xmlrpc \
--with-snmp \
--with-gd \
--enable-ftp \
--enable-soap \
--enable-json \
--enable-sockets \
--enable-zip \
--enable-debug
Dica: Durante o configure pode ocorrer alguns erros devido aos plugins que estão sendo ativados. Alguns erros de pacotes não encontrado:
Configure: error: xml2-config not found. please check your libxml2 installation
Instale (no CentOS):
# yum install libxml2 libxml2-devel
Configure: error: cannot find OpenSSL's <evp.h>
Instale:
# yum install openssl openssl-devel
Configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl
Instale:
# yum install curl curl-devel
If configure fails try --with-jpeg-dir=<DIR>
Configure: error : libpng.(a|so) not found.
Instale:
# yum install libjpeg libjpeg-devel libpng libpng-devel
Configure: error: snmp.h not found. Check your SNMP installation.
Instale:
# yum install net-snmp net-snmp-utils net-snmp-devel
# service snmpd start
# chkconfig snmpd on
Nessa altura do campeonato você deve estar perguntando: "Pow, não poderia já ter avisado das dependências antes?". Então respondo, claro que não. Lembre-se, minha necessidade, sua necessidade. Estou instalamos módulos que irei usar em meu projeto, você deve instalar módulos que vai usar em teu projeto. Se por acaso estiver fazendo CTRL+C e CTRL+V. então não reclame depois se o serviço estiver consumindo muito recurso da maquina. É claro, se estiver brincando ou aprendendo, aí faz sentido copiar e colar. Além do mais, se é um cara esperto, já percebeu que os erros são padronizados, então se ocorreu um erro desse tipo, basta apenas procurar no repositório de sua distribuição a dependência para instalar.
Dica (que você já deveria saber):
- CentOS > yum search NOMEDOPACOTE
- Debian > apt-cache search NOMEDOPACOTE
Se estiver fazendo instalação manual das dependências, é só informar o caminho. Os nomes dos pacotes entre as distribuições podem variar, padronização "never", mas fazer o que! Como diz
Fábio Berbert de Paula, "Tu é nerd, sabe se virar!".
Agora é agora de fazer o make, make test e make install.
Faz o make e vá tomar um café, pois pode acreditar, demora!!!
# make
Após o make, realize o make test, na verdade essa parte é opcional, mas se tratando do php, sempre faço.
# make test
No final ele vai te fazer a pergunta clássica, não precisa enviar o relatório, mas software livre, então colabore e envie o relatório.
Do you want to send this report now ? [Yes]
Arquivo de configuração, copie o arquivo do seu diretório para o local na qual foi definido no sysconfdir.
# cp /root/softwares/php-5.2.13/php.ini-dist /home/php/etc/php.ini
Como nem tudo é perfeito, e se tratando de computação, mais ainda. Quando fiz o configure, passei o parâmetro "--sysconfdir=/home/php/etc", porém o php não obedeceu e continua buscando o arquivo de configuração no endereço "/home/php/lib/". Então criei um link simbólico e resolvido.
# ln -s /home/php/etc/php.ini /home/php/lib/
Começando a ficar divertido né? Então vamos agora instalar alguns módulos/plugins para melhorar a performance do php ou você pode instalar o php seco e depois reclamar da lentidão.
Primeiro, só uma atualização no pear/pecl (PEAR - PHP Extension and Application Repository). É necessário ter feito o configure com a opção "--with-pear", se não fez, então passe para a próxima parte desse artigo.
# /home/php/bin/pear upgrade pear
Opcional: Vou precisar de algumas fontes extras, se não vai usar, já sabe, não instale.
# /home/php/bin/pear install Image_Graph-0.7.2 Image_Canvas-0.3.2 Image_Color Numbers_Words-0.16.1 Numbers_Roman
Preciso de algumas funcionalidades extras para comunicação http, então estou instalando o pecl_http. Mesma recomendação anterior.
# /home/php/bin/pecl install pecl_http
Depois adicione no php.ini "extension=http.so" para ativar a extensão.
# nano /home/php/etc/php.ini
Estarei instalando agora a extensão
apc para otimização do gerenciamento de cache da memória através do código php.
No caso apc pode ser feito de duas maneiras:
1) Via pecl install:
# /home/php/bin/pecl install
Dica: Às vezes ocorre erro de instalação via pecl. Então é só copiar do diretório temporário o código fonte que foi baixado pelo pecl e faça a compilação normalmente.
# cp -ar /tmp/pear/download/APC-3.0.19 /root/softwares/
# cd /root/softwares/APC-3.0.19
# ./configure \
--enable-apc \
--enable-apc-mmap \
--with-apxs=/home/httpd/bin/apxs \
--with-php-config=/home/php/bin/php-config
# make
# make test # Recomendando
# make install
2) Download do código fonte.
# cd /root/softwares
# wget http://pecl.php.net/get/APC
# tar -zxf APC-LATEST-VERION.tgz
# cd APC-LATEST-VERION
# ./configure \
--enable-apc \
--enable-apc-mmap \
--with-apxs=/home/httpd/bin/apxs \
--with-php-config=/home/php/bin/php-config
# make
Recomendo fazer o make test.
# make test
# make install
No final da instalação ele vai informar o local aonde guardou a extensão, anote esse endereço. Talvez precise.
Geralmente eu uso via pecl mesmo, sempre deu erro, mas depois é copiar no temporário o código e compilar. =D
Adicione no config do php.ini a seguinte linha.
#Added php.ini
extension=apc.so
[apc]
enabled=1
shm_segments=1
optimization=0
shm_size=128
ttl=7200
user_ttl=7200
num_files_hint=1024
mmap_file_mask=/tmp/apc.XXXXXX
enable_cli=1
Tive alguns probleminhas bem estranhos na hora de compilar o APC, simplesmente o script "configure" não existia. Se alguém estiver tento problema similar, disponibilizei a versão que usei nesse endereço:
http://calraiden.com.br/public/APC-3.0.19.tar
Verifique se está tudo OK com as extensões com o comando.
# /home/php/bin/php -m
Dica: Se ele reclamou que não encontrou as extensões que foram instaladas com o pear/pecl, lembra-se que no final da instalação do apc pedi para anotar o local aonde foi salvo o arquivo de extensão? Agora vá no arquivo de configuração do php e coloque o valor na variável "extension_dir".
Exemplo erro:
PHP Warning: PHP Startup: Unable to load dynamic library './apc.so' - ./apc.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library './http.so' - ./http.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library './memcache.so' - ./memcache.so: cannot open shared object file: No such file or directory in Unknown on li
Modificar no php.ini:
Exemplo: extension_dir ="/home/php/lib/php/extensions/debug-non-zts-20060613/"
Altere a linha do arquivo para o local aonde estão suas extensões.
Se não soube aonde encontra-se, procure o arquivo apc.so com o comando "find" ou "locate" e vai encontrar aonde ele salvou.
Algumas pessoas preferem o memcached ao invés do apc. Aí depende de sua necessidade. Não vou entrar ou comentar sobre esse assunto. Caso alguém deseje saber mais sobre o assunto,
esse artigo faz uma boa comparação.
E vamos para o próximo passo. Adivinhe? PHP de novo.