web-dev-qa-db-fra.com

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

Comment puis-je exécuter deux instances d'Apache sur le même système et commencer et les arrêter de manière indépendante les unes des autres. Toute aide ou paradis est appréciée.

15
Sachin

Je pense que cela pourrait être ce que vous recherchez http://wiki.apache.org/httpd/runningmultipléapétapes

Pour référence du contenu dans la liaison 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 Séparez Apache 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 autre port.

# 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, chaque traitement de type module différent, c'est-à-dire un pour Perl, un pour python, etc.

Maintenant, vous devez également configurer les hôtes virtuels de l'instance de proxy, de sorte que chaque fois qu'une demande est livrée pour le serveur DAV Subversion, elle est transmise à votre Apache 'Python-Dav', alors que les demandes de votre wordpress Blog est transmis à votre instance d'apache 'php'. Éditez à nouveau 'httpd-proxy.conf' à nouveau:

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

 /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 init pour démarrer Apache avec le fichier de configuration approprié

La ressource liée a plus de détails sur la modification du fichier rc.conf pour cela, mais touche spécifiquement avec le traitement de Ubuntu, de sorte que ces deux sections, je souligne ci-dessous.

"/Etc/rc.conf" dans FreeBSD est le fichier maître contenant la configuration système> Informations. Ce fichier est lu après le démarrage du noyau et sert à lancer des services,> Daemons, configurez des interfaces réseau, etc. Pour notre recette, nous permettrons au serveur Apache> Listing des instances disponibles (profils), leurs fichiers de configuration et > Teller FreeBSD Laquelle de ces personnes doit être exécutée (activée) après avoir démarré le 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é, ils seront démarrés> après avoir démonté avec succès le système. Si vous souhaitez déclarer un profil, mais vous ne voulez que> pour démarrer l'instance Apache correspondante manuellement, vous pouvez simplement modifier '/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 toute instance Apache à l'aide du nom du 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 cela 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 à FreeBSD ont été conscients de la possibilité de différents profils depuis des années.

Récemment, les scripts Ubuntu/Debian Init (par exemple /etc/init.d/apache2) ont été mis à jour pour prendre en charge plusieurs instances d'Apache (E.G. Plusieurs configurations, nommées/etc/Apache2- $ suffixe). Selon la sortie d'Ubuntu/Debian, vous utilisez, vous pouvez avoir une chance ... ou non.

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

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

Cependant, la libération de soutien lucide (10,04, longue durée) Apache2 n'a 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.multiples-Instances

12
Joe