KISS - Keep it simple, stupid!

Apache 2.xx + mod_myvhost

postado por Marcus Vinicius em 04/08/2009 14:59:44
Não há tags para este post

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!

No tags for this post.

Trackback

Faça o seu

Comentários (2)

  • 001

    rafael

    em 04/08/2009 18:23:23

    lucius,

    otimo trabalho!

    muito massa saber que tu conseguiu… vai ajudar muito a todos reduzirem “remendas” no deploy e de desenvolvimento… sem precisar apelar e mexer com os ‘vhosts reais’…

    lembrando que, dessa maneira, eh preciso ter conta no google para dar checkout… para conseguir baixar o codigo anonimamente, substitua o passo do checkout com o svn por este:

    svn checkout http://mod-myvhost.googlecode.com/svn/branches/2.xx mod-myvhost-read-only

    bom, observando o que voce fez, gerei um patch, que pode ser aplicado no Makefile com o comando:

    patch Makefile Makefile.patch

    envie ele no issue tracker dos caras, afinal, voce sacou qual era o problema!
    =)

    []’s!
    t++!

  • 002

    Marcus Vinicius

    em 04/08/2009 20:26:02

    Vlw ae bodao… É legal lembrar também que testamos no OpenSuse aqui mas nao funcionou… nao sei exatamente o que acontece… talvez seja azia de arquivo de configuração que a gente fez cagada… mas nao descobrimos… assim que possivel, vou atualizar o post colocando mais detalhes…

    []’ss
    ++t (pre-incremento mais rápido! auehuaeu)

  • Faça seu comentário

Topo

3 Comentários

Creative Commons License
Sou Ágil: KISS em http://kiss.souagil.com.br está licenciado sobre
Creative Commons Attribution-Share Alike 2.5 Brazil License.

souÁgil