Respostas:
Eu acho que isso pode ser o que você está procurando http://wiki.apache.org/httpd/RunningMultipleApacheInstances
Para referência do conteúdo no link acima
1) Instale o Apache no seu servidor
sudo apt-get install apache2
sudo apt-get install libapache2-mod-perl2
sudo apt-get install other-lib-mods-needed
2) Configure configurações apache separadas para cada instância que você deseja executar
Para o Ubuntu, isso deve estar em / etc / apache2. Essencialmente, para cada instância que você precisa ouvir em uma porta diferente.
# httpd-proxy.conf
Listen 80
ErrorLog /var/log/httpd-proxy-error.log
LoadModule proxy_module libexec/apache22/mod_proxy.so
LoadModule proxy_http_module libexec/apache22/mod_proxy_http.so
# httpd-perl.conf
Listen 81
ErrorLog /var/log/httpd-perl-error.log
LoadModule perl_module libexec/apache22/mod_perl.so
# httpd-python.conf
Listen 82
ErrorLog /var/log/httpd-python-error.log
LoadModule python_module libexec/apache22/mod_python.so
# httpd-php.conf
Listen 83
ErrorLog /var/log/httpd-php-error.log
LoadModule php5_module libexec/apache22/libphp5.so
Neste exemplo, haveria 4 instâncias diferentes em execução, cada uma processando um tipo de módulo diferente, ou seja, uma para perl, outra para python, etc.
Agora, você também precisa configurar os hosts virtuais na instância do proxy, para que sempre que uma solicitação para o servidor DAV do subversion seja passada para o seu apache 'python-dav', enquanto as solicitações para o seu blog wordpress sejam passadas para o seu ' instância do apache do php. Vamos editar 'httpd-proxy.conf' novamente:
# httpd-proxy.conf
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www/wordpress
ServerName blog.company.com
ProxyPass / http://localhost:83/
ProxyPassReverse / http://localhost:83/
[... additional directives here ... ]
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/svn
ServerName svn.company.com
ProxyPass / http://localhost:82/
ProxyPassReverse / http://localhost:82/
[... additional directives here ... ]
</VirtualHost>
# you get the idea ...
2b) teste tudo Então concluímos a configuração e agora precisamos iniciar todas as instâncias do apache e testar se tudo está funcionando conforme o esperado. Claro que você pode fazer isso usando 'apachectl', por exemplo
/usr/local/sbin/apachectl -f /usr/local/etc/apache22/proxy-httpd.conf configtest
/usr/local/sbin/apachectl -f /usr/local/etc/apache22/proxy-httpd.conf start
/usr/local/sbin/apachectl -f /usr/local/etc/apache22/perl-httpd.conf configtest
/usr/local/sbin/apachectl -f /usr/local/etc/apache22/perl-httpd.conf start
# and so on ...
3) Configure os scripts init para iniciar o apache com o arquivo de configuração apropriado
O recurso vinculado tem mais detalhes sobre a edição do arquivo rc.conf para isso, mas aborda especificamente o trato com o Ubuntu, portanto, nessas duas seções, destacarei abaixo.
O '/etc/rc.conf' no FreeBSD é o arquivo mestre que contém as informações de configuração do sistema. Esse arquivo é lido após a inicialização do kernel e serve para iniciar serviços, daemons, configurar interfaces de rede etc. Para nossa receita, habilitaremos o servidor apache, listando as instâncias disponíveis (perfis), seus arquivos de configuração e > dizendo ao FreeBSD quais destes precisam ser executados (ativados) após a inicialização do sistema.
# /etc/rc.conf
apache22_enable="YES"
apache22_profiles="proxy perl python php"
# the apache proxy instance
apache22_proxy_configfile="/usr/local/etc/apache22/httpd-proxy.conf"
apache22_proxy_enable="YES"
# the apache perl instance
apache22_perl_configfile="/usr/local/etc/apache22/httpd-perl.conf"
apache22_perl_enable="YES"
# the apache python instance
apache22_python_configfile="/usr/local/etc/apache22/httpd-python.conf"
apache22_python_enable="YES"
# the apache php instance
apache22_php_configfile="/usr/local/etc/apache22/httpd-php.conf"
apache22_php_enable="YES"
Quando esses perfis são configurados no /etc/rc.conf e ativados, eles serão iniciados> após a inicialização bem-sucedida do sistema. Se você deseja declarar um perfil, mas deseja apenas iniciar a instância correspondente do apache manualmente, basta editar '/etc/rc.conf' e> dizer, por exemplo:
# the apache php instance
apache22_php_configfile="/usr/local/etc/apache22/httpd-php.conf"
apache22_php_enable="NO"
Posteriormente, você pode iniciar / parar qualquer instância do apache manualmente usando apenas o nome do perfil> (proxy, perl, python, php), assim:
/usr/local/etc/rc.d/apache22 start php
/usr/local/etc/rc.d/apache22 stop perl
...
3b) para Ubuntu
Não tenho certeza se isso será semelhante (e indolor) como no caso do FreeBSD (veja a seção rc.conf acima). Os scripts apache rc instalados com a porta apache no FreeBSD estão cientes da possibilidade de diferentes perfis há anos.
Recentemente, os scripts de inicialização do Ubuntu / Debian (por exemplo, /etc/init.d/apache2) foram atualizados para suportar várias instâncias do apache (por exemplo, várias configurações, denominadas / etc / apache2- $ SUFFIX). Dependendo do lançamento do Ubuntu / Debian que você está usando, você pode ter sorte ... ou não.
O recurso apareceu no Debian na versão 2.2.14-6 em fevereiro de 2010: http://lists.alioth.debian.org/pipermail/pkg-apache-commits/2010-February/000295.html
No Ubuntu, os pacotes apache2 no Maverick (10.10) contêm esses patches: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.16-1ubuntu3.1/changelog
No entanto, o apache2 do Lucid (10.04, versão de suporte a longo prazo) aparentemente não funciona: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.14-5ubuntu8.4/changelog
A documentação pode ser encontrada em /usr/share/doc/apache2/README.multiple-instances
Obrigado pela sua resposta detalhada, mas mais tarde encontrei este link http://someofmylearnings.wordpress.com/2011/07/02/multiple-apache2-instances-on-ubuntu/ O procedimento mostrado neste exemplo muito simples.
Quando instalamos o Apache, há um /usr/share/doc/apache2.2-common/README.multiple-instances
arquivo que você dá uma idéia do que exatamente precisa ser feito para criar uma instância do Apache.
Dentro do mesmo diretório, há um examples
diretório que contém um script chamado setup-instance
que podemos usar para criar uma instância do Apache. Portanto, para criar outra instância do Apache, tudo o que precisa ser feito é:
sh /usr/share/doc/apache2.2-common/examples/setup-instance web-server1
Onde web-server1
é um sufixo. Ou seja, ele anexa "apache2-" por padrão ao nome da sua instância.
Isso criará um novo diretório /etc/apache-web-server1
que contém todos os arquivos de configuração. Ele também criaria o /etc/init.d/apache-web-server1
que você pode usar para iniciar a nova instância do Apache.