ศูนย์คู่มือ Ruk-Com PaaS

คู่มือการพัฒนา Deploy และดูแล Application บนแพลตฟอร์ม

RUK-COM PAAS / PHP

คู่มือ 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/

Image 2: first Tomcat application*https://node.example.ruk-com.cloud/app2/

Image 3: second Tomcat applicationด้วย Apachemod_rewriteโมดูลคุณสามารถทำให้แอปทั้งสองของคุณพร้อมใช้งานบนพอร์ตเดียวโดยใช้เส้นทางที่ต่างกันเช่น:

  • http://node.example.ruk-com.cloud/application1/
  • http://node.example.ruk-com.cloud/application2/

การกำหนดค่านี้จะทำให้คุณสามารถจัดการรีสตาร์ทและดีบักแอปพลิเคชันแต่ละรายการของคุณแยกกันแต่ในขณะเดียวกันผู้ใช้ปลายทางจะมองเห็นแอปพลิเคชันเหล่านั้นเป็นแอปพลิเคชันเดียวมาดูวิธีตั้งค่านี้ด้วยโฮสติ้ง PaaS:

  1. ในตอนเริ่มต้นคุณควรสร้าง Environment อย่างน้อยสามรายการ: Environment Apache ส่วนหน้าหนึ่งรายการและ Environment Tomcat แบ็กเอนด์สองรายการขึ้นไปที่โฮสต์แอปพลิเคชัน Java ของคุณ

Image 4: Tomcat behind Apache topology2. เปิดตัวจัดการการกำหนดค่า 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>

Image 5: Apache httpd.conf*เขียนโปรแกรมใหม่อีกครั้งใช้สำหรับเปิดใช้งานความสามารถในการเขียนใหม่ *เขียนกฎใหม่และProxyPassReverseระบุเงื่อนไขและผลการเขียนใหม่ทั้ง 2 Application *เขียนใหม่ Logจะถูกเพิ่มเพื่อจัดเก็บบันทึกการเขียนใหม่ในตำแหน่งที่ระบุ

อย่าลืมที่จะบันทึกการเปลี่ยนแปลงที่เกิดขึ้นและรีสตาร์ทเซิร์ฟเวอร์ Apache ของคุณ:

  1. หากต้องการตรวจสอบผลลัพธ์ให้กดเปิดในเบราว์เซอร์ถัดจาก Environment ส่วนหน้าของ Apache และเพิ่มเส้นทางที่คุณระบุไว้ในเขียนกฎใหม่บรรทัดต่อท้าย URL ใช้เป็นเงื่อนไขในการเปิดแอปพลิเคชันที่จำเป็น

ในกรณีของเราเราเพิ่ม:

  • /Application1/Image 6: RewriteRule first application
  • /Application2/Image 7: RewriteRule second application

ดังที่คุณเห็นข้างต้นแต่ละแอปพลิเคชันจะเปิดขึ้นด้วยพอร์ตเดียวและภายในเส้นทางที่ต่างกัน

การกำหนดค่านี้ยังมีประโยชน์ในการจัดเตรียมลิงก์คำอธิบายสำหรับแอปพลิเคชันของคุณเนื่องจากจะสะดวกกว่ามากสำหรับผู้ใช้ในการรับข้อมูลเกี่ยวกับเนื้อหาเพจจาก URL เอง

การประมวลผลเนื้อหาแบบคงที่

การกระจายกิจกรรมระหว่างทั้ง Tomcat และ Apache จะเพิ่มความรวดเร็วให้กับแอปพลิเคชันของคุณสามารถใช้ได้กับ Apachemod_proxyโมดูล:

Image 9: static content processing schemeดังที่คุณเห็นในรูปแบบข้างต้น Tomcat จะให้บริการแอปพลิเคชันเองในขณะที่ Apache จะทำงานกับการส่งเนื้อหาแบบคงที่ทำตามขั้นตอนต่อไปนี้เพื่อทำให้แอปพลิเคชันของคุณให้บริการผู้ใช้มากขึ้นพร้อมกัน:

  1. ลองจินตนาการว่าคุณมี Environment สองรายการ: รายการแรกมีเซิร์ฟเวอร์ Tomcat และแอปพลิเคชันของคุณโฮสต์อยู่และรายการที่สองมีเซิร์ฟเวอร์ Apache ที่ใช้สำหรับให้บริการเนื้อหาคงที่

