Come eseguire due istanze di apache sullo stesso sistema (Ubuntu)


14

Come posso eseguire due istanze di apache sullo stesso sistema e avviarle e arrestarle indipendentemente l'una dall'altra. Qualsiasi aiuto o aiuto è apprezzato.

Risposte:


11

Penso che questo potrebbe essere quello che stai cercando http://wiki.apache.org/httpd/RunningMultipleApacheInstances

Per riferimento al contenuto nel link sopra

1) Installa Apache sul tuo server

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

2) Configurare configurazioni apache separate per ogni istanza che si desidera eseguire

Per Ubuntu, questo dovrebbe essere in / etc / apache2 Essenzialmente per ogni istanza che devi ascoltare su una porta diversa.

# 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 questo esempio, ci sarebbero 4 diverse istanze in esecuzione, ognuna elaborando un diverso tipo di modulo, ovvero uno per perl, uno per python, ecc.

Ora, devi anche configurare gli host virtuali nell'istanza proxy, in modo che ogni volta che arriva una richiesta per il server DAV sovversione, venga passata al tuo apache 'python-dav', mentre le richieste per il tuo blog wordpress vengono passate al tuo ' php 'istanza apache. Modifichiamo di nuovo "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) testare tutto Quindi abbiamo terminato la configurazione e ora dobbiamo avviare tutte le istanze di apache e testare che tutto funzioni come previsto. Ovviamente puoi farlo usando 'apachectl', ad es

 /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) Configurare gli script init per avviare apache con il file di configurazione appropriato

La risorsa collegata ha maggiori dettagli sulla modifica del file rc.conf per questo, ma tocca specificamente la gestione di Ubuntu, quindi entrambe queste sezioni che metterò in evidenza di seguito.

Il '/etc/rc.conf' in FreeBSD è il file principale contenente la configurazione del sistema> informazioni. Questo file viene letto dopo l'avvio del kernel e serve per avviare servizi,> demoni, impostare interfacce di rete, ecc. Per la nostra ricetta abiliteremo il server apache>, elencando le istanze (profili) disponibili, i loro file di configurazione e > dire a FreeBSD quale di questi deve essere eseguito (abilitato) dopo l'avvio del 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 questi profili sono configurati in /etc/rc.conf e abilitati, verranno avviati> dopo aver avviato correttamente il sistema. Se vuoi dichiarare un profilo ma vuoi solo> avviare manualmente l'istanza apache corrispondente, puoi semplicemente modificare '/etc/rc.conf' e> dire, ad esempio:

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

Successivamente, puoi avviare / arrestare manualmente qualsiasi istanza di apache usando solo il nome del profilo> (proxy, perl, python, php), in questo modo:

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

3b) per Ubuntu

Non sono sicuro che questo sarà simile (e indolore) come nel caso di FreeBSD (vedi la sezione su rc.conf sopra). Gli script apache rc installati con la porta apache in FreeBSD sono consapevoli della possibilità di profili diversi da anni.

Recentemente, gli script di Ubuntu / Debian (ad es. /Etc/init.d/apache2) sono stati aggiornati per supportare più istanze di apache (ad es. Configurazioni multiple, denominate / etc / apache2- $ SUFFIX). A seconda del rilascio di Ubuntu / Debian che stai usando, potresti essere fortunato ... o no.

La funzione è apparsa in Debian nella versione 2.2.14-6 nel febbraio 2010: http://lists.alioth.debian.org/pipermail/pkg-apache-commits/2010-February/000295.html

In Ubuntu, i pacchetti apache2 in Maverick (10.10) contengono queste patch: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.16-1ubuntu3.1/changelog

Tuttavia, Apache2 Lucid (10.04, Long Term Support Release) apparentemente non lo fa: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.14-5ubuntu8.4/changelog

La documentazione è disponibile in /usr/share/doc/apache2/README.multiple-instances


Che gran casino grasso. Non offenderti, voglio solo dire che è un dolore per S fare queste cose con Linux.
Sliq,

Non sono sicuro di vedere il secondo processo di installazione menzionato come più semplice ... quindi in riferimento alla risposta originale ... Perché abbiamo bisogno del proxy? Ogni singola configurazione non è sufficiente per collegarsi semplicemente a porte distinte?
Alex.Barylski,

5

Grazie per la risposta dettagliata, ma in seguito ho trovato questo link http://someofmylearnings.wordpress.com/2011/07/02/multiple-apache2-instances-on-ubuntu/ La procedura mostrata in questo semplicissimo.

Quando installiamo Apache, c'è un /usr/share/doc/apache2.2-common/README.multiple-instancesfile che ti dà un'idea di cosa esattamente deve essere fatto per creare un'istanza di Apache.

All'interno della stessa directory c'è una examplesdirectory che contiene uno script chiamato setup-instanceche possiamo usare per creare un'istanza di Apache. Quindi, per creare un'altra istanza di Apache tutto ciò che deve essere fatto è:

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

dove web-server1è un suffisso. Cioè, aggiunge "apache2-" per impostazione predefinita al nome dell'istanza.

Ciò creerà una nuova directory /etc/apache-web-server1che contiene tutti i file di configurazione. Creerebbe anche /etc/init.d/apache-web-server1che è possibile utilizzare per avviare la nuova istanza di Apache.


Su Ubuntu 14.04 LTS la directory doc è / usr / share / doc / apache2 /
Josip Rodin

In realtà penso che questa sia una soluzione migliore perché consente l'avvio / arresto separato tramite un approccio di servizio di sistema e le istanze sono altamente indipendenti.
bfrguci,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.