Montando Servidor Web PHP 5/MySQL 5

Started by KEst, 23 de May , 2007, 05:16:47 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

KEst

Como Montar um Servidor Web com PHP 5 e Suporte ao MySQL 5

Introdução

Montar um servidor web PHP 5 com suporte ao MySQL 5 não é tão simples como parece. Nós descobrimos isso da pior maneira possível: gastamos literalmente um dia inteiro tentando fazer isto. O principal problema é que o PHP 5 não vem com suporte nativo ao MySQL, e o MySQL 5 não oferece um módulo cliente independente pronto para download e instalação. Neste tutorial passo-a-passo nós mostraremos como compilar e instalar o Apache 2, o PHP 5 com suporte ao MySQL 5 e um otimizador e cache para o PHP (Xcache) no Linux. Portanto lendo este tutorial você poderá montar seu próprio servidor web em questão de minutos – e não em questão de horas, como aconteceu conosco.

Nós nos deparamos com várias mensagens de erro ao longo do processo e publicaremos aqui as mensagens de erro mais comuns, de modo que você saiba o que fazer caso se depare com alguma delas.

A coisa mais importante que você precisa fazer é o upgrade da versão do Linux que você estiver usando para a última versão ou pelo menos verificar se o arquivo libstdc++.so.6 está instalado. Este arquivo deve estar no diretório /usr/lib/ (você pode também tentar o comando locate libstdc++.so.6). Se você não encontrar este arquivo, você receberá a seguinte mensagem de erro durante o processo:

error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

Este erro acontece porque seu servidor tem uma versão antiga da biblioteca do C++, provavelmente a libstdc++.so.5. A solução é atualizar a biblioteca do C++. Acontece que como praticamente tudo no Linux depende do C++, você terá de fazer o upgrade de muitas outras coisas. No Debian, a distribuição do Linux que estávamos usando, é simplesmente mais fácil atualizar todo o sistema com os seguintes comandos:

apt-get update
apt-get dist-upgrade

Esses comandos atualizarão não apenas a biblioteca do C++, mas também atualizará seu Debian para a versão mais nova. Nós recomendamos que você execute esses comandos antes de iniciar o processo de instalação e configuração.

Outro truque para usuários do Debian é editar o arquivo /etc/apt/sources.list e verificar de qual servidor o Debian fará o download dos arquivos usando comandos apt, como o apt-get. Por padrão, você verá o http://ftp.debian.org sendo listado, mas este servidor é normalmente sobrecarregado. Você pode comentar as linhas que apontam para o debian.org e adicionar novas linhas apontando para um servidor mais rápido, por exemplo:

deb http://ftp.uwsg.indiana.edu/linux/debian stable main
deb-src http://ftp.uwsg.indiana.edu/linux/debian stable main

Uma lista de servidores disponíveis pode ser encontrada aqui: http://www.debian.org/mirror/list. Role a tela e prefira usar um servidor secundário, já que eles são normalmente menos sobrecarregados, o que facilita seu processo de instalação e upgrade – especialmente para fazer o upgrade de todo o sistema operacional, como recomendamos.

Após essas explicações preliminares, vamos para o nosso tutorial passo-a-passo. Note que os seguintes passos precisam ser feitos na mesma ordem em que escrevemos: você não pode tentar compilar e instalar o PHP 5 antes do MySQL 5 – não vai funcionar.

Configurando e Instalando o Apache 2

O primeiro passo é fazer o download, configurar e instalar o Apache 2, que é o programa servidor web. Esta é a parte mais fácil de nosso tutorial. Faça o download da versão mais nova em http://httpd.apache.org/download.cgi. Escolha o servidor mais próximo do servidor que você está montando. Você tem a opção de escolher entre as séries 2.2.x e 2.0.x, isto fica a seu critério. A versão que você precisa fazer o download é a "unix source". Em seguida, na linha de comando, digite algo assim, dependendo do link que você obteve nesta página:

cd /root
wget http://www.apache.org/dist/httpd/httpd-2.0.59.tar.gz

Após o dowload, rode esses comandos:

