CLOUD PAAS / DEVELOPMENT TOOLS

รองรับเว็บซ็อกเก็ตสำหรับ Apache & NGINX

คู่มือนี้เรียบเรียงและปรับรูปแบบสำหรับ Ruk-Com Cloud PaaS ภาพหน้าจออาจแตกต่างเล็กน้อยตามเวอร์ชันของระบบ

คลิกหรือแตะภาพหน้าจอเพื่อดูรายละเอียดขนาดจริง

วัตถุประสงค์

บทความนี้อธิบายการใช้งาน รองรับเว็บซ็อกเก็ตสำหรับ Apache & NGINX บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง

ก่อนเริ่มดำเนินการ

  • เข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์จัดการ Environment ที่เกี่ยวข้อง
  • ตรวจสอบชื่อ Environment, Region และทรัพยากรเป้าหมายก่อนบันทึกการเปลี่ยนแปลง
  • สำรองข้อมูลหรือกำหนดแผนย้อนกลับก่อนแก้ไขระบบ Production

เว็บซ็อกเก็ตเป็นเทคโนโลยีไคลเอนต์-เซิร์ฟเวอร์ที่แพร่หลายซึ่งจะช่วยในการแลกเปลี่ยนข้อความและโต้ตอบแบบทันทีภายในแอปพลิเคชันของคุณโดยสร้างการเชื่อมต่อ TCP แบบ full-duplex อย่างต่อเนื่องระหว่างเซิร์ฟเวอร์และเบราว์เซอร์ของไคลเอ็นต์ การใช้ช่องทางการสื่อสารดังกล่าวส่งผลให้ latency ต่ำมากและเกิดการโต้ตอบที่รวดเร็ว ทำให้มั่นใจได้ว่า streaming ผ่าน proxies และfirewalls ทั้ง upstream และ downstream ในเวลาเดียวกัน

Ruk-Com Cloud จัดเตรียม WebSockets ขั้นสูงและเสริมด้วยการผสานรวมเทคโนโลยีนี้เข้ากับ Shared Load Balancer and NGINX-balancer คุณจึงสามารถใช้งานได้แม้ไม่มี IP address ภายนอกแนบกับเซิร์ฟเวอร์ของคุณโดยการรับ proxy พอร์ตต่างๆที่แอป WebSockets ใช้ไปยังพอร์ตเดียว - 80 สำหรับ HTTP และ 443 สำหรับ HTTPS

วิธีการใช้ WebSockets ที่ง่ายที่สุดสำหรับแอปพลิเคชันคือวางบาลานเซอร์ NGINXไว้ข้างหน้า – สามารถดูรายละเอียดได้ที่นี่อย่างไรก็ตามวิธีการดังกล่าวอาจไม่สอดคล้องกับความต้องการของคุณในขณะที่แอปพลิเคชันยังคงต้องการใช้เทคโนโลยีนี้เพื่อนำไปปฏิบัติ ในกรณีนี้เรารองรับ WebSockets อย่างเต็มรูปแบบสำหรับแอปพลิเคชันเซิร์ฟเวอร์ที่มีอยู่ ซึ่งรวมถึงอาปาเช่(สำหรับให้บริการแอป PHP, Ruby และ Python) และNGINX(สำหรับแอป PHP และ Ruby)

กระบวนการรวม WebSockets อาจแตกต่างกันไปในแต่ละแอปพลิเคชัน แต่สำหรับการตั้งค่าฝั่งเซิร์ฟเวอร์ Jelastic ได้จัดเตรียมตัวอย่างการกำหนดค่าสำหรับแต่ละโหนดที่กล่าวถึงข้างต้น ดังนั้นคุณสามารถ uncomment และแก้ไขเล็กน้อยตามข้อกำหนดของแอปพลิเคชันคุณ (เช่น หมายเลข listening port)

การสร้าง Environment และการ Deploy Application

1. คลิกปุ่มสภาพแวดล้อมใหม่ด้านบนซ้ายของแดชบอร์ด

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

2. ภายในหน้าต่าง Environment Wizard ที่ปรากฏขึ้นให้สลับไปที่แท็บภาษาและเลือกแอปพลิเคชันเซิร์ฟเวอร์ที่คุณต้องการ (ยกตัวอย่างแอปพลิเคชัน Apache PHP) จากนั้นเลื่อน cloudlets เพื่อกำหนดจำนวนทรัพยากร ตั้งชื่อ environment ของคุณแล้วคลิกสร้าง

