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

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

RUK-COM PAAS / DEVELOPMENT TOOLS

คู่มือ WebSockets Support for PHP สำหรับ เครื่องมือสำหรับนักพัฒนา

คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี

ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง

คู่มือภาษาไทย

คำสั่ง ชื่อเมนู พารามิเตอร์ และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง

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

แพลตฟอร์มดังกล่าวให้การสนับสนุน WebSockets ขั้นสูงและเสริมแก่คุณโดยการบูรณาการเทคโนโลยีนี้เข้ากับโหลดบาลานเซอร์ที่ใช้ร่วมกันและNode บาลานเซอร์ NGINXเพื่อให้คุณสามารถใช้งานได้แม้จะไม่ได้แนบที่อยู่ IP ภายนอกกับเซิร์ฟเวอร์ของคุณก็ตามสิ่งนี้ได้มาจากการพร็อกซีพอร์ตต่างๆที่ใช้โดยแอป WebSockets ของคุณเป็นพอร์ตเดียว - 80 สำหรับ HTTP และ 443 สำหรับ HTTPS

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

กระบวนการบูรณาการของ WebSocket อาจแตกต่างกันไปในแต่ละแอปพลิเคชันแต่สำหรับการตั้งค่าฝั่งเซิร์ฟเวอร์แพลตฟอร์มจะให้ตัวอย่างการกำหนดค่าสำหรับแต่ละ Node ที่กล่าวมาข้างต้นดังนั้นคุณเพียงแค่ต้องยกเลิกการใส่ข้อคิดเห็นและเพิ่มการแก้ไขเล็กน้อยเล็กน้อยตามข้อกำหนดเฉพาะของแอปของคุณ (เช่นหมายเลขพอร์ตผู้ฟัง)

ดังนั้นในบทช่วยสอนทีละขั้นตอนด้านล่างเราจะแสดงตัวอย่างการกำหนดค่าดังกล่าวสำหรับโปรเจ็กต์แชท PHP แบบง่ายซึ่งใช้งานใน Environment โดยไม่ต้องใช้เซิร์ฟเวอร์บาลานเซอร์และใช้เทคโนโลยี WebSockets มาเริ่มกันตั้งแต่ต้นเลย

สร้าง Environment และปรับใช้แอปพลิเคชัน

ด้วยแพลตฟอร์มนี้คุณสามารถสร้าง Environment ที่ต้องการได้ด้วยการคลิกหลายครั้ง - เพียงเข้าสู่ระบบบัญชี PaaS ของคุณแล้วทำตามขั้นตอนด้านล่าง:

  1. คลิกที่Environment ใหม่ปุ่มที่มุมซ้ายบนของแดชบอร์ด

Image 40: new environment2.ภายในที่ปรากฏตัวช่วยสร้าง Environmentหน้าต่างสลับไปที่แท็บภาษาการเขียนโปรแกรมที่จำเป็นและเลือกเซิร์ฟเวอร์แอปพลิเคชันที่ต้องการ (เราจะใช้ไฟล์อาปาเช่หนึ่งอันสำหรับให้บริการแอปพลิเคชัน PHP ของเรา) จากนั้นกำหนดจำนวนทรัพยากรที่จัดสรรโดยใช้แถบเลื่อน cloudlet พิมพ์ชื่อสำหรับ Environment ของคุณ (apache-websocketsในกรณีของเรา) และคลิกสร้าง.

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

Image 42: environment for WebSockets created4. อัปโหลดและปรับใช้แอปพลิเคชันของคุณโดยใช้แพลตฟอร์ม Deployment Manager หรือผ่านพื้นที่จัดเก็บข้อมูล GIT/SVN ระยะไกล (คำแนะนำที่จำเป็นตามกลไกที่เลือกสามารถพบได้ในคู่มือการ Deploy).

Image 43: WebSockets application deployedด้วยเหตุนี้โปรเจ็กต์ที่ปรับใช้ของคุณจะแสดงรายการในส่วนที่เหมาะสมที่แผงของ Environment

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

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

ถึงเวลากำหนดค่าแอปพลิเคชันเซิร์ฟเวอร์ของคุณแล้ว

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

Image 45: Apache config2. ในช่องเปิดเครื่องมือจัดการการกำหนดค่าดำเนินการขั้นตอนภายในส่วนคำแนะนำข้อใดข้อหนึ่งต่อไปนี้ตามเซิร์ฟเวอร์ที่เลือก:

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

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

คัดลอกอาปาเช่

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

ตอนนี้เปลี่ยนทั้งสองอย่างแล้ว<PORT>พารามิเตอร์ไปยังหมายเลขพอร์ตซึ่งแอปพลิเคชัน WebSockets ของคุณฟัง (เช่นการใช้งานของเรา9000หนึ่ง).

ตรวจสอบให้แน่ใจว่าปรากฏเหมือนกับภาพด้านล่าง

Image 46: Apache httpd conf บันทึกการเปลี่ยนแปลงที่ทำโดยใช้ปุ่มชื่อเดียวกันเหนือตัวแก้ไข

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

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

สำเนา nginx

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

จากนั้นจึงแทนที่ด้วยหมายเลขพอร์ตที่เกี่ยวข้อง (เช่นซึ่งแอปพลิเคชัน WebSockets ของคุณรับฟัง) และบันทึกการเปลี่ยนแปลงที่ดำเนินการ

Image 47: NGINX WebSockerts configs3. นั่นคือการกำหนดค่าเซิร์ฟเวอร์ทั้งหมดที่คุณต้องทำดังนั้นสิ่งเดียวที่เหลือคือการกำหนดค่าแอปพลิเคชันที่ปรับใช้ของคุณให้เข้าถึงไฟล์การกำหนดค่าแอปพลิเคชันของคุณซึ่งรับผิดชอบการตั้งค่า WebSockets และปรับเส้นทางที่มีอยู่ตามรูปแบบถัดไป:

ws://{env_domain}{path_to_ws_file}

ที่ไหน

  • {env_url}ควรแทนที่ด้วยโดเมน Environment ของคุณ (สามารถดูได้ภายใต้ชื่อ Environment ที่แดชบอร์ดnode.example.ruk-com.cloudในกรณีของเรา)
  • {path_to_ws_file}จำเป็นต้องเปลี่ยนตามเส้นทางไปยังไฟล์ที่ควรเข้าถึงเมื่อสร้างการเชื่อมต่อ WebSockets

ควรมีลักษณะคล้ายกับภาพด้านล่าง:

Image 48: application WebSockets path4.บันทึกการเปลี่ยนแปลงและรีสตาร์ทแอปพลิเคชันเซิร์ฟเวอร์ของคุณด้วยปุ่มที่เกี่ยวข้อง

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

Image 50: open in browser6. อย่างที่คุณเห็นแอปแชทตัวอย่างของเราทำงานได้อย่างมีเสน่ห์

Image 51: WebSockerts chat applicationแม้จะใช้งานแอปพลิเคชันแชทที่เรียบง่ายคุณยังคงได้รับผลประโยชน์จากการถ่ายโอนข้อความที่รวดเร็วอย่างเห็นได้ชัดซึ่งใช้ได้เนื่องจากการใช้โปรโตคอล WebSockets สนุก!