tar -xvzf httpd-2.0.59.tar.gz
cd httpd-2.0.59
./configure --prefix=/usr/local/apache2 --enable-deflate --enable--ssl --enable-suexec --with-suexec-caller=apache --with-suexec-docroot=/ --with-suexec-datadir=/www/ --enable-mods-shared=most
make
make install

Claro que você pode adicionar outros parâmetros de configuração que achar necessário para a sua instalação em particular. A dica é certificar-se de usar --enable-deflated para instalar o mod_deflate, que é um plug-in para o Apache que habilita a compressão HTML, o que faz com que seu servidor web apresente páginas mais rápidas e também economize largura de banda.

Note também o local onde nós instalamos o Apache: /usr/local/apache2

Edite /etc/profile e adicione :/usr/local/apache2 no final da declaração do caminho (comando PATH).

Você precisará também editar /usr/local/apache2/conf/httpd.conf para configurar seu servidor web. Este procedimento de configuração, no entanto, foge do escopo deste tutorial.

É isso. Agora nós precisamos instalar e configurar o MySQL 5. Como dissemos, isto precisa ser feito antes da configuração e instalação do PHP 5.

Configurando e Instalando o MySQL 5

Este passo é necessário porque o PHP 5 não vem mais com suporte ao MySQL. Mesmo que você não vá instalar um servidor MySQL na mesma máquina do seu servidor web, este passo é necessário de modo a instalar o cliente MySQL 5 para permitir ao PHP 5 conectar-se a servidores MySQL 5.

A primeira coisa que você precisa saber é que o MySQL 5 não traz pacotes separados para as configurações de cliente e de servidor, como acontece com o MySQL 4 – tudo está dentro do mesmo pacote. Além disso, o procedimento para instalar um cliente MySQL é diferente da instalação de um servidor MySQL.

Se você não quer um servidor MySQL 5 rodando na mesma máquina do seu servidor web – o que é desejável para sites grandes, isto é, você terá um servidor web rodando o Apache e o PHP e outro servidor rodando exclusivamente o MySQL – você precisará instalar apenas uma versão "cliente" do MySQL 5.

Se você quer um servidor MySQL 5 rodando na mesma máquina do seu servidor web, então você precisará instalar o servidor MySQL 5 completo.

O procedimento para esses dois cenários é muito diferente e portanto você precisa saber qual caminho seguir.

De qualquer forma, para ambos os cenários a primeira coisa que você precisa fazer é desinstalar qualquer versão do MySQL que possa existir instalada em seu servidor.

No Debian você pode fazer isto rodando (assumindo que a versão antiga era a 4.1, é claro):

apt-get remove mysql-server-4.1
apt-get remove mysql-client-4.1

No Fedora você pode fazer isto rodando:

rpm -e

Com rpm -qa | grep MySQL você pode descobrir os módulos do MySQL que você tem instalado e que você precisará remover.

Você pode ainda, só como precaução, mover as bibliotecas antigas do MySQL que podem ter ficado no servidor para um local de backup, com:

mv /usr/lib/libmysql* /root

Dessa forma, se algo der errado você ainda terá esses arquivos.

Agora vem a parte complicada. Se você quer instalar apenas o módulo MySQL 5 cliente, você precisará fazer o download do código fonte. O problema é que o código fonte é a última coisa na página de downloads do MySQL e muita gente faz o download dos binários, que contém o servidor MySQL, não o cliente.

Se você quer instalar o servidor MySQL 5 no mesmo servidor do seu servidor web, você precisará fazer o download tanto do código fonte quanto dos binários. Claro que você pode compilar o código fonte para obter os binários, porém aqui vai uma dica importante: de acordo com o site do MySQL, se o seu servidor usa um processador Intel, os binários compilados com o compilador Intel fará seu servidor MySQL 5 rodar 20% mais rápido do que caso você instale os binários padrão compilados com o gcc. Como nosso servidor era um dual-Xeon, nós optamos por fazer o download da versão compilada para processadores Intel em vez de compilarmos o MySQL 5 por conta própria.

