Apache 2.xx + mod_myvhost

Desde muito tempo atraz, ficamos intrigados em ter que rebootar o apache a cada nova configuração de vhost. O Bodão inclusive descobriu um tal de mod_myvhost, mas que para nossa infelicidade funcionava somente no Apache 1.3.x. E assim como nós, os caras do slack-users, também acharam que compilar esse módulo para a versao 2.xx do Apache não era possível.
Bom… A idéia foi abandonada, e a azia de reboot continuava causando com a galera! ¬¬”
Recentemente (mais precisamente na sexta passada), resolvi colocar a idéia do Mano em prática: configurar um ambiente de desenvolvimento padronizado para a empresa!
Tá… legal… As idéias foram surgindo… Mas peraí! Pouts… “A gente podia dar um jeito de não ter que ficar dando restart no Apache neh?” É!
Bom… foi o suficiente pra que eu (teimoso como sempre) fritasse algumas horas e colocasse o mod_myvhost pra rodar!
OK! Chega de historinha e vamos instalar neh…

1 – Execute esse script aqui
Ele baixa o source, corrige o Makefile e compila o módulo:

#!/bin/bash
 
mysql_libs=`mysql_config --libs | sed 's,-rdynamic ,,'`
 
if [ $? -ne 0 ];
then
echo -e "\n\nVoce precisa da \"libmysqlclient-devel\" para continuar a instalacao"
fi
 
APXS=`apxs`
if [ $? -ne 0 ];
then
echo -e "\n\nVoce precisa de \"apache2-devel\" para continuar a instalacao"
fi
 
svn checkout https://mod-myvhost.googlecode.com/svn/branches/2.xx mod-myvhost-read-only
cd ./mod-myvhost-read-only
 
sed -i "s,\`mysql_config --libs\`,$mysql_libs," Makefile
 
make -w -i --silent && wait
cp .libs/mod_myvhost.so ./

Depois do módulo compilado…
coloque-o no diretório de módulos do seu Apache

cp ./mod_myvhost.conf /usr/lib/httpd/modules/

2 – Configure o seu httpd.conf
basta inserir as linhas que seguem no fim do arquivo. Lembre-se de comentar o include do arquivo onde estavam os antigos vhosts.

...
#Include /etc/httpd/extra/httpd-vhosts.conf
...
 
LoadModule myvhost_module lib/httpd/modules/mod_myvhost.so
 
# My Virtual Hosts Configuration
Include /etc/httpd/extra/httpd-myvhosts.conf

3 – Crie seu httpd-myvhosts.conf
pra isso é só colocar as linhas seguintes em /etc/httpd/extra/httpd-myvhosts.conf, e alterar onde for necessário

NameVirtualHost *:80
 
MyVhostOn on
MyVhostDefaultHost "localhost"
MyVhostDefaultRoot "/srv/www/htdocs/"
MyVhostDbHost "localhost"
MyVhostDbSocket "/var/run/mysql/mysql.sock"
MyVhostDbUser "usuario"
MyVhostDbPass "senha"
MyVhostDbName "hosting"
MyVhostQuery "SELECT `rootdir`,`admin`,`extra_php_config` FROM `vhosts` WHERE (`vhost`='%s' OR `valias`='%s') AND `enabled`='yes'"
 
# Configuracoes Opcionais
Options Indexes FollowSymLinks
RewriteEngine On
AllowOverride All
Order allow,deny
Allow from all

4 – Criando o banco de dados

CREATE DATABASE `hosting`;
USE `hosting`;
 
CREATE TABLE `vhosts` (
`vhost` varchar(255) NOT NULL DEFAULT '',
`valias` varchar(255) NOT NULL DEFAULT '',
`enabled` enum('yes','no') NOT NULL DEFAULT 'no',
`rootdir` varchar(255) NOT NULL DEFAULT '',
`admin` varchar(255) DEFAULT '',
`extra_php_config` text,
UNIQUE KEY `vhostname` (`vhost`),
KEY `enabled` (`enabled`)
) TYPE=MyISAM COMMENT='vhosts';

5 – Concluindo
Agora é só restartar o apache (PELA ULTIMA VEZ! haha), popular o banco e começar a utilizar!