Você está na página 1de 19

Apache+PHP5+Mysql .:[Instalao]:.

por : Fred Cox Junior <fred.cox@terra.com.br> data : 26/08/2004


email: fred.cox@terra.com.br

1. INTRODUO Este
documento tem por objetivo detalhar passo a passo o

processo de instalao do seguintes programas em ambiente GNU/Linux:

Apache verso - 1.3.31 PHP - 5.0.1 MySQL - 4.0.20 Bluefish - 0.13

Primeiro
depois

veremos a compilao e instalao dos programas para o ambiente para programao em PHP com

prepararmos

banco de dados MySQL. Utilizei o Slackware 10, distro que uso desde 1998 quando tive os primeiros contatos com a verso 3.5. Procurei abordar desde a compilao at a configurao e execuo dos programas e processos necessrios para o funcionamento da trade

apache+php+mysql, de uma forma geral, procurei compatibilizar o processo de instalao para o padro GNU/Linux. Decidi no utilizar programas pr-compilados, nem receitas de bolo

especificas ou restritas para determinadas distros. Procurei abranger e detalhar o mximo possvel, com as distribuies Linux, mais utilizadas atualmente. A instalao ser realizada pelo mtodo tradicional a partir dos cdigos fontes dos

respectivos programas, compilando e instalando os aplicativos com os comandos ; ./configure <opes>; make; make install.

Todos

os

procedimentos no

para

compilao de

instalao que,

so voc

referenciados

diretrio

/usr/src,

forma

precisar de privilgios de root para instalar e dependendo das permisses, at mesmo copiar os sources para este

diretrio.

2. Instalao do MySQL Quando


estava escrevendo este artigo a ltima verso estvel

do MySQL ra a 4.0.20, portanto, iremos utilizar esta verso como referncia nos procedimentos de instalao. importante que o leitor siga na ntegra os passos para compilao e

instalao e s depois faa a configurao e preparao do ambiente, haja vista que cada tpico aqui abordado

dependente do anterior. Para realizar a integrao do PHP com o MySQL, necessrio antes de instalar o PHP ter o MySQL previamente instalado e configurado, e, para instalar o Apache com suporte a PHP, necessrio ter os Sources do PHP para que este gere a os mdulos necessrios do servidor para de o banco funcionamento, de dados

portanto

instalao

necessariamente primordial antes mesmo de comear a instalar a dupla Apache/PHP. Baixe a ltima verso dos sources do MySQL no seguinte site:

http://www.mysql.com

No shell, digite: [/usr / src]$ wget \ http:/ / w w w .linorg.usp.br / m y s q l / Do w n lo ads / M y SQL - 4.0 / m y s ql 4.0.20.tar.gz

Descompacte, compile e acesse o diretrio com os seguintes comandos: [/usr / src]$ tar - zxvf mysql - 4.0.20.tar.g z [/usr / src]$ cd mysql - 4.0.20 / [/usr / src / m y s ql - 4.0.20]$ ./configure - - prefix= / u s r / local / m y s ql [/usr / src / m y s ql - 4.0.20]$ make [/usr / src / m y s ql - 4.0.20]$ make install [/usr / src / m y s ql - 4.0.20] $ ldconfig [/usr / src / m y s ql - 4.0.20] $ cp support - files/ m y - mediu m.cn f /etc / m y .c n f

Agora

que

j compilamos

instalamos

mysql,

voc dever

criar um usurio com poucos privilgios para executar o daemon do MySQL e em seguida setar as permisses nos diretrios para usurio e grupo mysql.

No shell, digite: [/usr / src / m y s ql - 4.0.20]$ cd /usr /local / m y s ql / [/usr /local / m y s ql]$ groupadd mysql [/usr /local / m y s ql]$ useradd - g mysql mysql [/usr /local / m y s ql]$ chown - R root . [/usr /local / m y s ql]$ chown - R mysql var [/usr /local / m y s ql]$ chgrp - R mysql .

Execute

script

mysql_install_db

que

criar

as

tabelas

iniciais do

servidor de banco de dados.

[/usr /local / m y s ql]$ $ bin/ m y s ql_install_db - - user= m y s ql

O comando acima criar as tabelas iniciais e de samples do seu servidor de banco de dados. O script que deve ser executado para subir o daemon (processo) do banco de dados o

mysql.server que est localizado em:

/usr / s rc / m y s ql - 4.0.20 /s u p port - files/