Dessa forma, para ambos os cenários você precisará criar um cliente MySQL 5. Como mencionamos, isto é feito fazendo o download do código fonte do MySQL 5 em http://dev.mysql.com/downloads/mysql/5.0.html – ele está na parte inferior desta página. Faça o download da versão "Compressed GNU TAR archive (tar.gz)".

O download, configuração e a seqüência de instalação é a seguinte:

cd /root
wget http://dev.mysql.com/get/Downloads/MySQ ... .orst.edu/
tar -xvzf mysql-5.0.37.tar.gz
cd mysql-5.0.37
./configure --without-server
make
make install

Você pode ver se sua instalação foi feita com sucesso verificando se as novas bibliotecas mysql foram instaladas em /usr/lib:

ls /usr/lib/libmysql*

O resultado deve ser algo como:

/usr/lib/libmysqlclient_r.so.15 /usr/lib/libmysqlclient.so.15
/usr/lib/libmysqlclient_r.so.15.0.0 /usr/lib/libmysqlclient.so.15.0.0

Se você não pode encontrar esses arquivos ou se eles estão usando uma versão inferior à 15, você deve voltar aos procedimentos acima, certificando-se de rodar o comando make clean antes de reiniciar o procedimento.

Agora seu cliente MySQL 5 está instalado. O próximo passo é instalar o servidor MySQL, caso você queira ter um servidor MySQL na mesma máquina do seu servidor web. A instalação do servidor MySQL 5 é muito simples.

Faça o download dos binários compilados em http://dev.mysql.com/downloads/mysql/5.0.html e instale-os. Como dissemos anteriormente, se seu servidor possui um processador Intel, você deve fazer o download da versão "Linux (non RPM, Intel C/C++ compiled, glibc-2.3) downloads". Esta é a versão que utilizamos e o passo-a-passo de instalação deste pacote é o seguinte:

cd /root
wget http://dev.mysql.com/get/Downloads/MySQ ... .orst.edu/
tar -xvzf mysql-5.0.37-linux-i686-icc-glibc23.tar.gz
mv mysql-5.0.37-linux-i686-icc-glibc23 mysql
groupadd mysql
useradd -g mysql mysql
mv mysql /usr/local
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql data
chgrp -R mysql .
bin/mysqld_safe --user=mysql &

Note que o caminho onde o MySQL será instalado: /usr/local/mysql.

Edite /etc/profile e adicione :/usr/local/mysql/bin no final da declaração do caminho (comando PATH).

Configurando e Instalando o PHP 5

Agora é a vez de fazer o download, configurar e instalar o PHP 5. Você precisa instalar o cliente MySQL 5 ANTES de configurar o PHP 5, caso contrário você obterá uma série de mensagens de erro. Portanto, se você veio diretamente para esta página, por favor, volte para a página anterior e siga dos passos lá descritos.

Antes de compilar o PHP 5, você precisa instalar várias dependências, caso elas já não estejam instaladas. Elas são o Zlib, o Jpeg e o Png. Elas são necessárias caso você queira rodar o GD, que é um módulo para edição de imagens. Nós recomendamos que você habilite o suporte ao GD, portanto nós instalaremos esses três itens.

Para o zlib, faça o download da última versão em http://www.zlib.net/ e siga os seguintes passos:

cd /root
wget http://www.zlib.net/zlib-1.2.3.tar.gz
tar -xvzf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure --prefix=/usr/lib
make
make install

Para o suporte ao png, faça o download do Libpnp em http://www.libpng.org/pub/png/libpng.html e siga os seguintes passos:

cd /root
wget http://prdownloads.sourceforge.net/libp ... z?download
tar -xvzf libpng-1.2.16.tar.gz
cd libpng-1.2.16
./configure --prefix=/usr/lib
make
make install

Para o suporte ao Jpeg:

cd /root
wget ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz
tar -xvzf jpegsrc.v6b.tar.gz
cd jpegsrc.v6b
./configure --prefix=/usr/lib
make
make install

Essas são as bibliotecas de suporte para o GD. Em nossa instalação no Debian nós precisamos instalar as seguintes bibliotecas para resolver erros de dependências na compilação do PHP 5.