Image 10: static content topology2. กดการกำหนดค่าถัดจากแอปพลิเคชันเซิร์ฟเวอร์ Apache ของคุณแล้วไปที่var/www/webroot/ROOTโฟลเดอร์สร้างโฟลเดอร์พิเศษสำหรับเนื้อหาคงที่ของคุณ (ชื่อเช่นคงที่) และอัปโหลดไฟล์ที่จำเป็นที่นั่น

Image 11: create static content folder3. จากนั้นเปิด/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>

Image 12: static content settingsที่ProxyPass /คงที่!บรรทัดหมายความว่าเราไม่ได้ร้องขอพร็อกซีที่เริ่มต้นด้วย /stat คำหลัก

คำขออื่นๆทั้งหมดจะถูกส่งไปยังเซิร์ฟเวอร์ Tomcat โดยที่แอปของคุณโฮสต์อยู่ในเส้นทางที่ระบุพร็อกซีพาสและProxyPassReverseเส้น

  1. รีสตาร์ทเซิร์ฟเวอร์ Apache ของคุณ

  2. กดเปิดในเบราว์เซอร์ถัดจาก Environment Apache เพื่อตรวจสอบผลลัพธ์หากทุกอย่างถูกต้องคุณจะเห็นว่าแอปของคุณพร็อกซีจาก Tomcat

Image 13: proxied Tomcat application6. โฟลเดอร์เนื้อหาคงที่ของคุณก็พร้อมใช้งานเช่นกัน - เพียงระบุเส้นทางไปยังโฟลเดอร์นั้นใน URL

Image 14: static content folderImage 15: static content imageดังนั้นทั้งแอป Tomcat และไฟล์สแตติกใน Apache จึงสามารถเข้าถึงได้ภายในพอร์ตเดียว

โหลดบาลานซ์

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

Image 17: Apache load balancing schemeเมื่อใช้ขั้นตอนต่อไปนี้คุณสามารถกำหนดค่าเซิร์ฟเวอร์ Apache ของคุณเพื่อปรับสมดุลโหลดในแอปพลิเคชัน Java ของคุณภายในได้โมดูล mod_rewrite.

  1. เราจะใช้ Environment ที่แยกจากกันสาม Environment: สองแบ็กเอนด์TomcatEnvironment ที่มีการ Deploy แอปพลิเคชัน Java ของคุณ (โปรดทราบว่าการใช้บริบทที่คล้ายกันสำหรับทั้งสองแอปพลิเคชันที่ปรับใช้ในทั้งสอง Environment นั้นเป็นข้อกำหนดบังคับ) และหนึ่งส่วนหน้าApacheEnvironment.

Image 18: load balancing topology2. กดการกำหนดค่าถัดจาก Node Apache ของคุณแล้วไปที่/etc/httpd/conf.dโฟลเดอร์ในตัวจัดการการกำหนดค่าที่เปิดอยู่สร้างใหม่เซิร์ฟเวอร์_รายการไฟล์ที่นั่น

  1. เพิ่มโฮสต์ของแอปพลิเคชันของคุณที่ใช้งานกับไฟล์ที่สร้างขึ้นใหม่นี้ดังที่แสดงด้านล่าง:

เซิร์ฟเวอร์ {env1_name}.{hoster_domain}|{env2_name}.{hoster_domain}

Image 19: hosts list for load balancing4. จากนั้นเปิด/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>

Image 20: load balancing settings*เขียนโปรแกรมใหม่อีกครั้งใช้สำหรับเปิดใช้งานความสามารถในการเขียนใหม่ *เขียนใหม่ Mapกำหนดเส้นทางสู่เจ้าภาพตามที่ระบุไว้ในเซิร์ฟเวอร์_รายการไฟล์ที่สร้างไว้ก่อนหน้านี้ *เขียนกฎใหม่กำหนดเงื่อนไขการทำโหลดบาลานซ์ *เขียนใหม่ Logจะถูกเพิ่มเพื่อจัดเก็บบันทึกการเขียนใหม่ในตำแหน่งที่ระบุ

  1. กดรีสตาร์ทปุ่มสำหรับ Node Apache ของคุณ

  2. คลิกเปิดในเบราว์เซอร์ข้างแอปพลิเคชัน Apache เพื่อดูผลลัพธ์แอปพลิเคชัน Tomcat ตัวใดตัวหนึ่งจะเปิดขึ้นรีเฟรชหน้า (บางทีคุณอาจต้องทำหลายครั้ง) เพื่อดูแอปที่สองที่เปิดขึ้นซึ่งเป็นผลมาจากการกระจายโหลด

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