Comment exécuter deux instances d'Apache sur le même système (Ubuntu)

14

Comment puis-je exécuter deux instances d'Apache sur le même système et les démarrer et les arrêter indépendamment l'une de l'autre. Toute aide ou piste est appréciée.

Sachin
la source

Réponses:

11

Je pense que c'est peut-être ce que vous recherchez http://wiki.apache.org/httpd/RunningMultipleApacheInstances

Pour référence du contenu dans le lien ci-dessus

1) Installez Apache sur votre serveur

sudo apt-get install apache2
sudo apt-get install libapache2-mod-perl2
sudo apt-get install other-lib-mods-needed

2) Configurez des configurations Apache distinctes pour chaque instance que vous souhaitez exécuter

Pour Ubuntu, cela devrait être dans / etc / apache2 Essentiellement pour chaque instance que vous devez écouter sur un port différent.

# 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

Dans cet exemple, il y aurait 4 instances différentes en cours d'exécution, chacune traitant un type de module différent, c'est-à-dire une pour perl, une pour python, etc.

Maintenant, vous devez également configurer les hôtes virtuels dans l'instance de proxy, de sorte que chaque fois qu'une demande arrive pour le serveur subversion DAV, elle soit transmise sur votre apache 'python-dav', tandis que les demandes pour votre blog wordpress sont transmises à votre ' php 'instance apache. Modifions à nouveau 'httpd-proxy.conf':

# 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) tout tester Nous avons donc terminé la configuration, et maintenant nous devons lancer toutes les instances d'apache, et tester que tout fonctionne comme prévu. Bien sûr, vous pouvez le faire en utilisant 'apachectl', par exemple

 /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) Configurez les scripts d'initialisation pour démarrer apache avec le fichier de configuration approprié

La ressource liée a plus de détails sur l'édition du fichier rc.conf pour cela, mais touche spécifiquement à la gestion d'Ubuntu, je vais donc mettre en évidence ces deux sections ci-dessous.

'/Etc/rc.conf' dans FreeBSD est le fichier maître contenant la configuration du système> les informations. Ce fichier est lu après le démarrage du noyau et sert à lancer des services,> des démons, à configurer des interfaces réseau, etc. Pour notre recette, nous allons activer le serveur apache>, répertoriant les instances disponibles (profils), leurs fichiers de configuration et > dire à FreeBSD lesquels doivent être exécutés (activés) après le démarrage du système.

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

Lorsque ces profils sont configurés dans /etc/rc.conf et activés, ils seront démarrés> après un démarrage réussi du système. Si vous voulez déclarer un profil mais que vous voulez> démarrer manuellement l'instance Apache correspondante, vous pouvez simplement éditer '/etc/rc.conf' et> dire, par exemple:

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

Plus tard, vous pouvez démarrer / arrêter n'importe quelle instance Apache manuellement en utilisant uniquement le nom de profil> (proxy, perl, python, php), comme ceci:

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

3b) pour Ubuntu

Je ne suis pas sûr que ce sera similaire (et indolore) comme dans le cas de FreeBSD (voir la section sur rc.conf ci-dessus). Les scripts apache rc installés avec le port apache dans FreeBSD sont conscients de la possibilité de différents profils depuis des années.

Récemment, les scripts d'initialisation Ubuntu / Debian (par exemple /etc/init.d/apache2) ont été mis à jour pour prendre en charge plusieurs instances d'Apache (par exemple, plusieurs configurations, nommées / etc / apache2- $ SUFFIX). Selon la version d'Ubuntu / Debian que vous utilisez, vous aurez peut-être de la chance ... ou pas.

La fonctionnalité est apparue dans Debian dans la version 2.2.14-6 en février 2010: http://lists.alioth.debian.org/pipermail/pkg-apache-commits/2010-F February/000295.html

Dans Ubuntu, les packages apache2 dans Maverick (10.10) contiennent ces correctifs: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.16-1ubuntu3.1/changelog

Cependant, l'apache2 Lucid (10.04, Long Term Support Release) ne le fait apparemment pas: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.14-5ubuntu8.4/changelog

La documentation peut être trouvée dans /usr/share/doc/apache2/README.multiple-instances

Joe
la source
Quel gros gâchis de graisse. Je ne veux pas vous offenser, je veux juste dire que c'est une douleur dans le S de faire de telles choses avec Linux.
Sliq
Pas sûr que je vois le deuxième processus d'installation mentionné comme plus facile ... donc en référence à la réponse d'origine ... Pourquoi avons-nous besoin du proxy? Chaque configuration individuelle n'est-elle pas suffisante pour se lier simplement à des ports distincts?
Alex.Barylski
5

Merci pour votre réponse détaillée mais plus tard, j'ai trouvé ce lien http://someofmylearnings.wordpress.com/2011/07/02/multiple-apache2-instances-on-ubuntu/ La procédure indiquée dans ce très simple.

Lorsque nous installons Apache, il y a un /usr/share/doc/apache2.2-common/README.multiple-instancesfichier qui vous donne une idée de ce qui doit être fait exactement pour créer une instance Apache.

À l'intérieur du même répertoire, il y a un examplesrépertoire qui contient un script nommé setup-instanceque nous pouvons utiliser pour créer une instance Apache. Donc, pour créer une autre instance Apache, tout ce qui doit être fait est:

sh /usr/share/doc/apache2.2-common/examples/setup-instance web-server1

web-server1est un suffixe. Autrement dit, il ajoute «apache2-» par défaut au nom de votre instance.

Cela va créer un nouveau répertoire /etc/apache-web-server1qui contient tous les fichiers de configuration. Il créerait également /etc/init.d/apache-web-server1que vous pouvez utiliser pour démarrer la nouvelle instance Apache.

Sachin
la source
Sur Ubuntu 14.04 LTS, le répertoire doc est / usr / share / doc / apache2 /
Josip Rodin
En fait, je pense que c'est une meilleure solution car elle permet un démarrage / arrêt séparé via une approche de service système, et les instances sont très indépendantes.
bfrguci