Apt-get install libxml2
Apt-get install libxml2-dev
Apt-get install libxml2-utils
apt-get install autoconf
dpkg -s autoconf

Agora é a vez de fazer o download, configurar e compilar o PHP. O PHP pode ser baixado em http://www.php.net/downloads.php. O passo-a-passo é o seguinte:

cd /root
wget http://www.php.net/get/php-5.2.1.tar.gz ... net/mirror
tar -xvzf php-5.2.1.tar.gz
cd php-5.2.1
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/bin/mysql_config --with-mysqli=/usr/local/bin/mysql_config --prefix=/usr/local/apache2/php --with-config-file-path=/usr/local/apache2/php --with-zlib-dir=/usr/lib --with-gd --with-imap=/usr/local/imap-2004a --with-xml --enable-shmop --with-zlib --with-png --with-jpeg-dir=/usr/lib --enable-gd-native-ttf --enable-exif --with-kerberos --with-imap-ssl
make
make install
cp php.ini-dist /usr/local/apache2/php/php.ini

Claro que esta configuração é a que precisamos baseada nos scripts do PHP que iremos executar; os parâmetros para o seu comando configure podem ser diferentes.

O principal macete aqui é o uso dos parâmetros --with-mysql e --with-mysqli. Eles têm de apontar para a localização do arquivo mysql_config: ele pode estar em /usr/local/bin/ ou em /usr/local/mysql/bin, dependendo se você instalou apenas o cliente MySQL ou se instalou  cliente e servidor MySQL, respectivamente. O maior problema com a configuração do PHP 5 com suporte ao MySQL 5 está nesses dois parâmetros. Se eles forem configurados incorretamente, você obterá mensagens de erro tais como:

configure: error: Cannot find MySQL header files under /usr/bin/mysql.
Note that the MySQL client library is not bundled anymore.


ou

configure: error: mysql configure failed. Please check config.log for
more information.


Note que o php foi instalado em /usr/local/apache2/php.

Agora você precisa configurar o arquivo httpd.conf para adicionar o suporte ao PHP 5. Execute vi /usr/local/apache2/conf/httpd.conf e procure a linha abaixo:

LoadModule php4_module modules/libphp4.so

Caso ela exista, adicione um # na sua frente. Agora verifique se a linha abaixo existe e se ela está sem um # na frente. Caso ela não exista, adicione o seguinte:

LoadModule php5_module modules/libphp5.so

Também procure pela seguinte linha:

AddHandler php-script php

Se ela existir, adicione um # na frente dela. Agora verifique se a linha abaixo existe e se ela está sem um # na frente. Se ela não existir, adicione o seguinte:

AddHandler php5-script php

Agora procure pela seguinte linha e se ela está sem um # na frente. Se ela não existir, adicione o seguinte:

AddType text/html php

Saia do vi (Esc wq ) e reinicie o Apache com o seguinte comando:

/usr/local/apache2/bin/apachectl restart

Agora você precisa verifica se a instalação do PHP 5 com suporte ao MySQL 5 foi realizada com sucesso criando um arquivo chamado phpinfo.php com o seguinte conteúdo:

Echo phpinfo();
?>