Se o leitor quiser que o MySQL inicie automaticamente no boot, copie o script mysql.server que est localizado no diretrio acima, renomeando-o para vai /etc/rc.d/rc.mysqld depender a da ou /

etc/init.d/rc.mysqld (isto Linux), exemplo: ou ento fazer

sua distribuio em rc.local, por

referncia

ele

[/usr / src / m y s ql - 4.0.20 /s u p port - files]$ cp mysql.server /etc / r c.d / rc. m y sqld [/usr / src / m y s ql - 4.0.20]$ chmod +x /etc / r c.d / r c. m y s qld

Por fim, voc precisa definir a senha do usurio root de seu servidor de banco de dados.

Primeiramente, inicialize o servidor de banco de dados, digite no shell: [/etc / rc.d ]$ ./rc.m y sqld start

Se tudo der certo, o servidor estar na escuta na porta 3306, passe um escaner de portas nmap, que pode ser obtido no

endereo http://www.insecure.org/nmap/, no seu computador; veja o exemplo:

[/etc / rc.d ]$ nmap - sT - O localhost - p 3306 Starting nmap 20:32 BRT Warning: OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port Interesting ports on localhost (127.0.0.1): PORT STATE SERVICE 3.50 ( http:/ / w w w .i nsecu re.org / n m a p / ) at 2004 - 08 - 16

3306 / tcp open mysql Device type: general purpose Runnin g: Linux 2.4.X|2.5.X OS details: Linux Kernel 2.4.0 - 2.5.20 Uptime 0.081 days (since Mon Aug 16 18:36:38 2004)

Quando

voc

se

conecta

um

MySQL

Server,

normalmente

solicitada uma senha de usurio. Esta informao poder ser lida no momento em que ela trafegar na rede do cliente para o servidor. Para evitar os "scripts-kiddies" que ficam testando

ferramentas e exploits no seu servidor, voc deve filtrar a porta 3306 permitindo via conexo firewall apenas de hosts confiveis a chain

(Trusted

hosts),

iptables

(editando

INPUT), na qual foge ao escopo do artigo, ou ento desabilitar a escuta da porta 3306, descomentando (retirando o sinal #) a linha referente a skip-networking no arquivo /etc/my.cnf.

Quando desabilitamos a escuta da porta 3306, somente sero permitidas consultas a partir de do seu servidor (localhost). Ningum, nem mesmo o root poder conectar remotamente ao

Servidor MySQL, porm voc poder utilizar o PHPMyAdmin, que um excelente front-end do mysql, para gerenciamento de tabelas e administrao do servidor do banco de dados.

Abra o arquivo /etc/my.cnf com seu editor preferido (vi, pico, joe, etc...) e procure pela seo seguinte:

# Don't listen on a TCP/IP port at all. This can be a security enha nce m e n t, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or na me d pipes. # Note that using this option without enabling na me d pipes on Windows # (via the "enable - name d - pipe" option) will render mysqld useless! # #skip - networking

Descomente a linha skip-networking e reinicialize o servidor MySQL.

# Don't listen on a TCP/IP port at all. This can be a security enha nce m e n t, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or na me d pipes. # Note that using this option without enabling na me d pipes on Windows # (via the "enable - name d - pipe" option) will render mysqld useless! # skip- networking

MySQL

criptografa

as

senhas

dos

usurios

atravs

do

algoritmo hash md5 semelhante ao processo de armazenamento de senhas do Linux. Aps a instalao do MySQL, por padro, h superusurio (root) e outro usurio dois usurios; um Voc dever

padro.

excluir o usurio padro e definir uma senha para o root. Para defini a senha do root (superusurio) e apagar o usurio padro, siga os passos a seguir. Utilizaremos o mysql monitor, que o front-end em modo texto, que vem disponvel na

instalao do MySQL.

No shell digite os seguintes comandos:

ps:

observe

que mysql>

corresponde

ao

prompt

do MySQL

monitor.

[/usr /local / m y s ql / bi n ]$ /usr /local / m y s ql / bi n / m y s ql - u root - p Enter password: Welcome to the MySQL monitor. Com m a n d s end with ; or \g. Your MySQL connection id is 1 to server version: 4.0.20 - log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use mysql Database changed mysql> delete from user where user=''; Query OK, 2 rows affected (0.09 sec) mysql> update user set password=p assword('thc69 1') where user='root'; Query OK, 1 row affected (0.03 sec) Rows matched: 2 Changed: 1 Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> quit

3. Instalao do Apache 1.3.31


O apache o servidor de web mais utilizado no mundo. No momento que escrevia -, este rgo artigo, que a Netcraft e -

http://www.netcraft.com

registra

publica

estatsticas de utilizao de sistema na Internet, registrava que 67.70% dos servidores no mundo rodavam o Apache web

server. Se voc acompanhar a curva de adoo do apache e da utilizao do linux, ver que so praticamente idnticas. O sucesso do apache se deve a sua simplicidade, robustez,

segurana e alto desempenho. A escolha da verso 1.3.31 se deve segurana e estabilidade. Apesar da verso 2.x rodar sem nenhum problema, a grande

maioria no v motivo para trocar de verso. A instalao do apache que iremos que um abordar este melhor ser do tipo de

standalone,

haja

vista,

tipo

instalao/configurao das conexes aumentando de

possibilita assim para a

balanceamento Os requisitos so um

performance. utilizar o

necessrios

hardware

apache

computador pentium 233 com 48 Mbytes de memria RAM, embora o desenvolvedor afirme que a configurao mnima um 486 com 8 Mb de RAM; at possvel que a rodar o dos apache com esta

configurao, desabilitados.

desde

maioria

recursos

estejam

Iremos configurar o apache com as seguintes caractersticas:

a) Suporte a CGIs e Perl b) Suporte pginas dinmicas PHP c) Autenticao de usurios (.htaccess) d) hospedar banco de dados MySQL

