Wie kann ich zwei Instanzen von Apache auf demselben System ausführen und sie unabhängig voneinander starten und stoppen? Jede Hilfe oder Hinweise werden geschätzt.
quelle
Wie kann ich zwei Instanzen von Apache auf demselben System ausführen und sie unabhängig voneinander starten und stoppen? Jede Hilfe oder Hinweise werden geschätzt.
Ich denke, das könnte das sein, wonach Sie suchen: http://wiki.apache.org/httpd/RunningMultipleApacheInstances
Als Referenz für den Inhalt des obigen Links
1) Installieren Sie Apache auf Ihrem Server
sudo apt-get install apache2
sudo apt-get install libapache2-mod-perl2
sudo apt-get install other-lib-mods-needed
2) Konfigurieren Sie separate Apache-Konfigurationen für jede Instanz, die Sie ausführen möchten
Für Ubuntu sollte dies in / etc / apache2 sein. Grundsätzlich müssen Sie für jede Instanz einen anderen Port abhören.
# 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
In diesem Beispiel würden 4 verschiedene Instanzen ausgeführt, die jeweils einen anderen Modultyp verarbeiten, dh eine für Perl, eine für Python usw.
Jetzt müssen Sie auch die virtuellen Hosts in der Proxy-Instanz konfigurieren, damit eine Anforderung an den Subversion-DAV-Server immer an Ihren Python-Dav-Apache weitergeleitet wird, während Anforderungen für Ihr WordPress-Blog an Ihren weitergeleitet werden. PHP 'Apache-Instanz. Lass uns nochmal 'httpd-proxy.conf' editieren:
# 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 alles Also sind wir mit der Konfiguration fertig und jetzt müssen wir alle Apache-Instanzen starten und testen, ob alles wie erwartet funktioniert. Natürlich können Sie dies mit 'apachectl' tun, z
/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) Konfigurieren Sie die Init-Skripte, um Apache mit der entsprechenden Konfigurationsdatei zu starten
Die verlinkte Ressource enthält nähere Informationen zum Bearbeiten der rc.conf-Datei, befasst sich jedoch speziell mit dem Umgang mit Ubuntu, sodass ich diese beiden Abschnitte im Folgenden hervorheben werde.
Die '/etc/rc.conf' in FreeBSD ist die Masterdatei, die die Systemkonfiguration> Informationen enthält. Diese Datei wird nach dem Booten des Kernels gelesen und dient zum Starten von Diensten,> Daemons, zum Einrichten von Netzwerkschnittstellen usw. Für unser Rezept aktivieren wir den Apache-Server> und listen die verfügbaren Instanzen (Profile), ihre Konfigurationsdateien und auf > FreeBSD mitteilen, welche davon nach dem Booten des Systems ausgeführt (aktiviert) werden sollen.
# /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"
Wenn diese Profile in /etc/rc.conf konfiguriert und aktiviert sind, werden sie nach dem erfolgreichen Systemstart gestartet. Wenn Sie ein Profil deklarieren möchten, aber> nur die entsprechende Apache-Instanz manuell starten möchten, können Sie einfach '/etc/rc.conf' bearbeiten und> sagen:
# the apache php instance
apache22_php_configfile="/usr/local/etc/apache22/httpd-php.conf"
apache22_php_enable="NO"
Später können Sie jede Apache-Instanz manuell starten / stoppen, indem Sie nur den Profilnamen> (Proxy, Perl, Python, PHP) wie folgt eingeben:
/usr/local/etc/rc.d/apache22 start php
/usr/local/etc/rc.d/apache22 stop perl
...
3b) für Ubuntu
Ich bin mir nicht sicher, ob dies ähnlich (und schmerzlos) sein wird wie im Fall von FreeBSD (siehe Abschnitt über rc.conf oben). Die mit dem Apache-Port in FreeBSD installierten Apache RC-Skripte kennen seit Jahren die Möglichkeit unterschiedlicher Profile.
Kürzlich wurden die Ubuntu / Debian-Init-Skripte (z. B. /etc/init.d/apache2) aktualisiert, um mehrere Instanzen von Apache zu unterstützen (z. B. mehrere Konfigurationen mit dem Namen / etc / apache2- $ SUFFIX). Abhängig von der Version von Ubuntu / Debian, die Sie verwenden, können Sie Glück haben ... oder nicht.
Die Funktion erschien in Debian in Version 2.2.14-6 im Februar 2010: http://lists.alioth.debian.org/pipermail/pkg-apache-commits/2010-February/000295.html
In Ubuntu enthalten die Apache2-Pakete in Maverick (10.10) die folgenden Patches: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.16-1ubuntu3.1/changelog
In der Lucid-Version (10.04, Long Term Support Release) von Apache2 scheint dies jedoch nicht der Fall zu sein : http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.14-5ubuntu8.4/changelog
Die Dokumentation finden Sie unter /usr/share/doc/apache2/README.multiple-instances
Vielen Dank für Ihre ausführliche Antwort, aber später fand ich diesen Link http://someofmylearnings.wordpress.com/2011/07/02/multiple-apache2-instances-on-ubuntu/ Die in dieser Anleitung gezeigte Vorgehensweise ist sehr einfach.
Wenn wir Apache installieren, gibt es eine
/usr/share/doc/apache2.2-common/README.multiple-instances
Datei, die Ihnen eine Vorstellung davon gibt, was genau getan werden muss, um eine Apache-Instanz zu erstellen.In demselben Verzeichnis befindet sich ein
examples
Verzeichnis, das ein Skript mit dem Namen enthältsetup-instance
, mit dem wir eine Apache-Instanz erstellen können. Um eine weitere Apache-Instanz zu erstellen, müssen Sie lediglich folgende Schritte ausführen:wo
web-server1
ist ein Suffix. Das heißt, es wird standardmäßig "apache2-" an Ihren Instanznamen angehängt.Dadurch wird ein neues Verzeichnis erstellt,
/etc/apache-web-server1
das alle Konfigurationsdateien enthält. Es würde auch erstellen, mit/etc/init.d/apache-web-server1
denen Sie die neue Apache-Instanz starten können.quelle