Coloque este arquivo no diretório raiz do seu servidor web (por exemplo /www/seu-site) e chame-o com seu navegador (http://www.seu-site.com.br/phpinfo.php). Claro que você precisa ter configurado o httpd.conf primeiro para fazer com que o Apache saiba em que diretório ele deve usar para o seu site. Mesmo que você ainda não tenha uma URL apontando para o endereço IP do seu servidor ou se o servidor que você está montando é um servidor local na sua própria rede, você pode configurar o Apache (em seu arquivo httpd.conf) para responder requisições baseadas no endereço IP do servidor. Dessa forma você pode usar http://192.168.0.2/phpinfo.php (onde 192.168.0.2 é obviamente o endereço IP do seu servidor).

Você deve obter uma descrição detalhada de como o PHP está configurado em seu servidor. Se você vir esta tela, parabéns, o Apache e o PHP estão configurados e funcionando. Você deve procurar se as seguintes sessões existem nesta página (abaixo de "Configuration") e se elas estão habilitadas: mysql ("MySQL Support: Enabled" e se "Client API version" é a mesma versão que você instalou, 5.0.21 no exemplo que usamos em nosso tutorial), mysqli ("MySQLi Support: Enabled" e se "Client library version" é a mesma versão que você instalou, 5.0.37 no exemplo que usamos em nosso tutorial) e GD ("GD Support: Enabled"). Se você não encontrá-los, verifique o processo de configuração e instalação.

Se tudo estiver o.k. com a sua instalação do Apache e do PHP 5 com suporte ao MySQL 5, você deve ir para o passo final, que é a instalação de um cache e otimizador PHP, que é um módulo que economizará recursos de processamento do seu servidor web, aumentado o seu desempenho.

Configurando e Instalando o Xcache

Existem vários módulos de cache disponíveis para o PHP – ele ajudam a economizar recursos de processamento do seu servidor –, alguns vêm ainda com um otimizador PHP, que aumenta o desempenho dos scripts PHP: PHP-Accelerator, Mmcache, APC e Xcache são alguns desses otimizadores. Nós mostraremos a você como configurar e instalar o Xcache, já que ele vem com suporte nativo para o PHP 5, e portanto você não encontrará nenhum problema de incompatibilidade.

Procure em http://210.51.190.228/pub/XCache/Releases/ a versão mais nova do Xcache lançada na série 1.2 (1.2.0 no momento que este tutorial estava sendo escrito) no formato tar.gz.

A seqüência de download, configuração e compilação é a seguinte:

cd /root
wget http://210.51.190.228/pub/XCache/Releas ... 2.0.tar.gz
tar –xvzf xcache-1.2.0.tar.gz
cd xcache-1.2.0
/usr/local/apache2/php/bin/phpize
./configure –enable-xcache –enable-xcache-optimizer –with-php-config=/usr/local/apache2/php/bin/php-config
make
make install

Preste atenção no resultado mostrado na tela para ver onde o módulo Xcache foi instalado. Em nosso caso, ele foi instalado em /usr/local/apache2/php/lib/php/extensions/no-debug-non-zts-20060613/.

Agora edite o php.ini (vi /usr/local/bin/apache2/php/php.ini) e adicione as linhas abaixo, mudando a primeira linha de acordo com o local onde o módulo xcache foi instalado.

[xcache-common]
zend_extension = /usr/local/apache2/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so

; required for >=php5.1 if you turn XCache on
auto_globals_jit = Off

[xcache.admin]
xcache.admin.user = "admin"
; paste the output of md5("password") below
xcache.admin.pass = ""

[xcache]
xcache.size = 32M
xcache.count = 1
xcache.slots = 8K
xcache.mmap_path = "/dev/zero"
xcache.cacher = On
xcache.optimizer = On

Você pode instalar uma interface para administração web que vem como Xcache. Para isto, você precisa preencher a variável xcache.admin.pass com uma senha no formato MD5 (clique aqui para converter uma senha em texto para o formato MD5) e então copie o diretrio admin do diretório de instalação do Xcache para um diretório no seu servidor web, por exemplo:

cd /root/xcache-1.2.0
mv admin /www/your-website/xcache

Com isto a interface de administração do Xcache será acessada através do endereço http://www.seu-site.com.br/xcache

Reinicie o Apache com /usr/local/apache2/bin/apachectl restart e verifique novamente o resultado do comando phpinfo, desta vez procurando pela sessão Xcache ("Xcache session: Enabled"). Se ela estiver lá, você terá seu servidor web configurado e funcionando com PHP5, suporte ao MySQL 5 e cache e otimizador PHP. Caso contrário, repita novamente os procedimentos descritos nesta página.


Fonte: Guia do Hardware

Campanha Converta-se a Gnu is Not Unix/Linux

rog

levei um susto

pensei que foi vc quem fez esse tut

deveria  ser proibido de instalar prog pelo make no debian

eu queria ver como que o cara vai dar um upgrade lamp no servidor dele sem deixar a maquina instavel

rog
realty.sys is corrupt :  reboot the universe (Y/N)