obs: A grande maioria dos procedimentos seguintes requer o usurio root.

Baixe a verso 1.3.31 do apache em http://www.apache.org ou puxe direto deste endereo:

http://ftp.pucpr.br/apache/httpd/apache_1.3.31.tar.gz

Descompacte diretrio:

arquivo

apache_1.3.31.tar.gz

entre

no

[/usr / src] $ tar - zxvf apache_1.3.31.tar.g z [/usr / src]$ cd apache_1.3.31 /

Vamos escolher a seguinte estrutura para o apache: /var/www/cgi-bin Diretrio de execuo de scripts cgi; /var/www/htdocs Ser o diretrio onde ficaro as pginas html /var/log/apache /etc/apache e os scripts php; diretrio de logs de acesso do apache; Aqui ficar os arquivos de configurao do servidor de web onde (httpd.conf, ficar para os srm.conf programas e e do

access.conf); /usr/local/apache ser o local arquivos UID/GUID

necessrios

inicializao

daemon httpd. nodbody ser o usurio que executar o daemon httpd

Conforme configurao escolhida na tabela acima, execute os procedimentos no diretrio dos sources do apache: [/usr / src / a p ac he_1.3.31 /]$ ./configu re \ - - prefix= / us r / local / a p ac he - - htdocsdir= / v a r / w w w / h t d o cs \ - - cgidir= / v a r / w w w / c g i - bin - - logfiledir= / v a r / l o g / a p a c h e \ - - sysconfdir= / e tc / a p ac h e - - server - uid=nobod y - - server - gid=nobody \ - - enable - module=so [/usr / src / a p ac he_1.3.31 /]$ make [/usr / src / a p ac he_1.3.31 /]$ su [/usr / src / a p ac he_1.3.31 /]$ make install

Aps a compilao e instalao, verifique se o seu sistema

possui o usurio e grupo nobody com os seguintes comandos:

$ grep 'nobody' /etc / p ass wd $ grep 'nobody' /etc / g r o u p

conta

nobody

corresponde

um

usurio

genrico

que

no

possui direitos no sistema, apenas privilgio no daemon do Apache.

Se precisar adicionar o usurio e grupo nobody, execute:

$ groupadd nobody $ useradd - g nobody - d / nobody

Para testar a instalao default do apache: No shell digite:

