ฉันจะเรียกใช้สองอินสแตนซ์ของ apache ในระบบเดียวกันและเริ่มและหยุดพวกเขาเป็นอิสระจากกัน ความช่วยเหลือหรือโอกาสในการขายใด ๆ
ฉันจะเรียกใช้สองอินสแตนซ์ของ apache ในระบบเดียวกันและเริ่มและหยุดพวกเขาเป็นอิสระจากกัน ความช่วยเหลือหรือโอกาสในการขายใด ๆ
คำตอบ:
ฉันคิดว่านี่อาจเป็นสิ่งที่คุณกำลังมองหา http://wiki.apache.org/httpd/RunningMultipleApacheInstances
สำหรับการอ้างอิงเนื้อหาในลิงค์ด้านบน
1) ติดตั้ง Apache บนเซิร์ฟเวอร์ของคุณ
sudo apt-get install apache2
sudo apt-get install libapache2-mod-perl2
sudo apt-get install other-lib-mods-needed
2) กำหนดค่าการแยก apache สำหรับแต่ละอินสแตนซ์ที่คุณต้องการเรียกใช้
สำหรับ Ubuntu สิ่งนี้ควรอยู่ใน / etc / apache2 เป็นหลักสำหรับแต่ละอินสแตนซ์ที่คุณต้องการฟังบนพอร์ตอื่น
# 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
ในตัวอย่างนี้จะมี 4 อินสแตนซ์ที่แตกต่างกันทำงานแต่ละการประมวลผลประเภทโมดูลที่แตกต่างกันคือหนึ่งสำหรับ perl หนึ่งสำหรับ python ฯลฯ
ตอนนี้คุณต้องกำหนดค่าโฮสต์เสมือนในพร็อกซีอินสแตนซ์ดังนั้นเมื่อใดก็ตามที่คำขอมาถึงเซิร์ฟเวอร์ DAV การโค่นล้มมันจะถูกส่งไปยัง apache 'python-dav' ของคุณในขณะที่คำขอสำหรับบล็อก WordPress ของคุณถูกส่งไปยัง ' อินสแตนซ์ Apache 'php' มาแก้ไข '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) ทดสอบทุกอย่าง ดังนั้นเราจึงเสร็จสิ้นการกำหนดค่าและตอนนี้เราต้องเปิดใช้งานอินสแตนซ์ apache ทั้งหมดและทดสอบว่าทุกอย่างทำงานได้ตามที่คาดไว้ แน่นอนคุณสามารถทำได้โดยใช้ 'apachectl' เช่น
/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) กำหนดค่าสคริปต์เริ่มต้นเพื่อเริ่มต้น apache ด้วยไฟล์ปรับแต่งที่เหมาะสม
ทรัพยากรที่เชื่อมโยงมีรายละเอียดเพิ่มเติมเกี่ยวกับการแก้ไขไฟล์ rc.conf สำหรับสิ่งนี้ แต่สัมผัสโดยเฉพาะกับการจัดการกับ Ubuntu ดังนั้นฉันทั้งสองส่วนเหล่านี้ฉันจะเน้นด้านล่าง
'/etc/rc.conf' ใน FreeBSD เป็นไฟล์ต้นแบบที่มีข้อมูลการกำหนดค่าระบบ> ไฟล์นี้ถูกอ่านหลังจากบูทเคอร์เนลและทำหน้าที่เปิดตัวบริการ> daemons ตั้งค่าอินเทอร์เฟซเครือข่าย ฯลฯ สำหรับสูตรของเราเราจะเปิดใช้งานเซิร์ฟเวอร์ apache> แสดงรายการอินสแตนซ์ (โปรไฟล์) ไฟล์การกำหนดค่าและ > บอก FreeBSD ว่าสิ่งใดที่จำเป็นต้องเรียกใช้ (เปิดใช้งาน) หลังจากบูทระบบ
# /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"
เมื่อโปรไฟล์เหล่านี้ได้รับการกำหนดค่าใน /etc/rc.conf และเปิดใช้งานโปรไฟล์เหล่านั้นจะเริ่มต้น> หลังจากบูตระบบสำเร็จ หากคุณต้องการประกาศโปรไฟล์ แต่คุณต้องการ> เพื่อเริ่มต้นอินสแตนซ์ apache ที่เกี่ยวข้องด้วยตนเองคุณสามารถแก้ไข '/etc/rc.conf' และ> พูดเช่น:
# the apache php instance
apache22_php_configfile="/usr/local/etc/apache22/httpd-php.conf"
apache22_php_enable="NO"
ในภายหลังคุณสามารถเริ่ม / หยุดอินสแตนซ์ apache ใด ๆ ด้วยตนเองโดยใช้ชื่อโปรไฟล์> (พร็อกซี, perl, python, php) ดังนี้:
/usr/local/etc/rc.d/apache22 start php
/usr/local/etc/rc.d/apache22 stop perl
...
3b) สำหรับ Ubuntu
ฉันไม่แน่ใจว่าสิ่งนี้จะคล้ายกัน (และไม่เจ็บปวด) เช่นเดียวกับในกรณีของ FreeBSD (ดูหัวข้อใน rc.conf ด้านบน) สคริปต์ apache rc ที่ติดตั้งพร้อมกับพอร์ต apache ใน FreeBSD ได้ตระหนักถึงความเป็นไปได้ของรูปแบบที่แตกต่างกันมาหลายปีแล้ว
เมื่อเร็ว ๆ นี้สคริปต์เริ่มต้นของ Ubuntu / Debian (เช่น /etc/init.d/apache2) ได้รับการอัปเดตเพื่อรองรับ Apache หลายอินสแตนซ์ (เช่นการกำหนดค่าหลายรายการชื่อ / etc / apache2- $ SUFFIX) ทั้งนี้ขึ้นอยู่กับการเปิดตัว Ubuntu / Debian ที่คุณใช้คุณอาจโชคดี ... หรือไม่
คุณลักษณะนี้ปรากฏใน Debian ในเวอร์ชัน 2.2.14-6 ในเดือนกุมภาพันธ์ 2010: http://lists.alioth.debian.org/pipermail/pkg-apache-commits/2010-Fกุมภาพันธ์/000295.html
ใน Ubuntu แพคเกจ apache2 ใน Maverick (10.10) มีโปรแกรมแก้ไขเหล่านี้: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.16-1ubuntu3.1/changelog
อย่างไรก็ตามเห็นได้ชัดว่า Lucid (10.04, Long Term Support Support) apache2 ไม่ได้: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.14-5ubuntu8.4/changelog
เอกสารสามารถพบได้ใน /usr/share/doc/apache2/README.multiple-instances
ขอบคุณสำหรับคำตอบของคุณอย่างละเอียด แต่ต่อมาผมพบว่าการเชื่อมโยงนี้http://someofmylearnings.wordpress.com/2011/07/02/multiple-apache2-instances-on-ubuntu/ขั้นตอนที่แสดงในนี้ง่ายมาก
เมื่อเราติดตั้ง Apache มี/usr/share/doc/apache2.2-common/README.multiple-instances
ไฟล์ที่คุณให้ความคิดเกี่ยวกับสิ่งที่ต้องทำเพื่อสร้างอินสแตนซ์ Apache
ภายในไดเรกทอรีเดียวกันนั้นมีexamples
ไดเรกทอรีซึ่งมีสคริปต์ชื่อsetup-instance
ที่เราสามารถใช้สร้างอินสแตนซ์ Apache ได้ ดังนั้นในการสร้างอินสแตนซ์ Apache อื่นทั้งหมดที่ต้องทำคือ:
sh /usr/share/doc/apache2.2-common/examples/setup-instance web-server1
ที่web-server1
เป็นคำต่อท้าย นั่นคือมันจะผนวก "apache2-" โดยค่าเริ่มต้นกับชื่ออินสแตนซ์ของคุณ
ที่จะสร้างไดเรกทอรีใหม่/etc/apache-web-server1
ซึ่งมีไฟล์กำหนดค่าทั้งหมด มันจะสร้าง/etc/init.d/apache-web-server1
ซึ่งคุณสามารถใช้เพื่อเริ่มต้นอินสแตนซ์ Apache ใหม่