Apache2 + PHP5 + VirtualHosts no Debian e Ubuntu
A Causa
Quando iniciei o estudo de PHP me deparei com o fato de que é necessário um server para poder processar o código. Não basta apenas criar o arquivo .php e querer abir no navegador.
Vou demonstrar aqui o que fiz para ter o meu ambiente de estudos PHP. Estes exemplos foram realizados em um Ubuntu 9.10, e em um Debian Lenny.
O que vamos fazer é criar dois VirtualHosts:
http://www.estudo_1.home
e
http://www.estudo_2.home
# –> indica que o comando deve ser executado como root.
$ –> indica que o comando deve ser executado como usuário comum.
OBS: Os seus pcs devem estar configurados com ip fixo.
Instalando Apache2 e PHP5
# aptitude install apache2 php5 libapache2-mod-php5 php5-common php5-cgi php5-mysql
(php5-mysql é o módulo que nos permite acessar o MySQL)
Criando O Usuário E Os Diretórios Necessários
Vamos adicionar um usuário, o qual em sua $HOME ficarão os sites.
useradd -m www -s /bin/bash
passwd www
O primeiro comando adiciona o usuário www com sua pasta $HOME.
O segundo comando é para criar um password para o usuário www.
Agora logue-se como usuário www.
Vamos criar os diretórios necessários para a hospedagem dos nossos dois sites.
$ mkdir -p public_html/estudo_1.home/public
$ mkdir -p public_html/estudo_2.home/public
Crie um arquivo chamado index.html na pasta public dos dois sites com algum conteúdo (html/php) qualquer.
Criando Os Hosts Virtuais
# vim /etc/apache2/sites-available/www.estudo_1.home
Coloque o seguinte conteúdo dentro do arquivo:
<VirtualHost *:80> ServerName www.estudo_1.home DocumentRoot /home/www/public_html/estudo_1.home/public </VirtualHost>
E
# vim /etc/apache2/sites-available/www.estudo_2.home
Coloque o seguinte conteúdo dentro do arquivo:
<VirtualHost *:80> ServerName www.estudo_2.home DocumentRoot /home/www/public_html/estudo_2.home/public </VirtualHost>
Claro que tem muito mais opções, e eu nem sei muito, mas estas aí já fazem o necessário para um site básico.
Desabilite o site default do apache e abilte os seus sites recém criados:
# a2dissite default
# a2ensite www.estudo_1.home
# a2ensite www.estudo_2.home
Editando o /etc/apache2/apache2.conf
Certifique-se de que, por volta da linha 50, você tenha:
NameVirtualHost *:80
ServerName "www.estudos.home"
ServerRoot "/home/www"
Editando o /etc/apache2/ports.conf
Aqui, apenas certifique-se de que você tenha:
NameVirtualHost *:80
Listen 80
Tornar Seus Sites Visíveis Na Lan
Abra o /etc/hosts e adicione:
192.168.1.5 www.estudo_1.home
192.168.1.5 www.estudo_2.home
Claro, isto supondo-se que o ip do seu pc é 192.168.1.5. Use o seu próprio ip.
Se quiser que outros pcs da LAN possam acessar seus dois sites, abra o /etc/hosts destes pcs, e adicione as mesmas linhas demonstradas acima. No windows é c:\windows\system32\drivers\etc\hosts (Por que raios o \etc\hosts do windows está em um dir chamado drivers?!?!)
OBS: Para estudar php em casa, isto já é o suficiente, mas o correto seria configurar um servidor DNS.
Reiniciando O Apache
# /etc/init.d/apache2 restart
OBS: No Debian, foi perfeito. No Ubuntu porém, eu recebi um erro:
[error] (EAI 2)Name or service not known: Could not resolve host name *80 -- ignoring!
Pelo que pesquisei na web, para este erro é causado porque não temos um servidor dns configurado. Mesmo assim, isto não chega a ser um problema. Você vai conseguir acessar os seus dois sites normalmente apartir da LAN.
UTF-8
Ainda, para evitar problemas com acentos, edite o arquivo /etc/apache2/conf.d/charset e adicione (ou descomente) AddDefaultCharset UTF-8
Finalizando
O básico está pronto. Agora já é possível abrir seus arquivos .php tanto do Server quanto dos hosts da lan. Abra um navegador e digite http://www.estudo_1.home/ na barra de endereços e você deverá ver o a página index.html que você criou anteriormente na pasta public dos sites.
Agora basta cirar seus arquivos .php. Digamos que você fez o hello_world.php basta digitar:
http://www.estudo_1.home/hello_world.php
IMPORTANTE: Não adianta querer abrir os arquivos .php direto do HD (clicando com o botão direito do mouse e escolher ‘abrir com firefox’ (ou opera!) , como fazemos com arquivos .html. Não funciona!. Os arquivos .php precisam ser processados no server. Por isso é necessário digitar a url na barra de endereços do browser.
Uma última dica: se você precisar colocar códigos php em arquivos html, eles não serão executados, obviamente. Para que o código php sejá executado dentro de arquivos com extensão .html, crie um arquivo chamado .htaccess na pasta /home/www/public_htm (ou em qualquer outra pasta onde houver arquivos a serem executados) e addicione:
AddType application/x-httpd-php .html. Com isto todos os seus arquivos .html serão executados como php.
Desculpem quaisquer erros. Funcionou pra mim, e espero que ajudem alguém.
[…] tenho este texto no meu blog: https://jeditux.wordpress.com/2009/09/08/apache2-php5-virtualhosts-debian-ubuntu/ Desculpem qualquer erro. Funcionou pra mim, e espero que ajude alguém. March 29th, 2010 | […]