[/usr /local / a p ac he / bi n]$ ./httpd - V Server version: Apache / 1.3.31 (Unix) Server built: Aug 21 2004 11:12:00 Server's Module Magic Number: 1XXXXXXX Server compiled with.... - D HAVE_MMAP - D HAVE_SHMGET - D USE_SHMGET_SCOREBOARD - D USE_MMAP_FILES - D HAVE_FCNTL_SERIALIZED_ACCEPT - D HAVE_SYSVSEM_SERIALIZED_ACCEPT - D SINGLE_LISTEN_UNSERIALIZED_ACCEPT - D DYNAMIC_MODULE_LIMIT=64 - D HARD_SERVER_LIMIT=256 - D HTTPD_ROOT="/ usr / l ocal / a p a c h e" - D SUEXEC_BIN="/usr / local / a p a c h e / b i n / s u e x ec" - D DEFAULT_PIDLOG="logs / h tt p d.pid" - D DEFAULT_SCOREBOARD="logs / h t t p d.scoreboard" - D DEFAULT_LOCKFILE="logs / h tt p d.lock" - D DEFAULT_ERRORLOG="logs / er ror_log" - D TYPES_CONFIG_FILE="/etc / a p a c h e / m i m e . t y p es" - D SERVER_CONFIG_FILE="/etc / a p a c h e / h t t p d.con f" - D ACCESS_CONFIG_FILE="/etc / a p a c h e / a c cess.conf" - D RESOURCE_CONFIG_FILE="/etc / a p ac h e / s r m .co n f"

Se tudo correu bem voc ver a verso instalada do apache e a data e hora de compilao e as opes escolhidas no configure.

ps: No objetivo deste artigo explanar sobre as possveis configuraes do servidor de web apache, nem de abranger todas as opes de customizaes deste servidor. Se o leitor quiser obter mais informaes, visite o site http://www.apache.org para maiores detalhes.

4. Instalao do PHP5
Inicialmente o leitor deve copiar a ltima verso do cdigo fonte do PHP no seguinte site: http://www.php.net/ Algumas das novas funcionalidades adicionadas no PHP5 esto relacionadas na tabela abaixo:

Zend Engine 2 Suporte a classes abstratas e interfaces PHP5 foi totalmente reescrito com libxml2 Suporte a exceptions e exceptions handling

No momento em que escrevia este livro a ltima verso do PHP foi a 5.0.1. Baixe o cdigo fonte da verso mais recente do PHP com o wget:

No shell digite: [/usr / src]$ wget http:/ / b r 2. p hp.n et / g e t / p h p 5.0.1.tar.gz / f r o m / b r . p h p. net / m i r ro r

Descompacte

os

fontes

do

PHP

no

mesmo

diretrio

que

voc

copiou o apache_1.3.31.tar.gz, no nosso caso: /usr/src

No shell digite: [/usr / src]$ tar - zxvf php - 5.0.1.tar.gz [/usr / src]$ cd php - 5.0.1 /

Escolhi por motivos bvios instalar o PHP com suporte a banco de dados MySQL e Apache. Para compilar e instalar o PHP5 siga os passos seguintes:

[/usr / src / p h p - 5.0.1 /]$ ./configure - - with - mysql= / u s r / l ocal / m y s ql \ - - with - apxs= / us r / local / a p ac he / b i n / a p x s [/usr / src / p h p - 5.0.1 /]$ make [/usr / src / p h p - 5.0.1 /]$ su [/usr / src / p h p - 5.0.1 /]$ make install

Se tudo deu certo, o leitor deve copiar o arquivo php.ini.dist para /etc/apache/php.ini. Este arquivo de configurao define as diretrizes de funcionamento e configurao do PHP5. Tambm ser necessrio do realizar apache os trs alteraes no arquivo suporte de a a

configurao PHP5,

(httpd.conf),

acrescentar

modificar

parmetros

DirectoryIndex

adicionar

extenso (DSO) do respectivo mdulo. Siga os passos seguintes

[/usr / src / p h p - 5.0.1 /]$ cp php.ini - dist /etc / a p a c h e / p h p .ini

Procure pela seo abaixo no seu /etc/apache/httpd.conf:

# Dynamic Shared Object (DSO) Support # # To be able to use the functionality of a module which was built as a DSO you # have to place corresponding `LoadModule' lines at this location so the # directives contained in it are actually available _before_ they are used. # Please read the file http://httpd.apache.org/docs/dso.html for more # details about the DSO mechanism and run `httpd -l' for the list of already # built-in (statically linked and thus always available) modules in your httpd # binary. # # Note: The order in which modules are loaded is important. change # the order below without expert advice. # # Example: # LoadModule foo_module libexec/mod_foo.so Don't

Acrescente a seguinte linha: LoadModule php5_module libexec/libphp5.so

Deve ficar assim:

