Como executar duas instâncias do apache no mesmo sistema (Ubuntu)

12

Como posso executar duas instâncias do apache no mesmo sistema e iniciá-las e interrompê-las independentemente umas das outras. Qualquer ajuda ou leads são bem-vindos.

    
por Sachin 09.06.2012 / 21:38

2 respostas

10

Acho que isso pode ser o que você está procurando link

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 separadas do apache para cada instância que você deseja executar

Para o Ubuntu, isso deve estar em / etc / apache2 Essencialmente, para cada instância, 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, uma para python, etc.

Agora, você também precisa configurar os hosts virtuais na instância do proxy, para que sempre que uma solicitação chegue ao servidor DAV de subversão, seja passada para o apache 'python-dav', enquanto as solicitações para o blog do wordpress são passadas para sua instância do apache 'php'. Vamos editar o '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, terminamos com 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 de inicialização 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 toca especificamente em lidar com o Ubuntu, então eu vou destacar ambas as seções abaixo.

The '/etc/rc.conf' in FreeBSD is the master file containing the system configuration >information. This file is read after booting the kernel, and serves to launch services, >daemons, set up network interfaces, etc. For our recipe we will be enabling the apache >server, listing the available instances (profiles), their configuration files, and >telling FreeBSD which of these need to be run (enabled) after booting the system.

# /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"

When these profiles are configured in /etc/rc.conf, and enabled, they will be started >after successfully booting the system. If you want to declare a profile but you only want >to start the corresponding apache instance manually, you can just edit '/etc/rc.conf' and >say, e.g. :

 # the apache php instance
 apache22_php_configfile="/usr/local/etc/apache22/httpd-php.conf"
 apache22_php_enable="NO"

Later, you can start/stop any apache instance manually using just the profile name >(proxy, perl, python, php), like this:

 /usr/local/etc/rc.d/apache22 start php
 /usr/local/etc/rc.d/apache22 stop perl
 ...

3b) para o Ubuntu

I'm not sure this will be similar (and painless) as in the case of FreeBSD (see section on rc.conf above). The apache rc scripts installed with the apache port in FreeBSD have been aware of the possibility of different profiles for years now.

Recently, the Ubuntu/Debian init scripts (e.g. /etc/init.d/apache2) have been updated to support multiple instances of apache (e.g. multiple configurations, named /etc/apache2-$SUFFIX). Depending on the release of Ubuntu/Debian you're using you may be lucky ... or not.

The feature appeared in Debian in version 2.2.14-6 in Feb 2010: http://lists.alioth.debian.org/pipermail/pkg-apache-commits/2010-February/000295.html

In Ubuntu, the apache2 packages in Maverick (10.10) contain these patches: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.16-1ubuntu3.1/changelog

However the Lucid (10.04, Long Term Support Release) apache2 apparently do not: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.14-5ubuntu8.4/changelog

Documentation can be found in /usr/share/doc/apache2/README.multiple-instances

    
por 09.06.2012 / 21:41
4

Obrigado pela sua resposta detalhada, mas depois encontrei este link link O procedimento mostrado neste muito simples.

Quando instalamos o Apache, há um arquivo /usr/share/doc/apache2.2-common/README.multiple-instances que você dá uma idéia do que exatamente precisa ser feito para criar uma instância do Apache.

Dentro do mesmo diretório existe um diretório examples que contém um script chamado setup-instance que podemos usar para criar uma instância do Apache. Então, 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. Também criaria /etc/init.d/apache-web-server1 , que você pode usar para iniciar a nova instância do Apache.

    
por 10.06.2012 / 09:44