คู่มือ Apache as Frontend สำหรับ PHP
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
คำสั่ง ชื่อเมนู พารามิเตอร์ และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง
Tomcatเป็นเซิร์ฟเวอร์ที่เชื่อถือได้และรวดเร็วซึ่งสามารถทำงานกับข้อมูลจำนวนมากได้นั่นคือเหตุผลที่ทำให้สามารถแข่งขันด้านประสิทธิภาพกับเว็บเซิร์ฟเวอร์ดั้งเดิมได้การวาง HTTP ที่ปลอดภัยรวดเร็วและยืดหยุ่นApacheเซิร์ฟเวอร์ที่อยู่ด้านหน้า Tomcat มอบฟังก์ชันการทำงานเพิ่มเติมบางอย่างให้กับคุณเช่นความพร้อมใช้งานสูงผ่านการทำโหลดบาลานซ์ระหว่างเซิร์ฟเวอร์ Tomcat หลายเครื่องการประมวลผลและการส่งมอบเนื้อหาคงที่ที่รวดเร็วปัญหาด้านความปลอดภัยเพิ่มเติมที่มีใน Apache ฟังก์ชันพิเศษผ่านโมดูล Apache เป็นต้น
ในลักษณะที่ทำให้ Tomcat อยู่เบื้องหลัง Apache นั้นถูกใช้อย่างกว้างขวางเพื่อปรับปรุงประสิทธิภาพของ Environment ที่มีการโหลดสูง
ในบทช่วยสอนนี้เราจะตรวจสอบวิธีเชื่อมต่อเซิร์ฟเวอร์ Apache และ Tomcat โดยใช้mod_proxyหรือmod_rewriteโมดูลด้วยการกำหนดค่าดังกล่าว Apache จะส่งคำขอไปยังเซิร์ฟเวอร์แอปพลิเคชัน Tomcat ของคุณและถ่ายทอดการตอบกลับกลับไปยังไคลเอนต์
ทำตามคำแนะนำถัดไปเพื่อค้นหาสามกรณีที่ได้รับความนิยมมากที่สุดในการใช้การตั้งค่าดังกล่าว
การเขียนลิงค์ใหม่
ลองพิจารณาสถานการณ์ที่คุณมีแอปพลิเคชัน Java อย่างน้อยสองตัวที่โฮสต์บนเซิร์ฟเวอร์แอปแยกกันและพอร์ตที่ต่างกันเป็นตัวอย่างง่ายๆเราจะใช้สองแอปพลิเคชันที่แสดงที่อยู่ IP ของเซิร์ฟเวอร์
- https://node.example.ruk-com.cloud/app1/
*https://node.example.ruk-com.cloud/app2/
ด้วย Apachemod_rewriteโมดูลคุณสามารถทำให้แอปทั้งสองของคุณพร้อมใช้งานบนพอร์ตเดียวโดยใช้เส้นทางที่ต่างกันเช่น:
- http://node.example.ruk-com.cloud/application1/
- http://node.example.ruk-com.cloud/application2/
การกำหนดค่านี้จะทำให้คุณสามารถจัดการรีสตาร์ทและดีบักแอปพลิเคชันแต่ละรายการของคุณแยกกันแต่ในขณะเดียวกันผู้ใช้ปลายทางจะมองเห็นแอปพลิเคชันเหล่านั้นเป็นแอปพลิเคชันเดียวมาดูวิธีตั้งค่านี้ด้วยโฮสติ้ง PaaS:
- ในตอนเริ่มต้นคุณควรสร้าง Environment อย่างน้อยสามรายการ: Environment Apache ส่วนหน้าหนึ่งรายการและ Environment Tomcat แบ็กเอนด์สองรายการขึ้นไปที่โฮสต์แอปพลิเคชัน Java ของคุณ
2. เปิดตัวจัดการการกำหนดค่า Apache (คลิกการกำหนดค่าข้างๆ)
ในแท็บที่ปรากฏขึ้นให้เปิดไฟล์/etc/httpd/conf/httpd.confไฟล์และระบุการกำหนดค่าต่อไปนี้สำหรับ< โฮสต์เสมือน >ส่วนไฟล์.
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/webroot/ROOT
ServerName node.example.ruk-com.cloud
ServerAlias
RewriteEngine On
RewriteRule ^/application1/(.*) http://node.example.ruk-com.cloud/app1/ [P]
ProxyPassReverse /application1/ http://node.example.ruk-com.cloud/app1/
RewriteRule ^/application2/(.*) http://node.example.ruk-com.cloud/app2/ [P]
ProxyPassReverse /application2/ http://node.example.ruk-com.cloud/app2/
RewriteLog "/var/log/httpd/rewrite.log"
ErrorLog logs/node.example.ruk-com.cloud-error_log
CustomLog logs/node.example.ruk-com.cloud-access_log common
</VirtualHost>
*เขียนโปรแกรมใหม่อีกครั้งใช้สำหรับเปิดใช้งานความสามารถในการเขียนใหม่ *เขียนกฎใหม่และProxyPassReverseระบุเงื่อนไขและผลการเขียนใหม่ทั้ง 2 Application *เขียนใหม่ Logจะถูกเพิ่มเพื่อจัดเก็บบันทึกการเขียนใหม่ในตำแหน่งที่ระบุ
อย่าลืมที่จะบันทึกการเปลี่ยนแปลงที่เกิดขึ้นและรีสตาร์ทเซิร์ฟเวอร์ Apache ของคุณ:
- หากต้องการตรวจสอบผลลัพธ์ให้กดเปิดในเบราว์เซอร์ถัดจาก Environment ส่วนหน้าของ Apache และเพิ่มเส้นทางที่คุณระบุไว้ในเขียนกฎใหม่บรรทัดต่อท้าย URL ใช้เป็นเงื่อนไขในการเปิดแอปพลิเคชันที่จำเป็น
ในกรณีของเราเราเพิ่ม:
ดังที่คุณเห็นข้างต้นแต่ละแอปพลิเคชันจะเปิดขึ้นด้วยพอร์ตเดียวและภายในเส้นทางที่ต่างกัน
การกำหนดค่านี้ยังมีประโยชน์ในการจัดเตรียมลิงก์คำอธิบายสำหรับแอปพลิเคชันของคุณเนื่องจากจะสะดวกกว่ามากสำหรับผู้ใช้ในการรับข้อมูลเกี่ยวกับเนื้อหาเพจจาก URL เอง
การประมวลผลเนื้อหาแบบคงที่
การกระจายกิจกรรมระหว่างทั้ง Tomcat และ Apache จะเพิ่มความรวดเร็วให้กับแอปพลิเคชันของคุณสามารถใช้ได้กับ Apachemod_proxyโมดูล:
ดังที่คุณเห็นในรูปแบบข้างต้น Tomcat จะให้บริการแอปพลิเคชันเองในขณะที่ Apache จะทำงานกับการส่งเนื้อหาแบบคงที่ทำตามขั้นตอนต่อไปนี้เพื่อทำให้แอปพลิเคชันของคุณให้บริการผู้ใช้มากขึ้นพร้อมกัน:
- ลองจินตนาการว่าคุณมี Environment สองรายการ: รายการแรกมีเซิร์ฟเวอร์ Tomcat และแอปพลิเคชันของคุณโฮสต์อยู่และรายการที่สองมีเซิร์ฟเวอร์ Apache ที่ใช้สำหรับให้บริการเนื้อหาคงที่
2. กดการกำหนดค่าถัดจากแอปพลิเคชันเซิร์ฟเวอร์ Apache ของคุณแล้วไปที่var/www/webroot/ROOTโฟลเดอร์สร้างโฟลเดอร์พิเศษสำหรับเนื้อหาคงที่ของคุณ (ชื่อเช่นคงที่) และอัปโหลดไฟล์ที่จำเป็นที่นั่น
3. จากนั้นเปิด/etc/httpd/conf/httpd.confไฟล์.
ดำเนินการกำหนดค่าที่จำเป็นใน< โฮสต์เสมือน >บล็อกตามที่อธิบายไว้ด้านล่าง:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/webroot/ROOT
ServerName node.example.ruk-com.cloud
ServerAlias *
ProxyPass /static !
ProxyPass / http://node.example.ruk-com.cloud/app1/
ProxyPassReverse / http://node.example.ruk-com.cloud/app1/
ErrorLog logs/node.example.ruk-com.cloud-error_log
CustomLog logs/node.example.ruk-com.cloud-access_log common
</VirtualHost>
ที่ProxyPass /คงที่!บรรทัดหมายความว่าเราไม่ได้ร้องขอพร็อกซีที่เริ่มต้นด้วย /stat คำหลัก
คำขออื่นๆทั้งหมดจะถูกส่งไปยังเซิร์ฟเวอร์ Tomcat โดยที่แอปของคุณโฮสต์อยู่ในเส้นทางที่ระบุพร็อกซีพาสและProxyPassReverseเส้น
-
รีสตาร์ทเซิร์ฟเวอร์ Apache ของคุณ
-
กดเปิดในเบราว์เซอร์ถัดจาก Environment Apache เพื่อตรวจสอบผลลัพธ์หากทุกอย่างถูกต้องคุณจะเห็นว่าแอปของคุณพร็อกซีจาก Tomcat
6. โฟลเดอร์เนื้อหาคงที่ของคุณก็พร้อมใช้งานเช่นกัน - เพียงระบุเส้นทางไปยังโฟลเดอร์นั้นใน URL