# Dynamic Shared Object (DSO) Support # # To be able to use the functionality of a module which was built as a DSO you # have to place corresponding `LoadModule' lines at this location so the # directives contained in it are actually available _before_ they are used. # Please read the file http://httpd.apache.org/docs/dso.html for more # details about the DSO mechanism and run `httpd -l' for the list of already # built-in (statically linked and thus always available) modules in your httpd # binary. # # Note: The order in which modules are loaded is important. change # the order below without expert advice. # # Example: # LoadModule foo_module libexec/mod_foo.so # Linkando com a biblioteca LoadModule php5_module libexec/libphp5.so Don't

Voc precisa informar tambm ao servidor quais so os arquivos ou scripts que ele ir invocar o interpretador PHP5, para

isto, adicione as seguintes linhas no final do seu /etc/apache/httpd.conf.

#Definindo tipos de arquivos php AddType application/x-httpd-php .php .phtml AddType application/x-httpd-php-source .phps # Feito

Agora

defina

tambm

seo

DirectoryIndex,

que

so

os

arquivos que o apache ir procurar por default num diretrio de web.

# # DirectoryIndex: Name of the file or files to use as a pre-written HTML # directory index. # <IfModule mod_dir.c> DirectoryIndex index.html </IfModule> Separate multiple entries with spaces.

Acrescente o seguinte:

# # DirectoryIndex: Name of the file or files to use as a pre-written HTML # directory index. # <IfModule mod_dir.c> DirectoryIndex index.html index.php index.phtml </IfModule> Separate multiple entries with spaces.

Caso o leitor queira que o servidor de web inicie no boot, crie um link simblico rc.httpd no diretrio /etc/rc.d ou /etc/init.d; distribuio. isto ir depender exclusivamente de sua

5. Instalao do Bluefish 0.13


Bluefish um poderoso IDE editor html/php, distribudo sob licena GNU/GPL, com as seguintes caractersticas:

Capacidade de abrir mltiplos documentos Suporte arquivos remotos utilizando gnome-vfs Sintax highlighting Gerao de Thunbnails para pgina de screenshots ou alguns fotogrficos.

Assistentes de utilizao, etc...

O editor pode ser obtido gratuitamente atravs do seguinte endereo:

http://bluefish.openoffice.nl

A instalao do Bluefish simples e no requer parmetros adicionais. Apenas descompacte num diretrio de fontes,

compile e instale o aplicativo com os seguintes comandos:

[/usr / src /]$ tar - zxvf bluefish - 0.13.tar.gz [/usr / src /]$ cd bluefish - 0.13 / [/usr / src / bl uefish - 0.13]$ ./configu re [/usr / src / bl uefish - 0.13]$ make [/usr / src / bl uefish - 0.13]$ su [/usr / src / bl uefish - 0.13]$ make install

Para

iniciar

aplicativo,

digite

bluefish

na

linha

de

comando.

6 Testando a instalao

Em

primeiro lugar iremos verificar se ocorreu algum erro de na edio do arquivo /etc/apache/httpd.conf. Para

sintaxe

efetuar esta verificao, execute o comando abaixo:

[/usr /]$ /usr / local / a p ac he / bi n / a p a c h ectl configtest Syntax OK

Se a sada do comando NO foi Syntax OK, volte para a seo anterior, corrija o erro de sintaxe e verifique novamente com o comando acima.

Inicie o servidor de web digitando o seguinte:

[/usr /]$ /usr / local / a p ac he / bi n / a p a c h ectl start /usr / local / a p ac he / bi n / a p a c h ectl start: httpd started

Rode um scanner de portas, nmap conforme visto na seo 6.1, no seu computador ou d um netstat para certificar de que o apache est escutando na porta 80/tcp.

[/usr /]$ netstat - an|grep 0.0.0.0:80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN

Observe que a sada do comando informa que h um servidor aceitando conexes na porta 80.

Inicie seu browser preferido, Netscape, Mozilla ou firefox, e digite o seguinte endereo: http://localhost; o navegador

dever exibir uma pgina semelhante a figura abaixo, que pgina padro da instalao do apache e est localizada no diretrio raiz do seu servidor de web, no nosso caso, /var/www/htdocs.

Para saber se o php est realmente funcionando, crie um script com o seguinte contedo:

Salve

arquivo

em

/var/www/htdocs o browser e

com

seguinte o

nome:

infophp.php. endereo:

Inicie

aponte O

para

seguinte dever

http://localhost/infophp.php.

navegador

exibir uma pgina com o seguinte contedo:

Dvidas, crticas e sugestes sero bem vindas.

Fred Cox Junior fred.cox@terra.com.br http://paginas.terra.com.br/lazer/fredcox