Jedi Tux

Apache2 + PHP5 + VirtualHosts no Debian e Ubuntu

Posted in Servers by Fernando Basso on 8 de setembro de 2009

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.

Uma resposta

Subscribe to comments with RSS.

  1. […] 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 | […]


Deixe um comentário