ดังนั้นทั้งแอป Tomcat และไฟล์สแตติกใน Apache จึงสามารถเข้าถึงได้ภายในพอร์ตเดียว
โหลดบาลานซ์
คุณสามารถเพิ่มอินสแตนซ์ Tomcat ได้หลายรายการเพื่อให้ Environment ของคุณจัดการโหลดได้มากขึ้นและรับความสามารถในการ Failover ในกรณีนี้เซิร์ฟเวอร์ Apache ส่วนหน้าจะทำหน้าที่เป็นตัวกระจายโหลดระหว่างเซิร์ฟเวอร์ Tomcat ทั้งหมด
เมื่อใช้ขั้นตอนต่อไปนี้คุณสามารถกำหนดค่าเซิร์ฟเวอร์ Apache ของคุณเพื่อปรับสมดุลโหลดในแอปพลิเคชัน Java ของคุณภายในได้โมดูล mod_rewrite.
- เราจะใช้ Environment ที่แยกจากกันสาม Environment: สองแบ็กเอนด์TomcatEnvironment ที่มีการ Deploy แอปพลิเคชัน Java ของคุณ (โปรดทราบว่าการใช้บริบทที่คล้ายกันสำหรับทั้งสองแอปพลิเคชันที่ปรับใช้ในทั้งสอง Environment นั้นเป็นข้อกำหนดบังคับ) และหนึ่งส่วนหน้าApacheEnvironment.
2. กดการกำหนดค่าถัดจาก Node Apache ของคุณแล้วไปที่/etc/httpd/conf.dโฟลเดอร์ในตัวจัดการการกำหนดค่าที่เปิดอยู่สร้างใหม่เซิร์ฟเวอร์_รายการไฟล์ที่นั่น
- เพิ่มโฮสต์ของแอปพลิเคชันของคุณที่ใช้งานกับไฟล์ที่สร้างขึ้นใหม่นี้ดังที่แสดงด้านล่าง:
เซิร์ฟเวอร์ {env1_name}.{hoster_domain}|{env2_name}.{hoster_domain}
4. จากนั้นเปิด/etc/httpd/conf/httpd.confไฟล์และระบุการกำหนดค่าต่อไปนี้:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/webroot/ROOT
ServerName node.example.ruk-com.cloud
ServerAlias *
RewriteEngine On
RewriteMap lb rnd:/etc/httpd/conf.d/servers_list
RewriteRule ^/(.*) http://${lb:servers}/app1/$1 [P,L]
RewriteLog "/var/log/httpd/rewrite.log"
ErrorLog logs/node.example.ruk-com.cloud-error_log
CustomLog logs/node.example.ruk-com.cloud-access_log common
</VirtualHost>
*เขียนโปรแกรมใหม่อีกครั้งใช้สำหรับเปิดใช้งานความสามารถในการเขียนใหม่ *เขียนใหม่ Mapกำหนดเส้นทางสู่เจ้าภาพตามที่ระบุไว้ในเซิร์ฟเวอร์_รายการไฟล์ที่สร้างไว้ก่อนหน้านี้ *เขียนกฎใหม่กำหนดเงื่อนไขการทำโหลดบาลานซ์ *เขียนใหม่ Logจะถูกเพิ่มเพื่อจัดเก็บบันทึกการเขียนใหม่ในตำแหน่งที่ระบุ
-
กดรีสตาร์ทปุ่มสำหรับ Node Apache ของคุณ
-
คลิกเปิดในเบราว์เซอร์ข้างแอปพลิเคชัน Apache เพื่อดูผลลัพธ์แอปพลิเคชัน Tomcat ตัวใดตัวหนึ่งจะเปิดขึ้นรีเฟรชหน้า (บางทีคุณอาจต้องทำหลายครั้ง) เพื่อดูแอปที่สองที่เปิดขึ้นซึ่งเป็นผลมาจากการกระจายโหลด

เพลิดเพลินไปกับคุณประโยชน์ของการเชื่อมต่อระหว่าง Tomcat และ Apache โดยทำให้แอปพลิเคชันของคุณมีประสิทธิภาพสูงยืดหยุ่นและมีเสถียรภาพมากยิ่งขึ้น


