Cara menjalankan dua instance apache pada sistem yang sama (Ubuntu)

14

Bagaimana saya bisa menjalankan dua contoh apache pada sistem yang sama dan memulai dan menghentikannya secara terpisah. Bantuan atau petunjuk apa pun dihargai.

Sachin
sumber

Jawaban:

11

Saya pikir ini mungkin yang Anda cari http://wiki.apache.org/httpd/RunningMultipleApacheInstances

Untuk referensi konten di tautan di atas

1) Instal Apache di server Anda

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

2) Konfigurasikan konfigurasi apache terpisah untuk setiap instance yang ingin Anda jalankan

Untuk Ubuntu, ini harus di / etc / apache2 Pada dasarnya untuk setiap instance Anda perlu mendengarkan pada port yang berbeda.

# 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

Dalam contoh ini, akan ada 4 instance berbeda yang berjalan, masing-masing memproses tipe modul yang berbeda, yaitu satu untuk perl, satu untuk python, dll.

Sekarang, Anda juga perlu mengonfigurasi host virtual dalam instance proxy, sehingga setiap kali ada permintaan untuk server DAV subversi, ia akan diteruskan ke apache 'python-dav' Anda, sedangkan permintaan untuk blog wordpress Anda diteruskan ke ' contoh apache php '. Mari kita edit lagi '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) menguji semuanya Jadi kita sudah selesai dengan konfigurasi, dan sekarang kita perlu meluncurkan semua instance apache, dan menguji bahwa semuanya berfungsi seperti yang diharapkan. Tentu saja Anda dapat melakukan ini menggunakan 'apachectl', mis

 /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) Konfigurasikan skrip init untuk memulai apache dengan file konfigurasi yang sesuai

Sumber daya yang ditautkan memiliki detail lebih lanjut tentang mengedit file rc.conf untuk ini tetapi menyentuh secara khusus berkaitan dengan Ubuntu jadi saya kedua bagian ini akan saya soroti di bawah ini.

'/Etc/rc.conf' di FreeBSD adalah file master yang berisi informasi konfigurasi sistem>. File ini dibaca setelah mem-boot kernel, dan berfungsi untuk meluncurkan layanan,> daemon, mengatur antarmuka jaringan, dll. Untuk resep kami, kami akan mengaktifkan apache> server, daftar instance yang tersedia (profil), file konfigurasi mereka, dan > memberi tahu FreeBSD yang mana yang perlu dijalankan (diaktifkan) setelah mem-boot sistem.

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

Ketika profil ini dikonfigurasikan di /etc/rc.conf, dan diaktifkan, profil akan dimulai> setelah berhasil mem-boot sistem. Jika Anda ingin mendeklarasikan profil tetapi Anda hanya ingin> memulai instance apache yang sesuai secara manual, Anda bisa mengedit '/etc/rc.conf' dan> katakan, misal:

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

Kemudian, Anda dapat memulai / menghentikan instance apache secara manual menggunakan hanya nama profil> (proxy, perl, python, php), seperti ini:

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

3b) untuk Ubuntu

Saya tidak yakin ini akan serupa (dan tidak menyakitkan) seperti dalam kasus FreeBSD (lihat bagian tentang rc.conf di atas). Skrip rc apache yang diinstal dengan port apache di FreeBSD telah menyadari kemungkinan profil yang berbeda selama bertahun-tahun sekarang.

Baru-baru ini, skrip init Ubuntu / Debian (mis. /Etc/init.d/apache2) telah diperbarui untuk mendukung banyak instance dari apache (mis. Beberapa konfigurasi, bernama / etc / apache2- $ SUFFIX). Bergantung pada rilis Ubuntu / Debian yang Anda gunakan, Anda mungkin beruntung ... atau tidak.

Fitur ini muncul di Debian dalam versi 2.2.14-6 di Februari 2010: http://lists.alioth.debian.org/pipermail/pkg-apache-commits/2010-February/000295.html

Di Ubuntu, paket apache2 di Maverick (10.10) berisi tambalan ini: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.16-1ubuntu3.1/changelog

Namun apache2 Lucid (10.04, Long Term Support Release) tampaknya tidak: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_ap.22/apache2_2.2.14-5ubuntu8.4/changelog

Dokumentasi dapat ditemukan di /usr/share/doc/apache2/README.multiple-instances

Joe
sumber
Benar-benar kekacauan besar. Tidak menyinggung Anda, saya hanya ingin mengatakan bahwa itu menyakitkan di S untuk melakukan hal-hal seperti itu dengan linux.
Sliq
Tidak yakin saya melihat proses instalasi yang disebutkan kedua lebih mudah ... jadi mengacu pada balasan asli ... Mengapa kita memerlukan proxy? Apakah setiap konfigurasi individual tidak cukup untuk hanya mengikat ke port yang berbeda?
Alex.Barylski
5

Terima kasih atas jawaban terperinci Anda, tetapi kemudian saya menemukan tautan ini http://someofmylearnings.wordpress.com/2011/07/02/multiple-apache2-inances-on-ubuntu/ Prosedur yang ditunjukkan dalam ini sangat sederhana.

Ketika kami menginstal Apache, ada /usr/share/doc/apache2.2-common/README.multiple-instancesfile yang Anda berikan ide tentang apa yang sebenarnya perlu dilakukan untuk membuat instance Apache.

Di dalam direktori yang sama ada examplesdirektori yang berisi skrip bernama setup-instanceyang dapat kita gunakan untuk membuat instance Apache. Jadi, untuk membuat instance Apache lain yang perlu dilakukan adalah:

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

dimana web-server1akhiran. Artinya, ini menambahkan "apache2-" secara default ke nama instance Anda.

Itu akan membuat direktori baru /etc/apache-web-server1yang berisi semua file konfigurasi. Itu juga akan membuat /etc/init.d/apache-web-server1yang dapat Anda gunakan untuk memulai instance Apache baru.

Sachin
sumber
Pada Ubuntu 14.04 LTS direktori doc adalah / usr / share / doc / apache2 /
Josip Rodin
Sebenarnya saya pikir ini adalah solusi yang lebih baik karena memungkinkan start / stop terpisah melalui pendekatan layanan sistem, dan instans sangat independen.
bfrguci