3. ภายในไม่กี่นาที environment ของคุณจะปรากฏในหน้าแดชบอร์ด

4. อัปโหลดและ deploy แอปพลิเคชันของคุณที่ Deployment Manager หรือผ่านที่จัดเก็บระยะไกล GIT/SVN (คุณสามารถดูคำแนะนำเพิ่มเติมได้ที่คู่มือ deployment)

โปรเจกต์ที่คุณ deploy แล้วจะแสดงรายการในส่วนด้านล่างของแผงควบคุม environment

การกำหนดค่าเซิร์ฟเวอร์และแอปพลิเคชัน

WebSockets ภายใน Apache server รองรับโมดูลproxy_wstunnel_moduleซึ่งถูกเพิ่มโดยค่าเริ่มต้นเมื่อสร้างเซิร์ฟเวอร์ สำหรับ NGINX server นั้นจะใช้ความสามารถของการฝัง proxy ซึ่งการเชื่อมต่อ WebSockets คล้ายกับวิธีที่ NGINX-balancer ทำ ดังนั้นมาเริ่มต้นกำหนดค่าแอปพลิเคชันของคุณตามขั้นตอนนี้

1. คลิกปุ่มการกำหนดค่าถัดจากโหนดแอปเซิร์ฟเวอร์ของคุณ

2. ในแท็บเครื่องมือจัดการการกำหนดค่าทำตามขั้นตอนดังนี้:

  • สำหรับเซิร์ฟเวอร์แอป Apache

เข้าไปที่ไดเร็กทอรีการประชุมแล้วหาไฟล์httpd.confยกเลิกคอมเมนต์คำสั่งด้านล่างนี้ (ประมาณบรรทัดที่ 962)

<Location /ws>
   ProxyPass ws://127.0.0.1:<PORT>
   ProxyPassReverse ws://127.0.0.1:<PORT>
</Location>

จากนั้นเปลี่ยนพารามิเตอร์ทั้งสองเป็นหมายเลขพอร์ตที่แอปพลิเคชัน WebSockets ของคุณ listen (เช่น 9000)

ตรวจสอบให้แน่ใจว่าคุณได้กำหนดค่าเหมือนกับรูปภาพนี้

กดปุ่มบันทึกด้านบนเพื่อบันทึก

  • สำหรับ NGINX app server

เข้าไปที่ไดเร็กทอรีการประชุมเลือกไฟล์NGINX.confแล้วค้นหา#เว็บซ็อคเก็ตและยกเลิกคอมเมนต์คำสั่งต่อไปนี้:

upstream websocket {
    server 127.0.0.1:<PORT>;
 }
…
location /ws {
        proxy_pass http://websocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }

จากนั้นแทนที่ค่า<พอร์ต>ด้วยหมายเลขพอร์ตที่เกี่ยวข้องและกดปุ่มบันทึก

3. ทั้งหมดนี้คือการกำหนดค่าเซิร์ฟเวอร์ที่คุณต้องทำ จากนั้นกำหนดค่าแอปพลิเคชันที่คุณ deploy โดยเข้าไปที่ไฟล์การกำหนดค่าของแอปพลิเคชันคุณเพื่อตั้งค่า WebSockets และปรับ ws path ที่มีอยู่ในไฟล์ตามรูปแบบถัดไป:

ws://{env_domain}{path_to_ws_file}

โดยที่

  • {env_URL}แทนที่ด้วยโดเมนของ environment คุณ (สามารถดูได้ที่ใต้ชื่อ environment ที่แดชบอร์ด)
  • {path_to_ws_file}จำเป็นต้องเปลี่ยนเส้นทางไปยังไฟล์ซึ่งควรเข้าถึงได้เมื่อสร้างการเชื่อมต่อ WebSockets

4.บันทึกและรีสตาร์ทแอปพลิเคชันเซิร์ฟเวอร์ของคุณ

5. หลังจากรีสตาร์ทเสร็จแล้วคลิกปุ่มเปิดในเบราว์เซอร์เพื่อเรียกใช้แอปพลิเคชันของคุณในแท็บเบราว์เซอร์ใหม่

6. คุณจะเห็นว่าแอปพลิเคชันทำงานได้แล้ว

คุณจะได้รับประโยชน์จากการถ่ายโอนข้อความที่รวดเร็วอย่างเห็นได้ชัดจากการใช้ WebSockets Protocol