Aynı sistemde iki apache örneği nasıl çalıştırılır (Ubuntu)


14

Aynı sistemde iki apache örneğini nasıl çalıştırabilir ve birbirinden bağımsız olarak nasıl başlatabilir ve durdurabilirim. Herhangi bir yardım veya olası satış takdir edilir.

Yanıtlar:


11

Bence bu http://wiki.apache.org/httpd/RunningMultipleApacheInstances aradığınız şey olabilir

Yukarıdaki linkteki içeriğe referans için

1) Apache'yi sunucunuza yükleyin

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

2) Çalıştırmak istediğiniz her örnek için ayrı apache yapılandırmaları yapılandırın

Ubuntu için bu / etc / apache2 içinde olmalıdır. Temelde farklı bir bağlantı noktasında dinlemeniz gereken her örnek için.

# 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

Bu örnekte, her biri farklı bir modül türünü işleyen 4 farklı örnek olacaktır, yani perl için bir, python için bir vb.

Şimdi, proxy örneğindeki sanal ana bilgisayarları da yapılandırmanız gerekir, böylece alt sürüm DAV sunucusu için her istek geldiğinde, 'python-dav' apache'nize iletilirken, wordpress blogunuz için istekleriniz ' php 'apache örneği. 'Httpd-proxy.conf' dosyasını tekrar düzenleyelim:

# 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) her şeyi test edin Bu yüzden yapılandırmayı bitirdik ve şimdi tüm apache örneklerini başlatmamız ve her şeyin beklendiği gibi çalıştığını test etmemiz gerekiyor. Elbette bunu 'apachectl' kullanarak yapabilirsiniz, örn.

 /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) Başlangıç ​​komut dosyalarını uygun yapılandırma dosyasıyla apache başlatacak şekilde yapılandırın

Bağlantılı kaynak, bunun için rc.conf dosyasını düzenlemeyle ilgili daha fazla ayrıntıya sahiptir, ancak özellikle Ubuntu ile uğraşırken dokunur, bu yüzden her iki bölümü de aşağıda vurgulayacağım.

FreeBSD'deki '/etc/rc.conf', sistem yapılandırması> bilgilerini içeren ana dosyadır. Bu dosya çekirdeği önyükledikten sonra okunur ve hizmetleri,> cinleri, ağ arayüzlerini vb. > sisteme önyükleme yapıldıktan sonra FreeBSD'ye hangilerinin çalıştırılması (etkinleştirilmesi) gerektiğini söyleme.

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

Bu profiller /etc/rc.conf içinde yapılandırıldığında ve etkinleştirildiğinde, sistem başarıyla başlatıldıktan sonra> başlatılır. Bir profil bildirmek istiyorsanız, ancak yalnızca> ilgili apache örneğini manuel olarak başlatmak istiyorsanız, '/etc/rc.conf' dosyasını düzenleyebilir ve> diyelim, örneğin:

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

Daha sonra, aşağıdaki profil adını> (proxy, perl, python, php) kullanarak herhangi bir apache örneğini manuel olarak başlatabilir / durdurabilirsiniz:

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

3b) Ubuntu için

Bunun FreeBSD örneğinde olduğu gibi benzer (ve ağrısız) olacağından emin değilim (yukarıdaki rc.conf bölümüne bakın). FreeBSD'de apache portu ile kurulan apache rc betikleri yıllardır farklı profillerin olabileceğinin farkında.

Son zamanlarda, Ubuntu / Debian başlangıç ​​komut dosyaları (örn. /Etc/init.d/apache2), birden çok apache örneğini (örneğin / etc / apache2- $ SUFFIX adlı birden çok yapılandırma) desteklemek üzere güncellendi. Kullandığınız Ubuntu / Debian'ın sürümüne bağlı olarak şanslı olabilirsiniz ...

Bu özellik Debian'da Şubat 2010'da 2.2.14-6 sürümünde ortaya çıktı: http://lists.alioth.debian.org/pipermail/pkg-apache-commits/2010-February/000295.html

Ubuntu'da, Maverick'teki (10.10) apache2 paketleri şu yamaları içerir: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.16-1ubuntu3.1/changelog

Ancak Lucid (10.04, Uzun Süreli Destek Sürümü) apache2 görünüşe göre: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.14-5ubuntu8.4/changelog

Belgeleri /usr/share/doc/apache2/README.multiple-instances adresinde bulabilirsiniz.


Ne büyük şişman bir karmaşa. Sana zarar vermek yok, sadece S'de linux ile böyle şeyler yapmanın bir acı olduğunu söylemek istiyorum.
Sliq

Bahsedilen ikinci kurulum sürecini daha kolay olarak gördüğümden emin değilim ... orijinal cevaba referans olarak ... Neden proxy'ye ihtiyacımız var? Her bir yapılandırma, farklı bağlantı noktalarına bağlanmak için yeterli değil mi?
Alex.Barylski

5

Ayrıntılı cevabınız için teşekkürler ama daha sonra bu bağlantıyı buldum http://someofmylearnings.wordpress.com/2011/07/02/multiple-apache2-instances-on-ubuntu/ Bu işlem çok basit bir şekilde gösterilmiştir.

Apache'yi yüklediğimizde, /usr/share/doc/apache2.2-common/README.multiple-instancesbir Apache örneği oluşturmak için tam olarak ne yapılması gerektiği hakkında fikir verdiğiniz bir dosya vardır.

Aynı dizinin içinde bir Apache örneği oluşturmak için kullanabileceğimiz examplesbir komut dosyası içeren bir dizin vardır setup-instance. Yani, başka bir Apache örneği oluşturmak için yapılması gereken tek şey:

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

web-server1bir sonek nerede . Yani, örnek adınıza varsayılan olarak “apache2-” ekler.

Bu /etc/apache-web-server1, tüm yapılandırma dosyalarını içeren yeni bir dizin oluşturur. Ayrıca /etc/init.d/apache-web-server1, yeni Apache örneğini başlatmak için kullanabileceğiniz öğeleri de oluşturacaktır .


Ubuntu 14.04 LTS'de doc dizini / usr / share / doc / apache2 /
Josip Rodin

Aslında bunun daha iyi bir çözüm olduğunu düşünüyorum çünkü sistem hizmeti yaklaşımı ile ayrı başlatma / durdurmaya izin veriyor ve örnekler oldukça bağımsız.
bfrguci
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.