Escolar Documentos
Profissional Documentos
Cultura Documentos
1. INTRODUO Este
documento tem por objetivo detalhar passo a passo o
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.
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
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
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 /
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
[/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
# 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.
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
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
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
a) Suporte a CGIs e Perl b) Suporte pginas dinmicas PHP c) Autenticao de usurios (.htaccess) d) hospedar banco de dados MySQL
http://ftp.pucpr.br/apache/httpd/apache_1.3.31.tar.gz
Descompacte diretrio:
arquivo
apache_1.3.31.tar.gz
entre
no
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
necessrios
inicializao
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
conta
nobody
corresponde
um
usurio
genrico
que
no
[/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:
Descompacte
os
fontes
do
PHP
no
mesmo
diretrio
que
voc
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
# 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
# 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
#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
# # 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
Capacidade de abrir mltiplos documentos Suporte arquivos remotos utilizando gnome-vfs Sintax highlighting Gerao de Thunbnails para pgina de screenshots ou alguns fotogrficos.
http://bluefish.openoffice.nl
A instalao do Bluefish simples e no requer parmetros adicionais. Apenas descompacte num diretrio de fontes,
[/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
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.
[/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.
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