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

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

RUK-COM PAAS / PYTHON

คู่มือ Python Apps Specifications สำหรับ Python

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

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

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

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

หน้านี้อธิบายข้อกำหนดด้านแพ็กเกจและการ Deploy สำหรับแอปพลิเคชัน Python ใน Ruk-Com PaaS ใช้สารบัญด้านล่างเพื่อค้นหาข้อมูลที่คุณต้องการได้รวดเร็วยิ่งขึ้น:

การจัดการการพึ่งพา

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

หมายเหตุ:

  • มีการติดตั้งการพึ่งพาในฐานะผู้ใช้python.
  • ความคืบหน้าและข้อผิดพลาดในการติดตั้งจะถูกบันทึกไว้ในบันทึกการใช้งาน (/home/jelastic/log/deploy.log).
  • ที่ยูวี(uv.lock) และpylock.tomlขณะนี้เครื่องมือ (PEP 751) ยังไม่รองรับการ Deploy อัตโนมัติจนกว่าจะดำเนินการส่งออกกrequirements.txtจากของคุณยูวีโครงการหรือใช้ไฟล์ล็อค Poetry/Pipenv

ปัจจุบันแพลตฟอร์มรองรับเครื่องมือดังต่อไปนี้:

เครื่องมือ สแต็ค ทริกเกอร์การตรวจจับ ลักษณะการติดตั้ง
บทกวี เครื่องยนต์หลาม poetry.lockหรือ[tool.poetry]ในpyproject.toml poetry install --no-interaction --no-root
ไปป์เพน เครื่องยนต์หลาม Pipfile pipenv install --deploy --systemถ้าPipfile.lockมีอยู่; มิฉะนั้นpipenv install --system
ปิ๊ป อาปาเช่ไพธอน, เครื่องยนต์ไพธอน requirements.txt python -m pip install -r requirements.txt

บนเครื่องยนต์หลามเมื่อมีไฟล์ Manifest หลายไฟล์แพลตฟอร์มก็จะทำงานหนึ่งขั้นตอนการทำงานต่อการ Deploy ตามลำดับต่อไปนี้:

  1. บทกวี- ถ้าpoetry.lockมีอยู่หรือpyproject.tomlประกอบด้วย[tool.poetry]
  2. ไปป์เพน- ถ้าPipfileมีอยู่จริง
  3. ปิ๊ป- ถ้าrequirements.txtมีอยู่จริง

การจัดการแพ็คเกจด้วยตนเองผ่าน SSH (ตัวเลือก)

หากต้องการตรวจสอบหรือปรับแพ็กเกจนอกเวิร์กโฟลว์การ Deploy ให้เชื่อมต่อกับแอปพลิเคชันเซิร์ฟเวอร์ผ่านทาง SSHและใช้มาตรฐานปิ๊ปคำสั่ง:

  • pip install {packageName}- ติดตั้งแพ็คเกจ
  • pip uninstall {packageName}- ลบแพ็คเกจ
  • pip install --upgrade {packageName}- อัพเดตแพ็คเกจ
  • pip install -r requirements.txt- ติดตั้งแพ็คเกจจากไฟล์ข้อกำหนด
  • pip list- แสดงรายการแพ็คเกจที่ติดตั้ง

จุดรับสมัคร

อาปาเช่ไพธอนคาดหวังจุดเข้า WSGI และรายการการพึ่งพาในไฟล์เก็บถาวรการ Deploy ของคุณ:

  • wsgi.py- เปิดเผยวัตถุแอปพลิเคชัน WSGI สำหรับmod_wsgi
  • requirements.txt- แสดงรายการแพ็คเกจที่ติดตั้งด้วยปิ๊ประหว่างการใช้งาน

รวมทั้งสองไฟล์ไว้ในรูทโปรเจ็กต์ของไฟล์เก็บถาวรของคุณแพลตฟอร์มจะติดตั้งการพึ่งพาจากrequirements.txtและกำหนดเส้นทางการรับส่งข้อมูล HTTP ไปยังวัตถุแอปพลิเคชันที่กำหนดไว้wsgi.py.

เครื่องยนต์หลามใช้APP_MODULEตัวแปรเพื่อกำหนดจุดเริ่มต้นแอปพลิเคชัน:

  • APP_MODULE="_AUTO_"(ค่าเริ่มต้น) - ตรวจจับจุดเริ่มต้นโดยอัตโนมัติในระหว่างการ Deploy และคงอยู่/home/jelastic/pythonenv.
  • APP_MODULE="module:attribute"(ตัวอย่างเช่น,app:appหรือmyproject.asgi:application) - ตั้งค่าจุดเริ่มต้นด้วยตนเองแพลตฟอร์มตรวจสอบว่าสามารถนำเข้าโมดูลที่ระบุได้ก่อนที่จะเริ่มบริการหากการตรวจสอบล้มเหลวบริการจะไม่เริ่มทำงานและข้อผิดพลาดจะถูกบันทึกไว้ในไฟล์บันทึก

Image 38: Python Engine APP_MODULE variable

การตรวจจับอัตโนมัติทำงานดังนี้:แพลตฟอร์มจะสแกนไดเร็กทอรีสูงสุดสามระดับด้านล่างROOT_DIR(/home/jelastic/ROOT) และเลือกจุดเริ่มต้นโดยใช้ลำดับความสำคัญของไฟล์ต่อไปนี้:app.py>main.py>application.py>server.py>api.py>asgi.py>wsgi.py. เมื่อไฟล์หลายไฟล์ที่มีชื่อเดียวกันอยู่ที่ระดับความลึกต่างกันระบบจะเลือกการจับคู่ที่ตื้นที่สุด (เช่น rootapp.pyให้ความสำคัญมากกว่าbackend/app.py).

เครื่องยนต์หลาม

ส่วนต่อไปนี้จะอธิบายลักษณะการใช้งานและรันไทม์เฉพาะสำหรับเครื่องยนต์หลามแอปพลิเคชันเซิร์ฟเวอร์

กระแสจราจรและเครือข่าย

Python Engine ใช้ Uvicorn/Gunicorn เป็นเซิร์ฟเวอร์ HTTP(S) โดยไม่มีพร็อกซีย้อนกลับในคอนเทนเนอร์แอปพลิเคชันเชื่อมโยงกับพอร์ตภายในและแพลตฟอร์มจะจัดการการส่งต่อพอร์ตผู้ใช้เข้าถึงแอปบนพอร์ตมาตรฐาน 80/443 ผ่านทาง URL Environment

ชั้น บทบาท
URL ของแพลตฟอร์ม ผู้ใช้เข้าถึงแอปพลิเคชันของคุณบนพอร์ต80(HTTP) หรือ443(HTTPS) ผ่านโดเมน Environment
การส่งต่อพอร์ต pythonAutoConfigกำหนดค่าnftablesกฎภายในคอนเทนเนอร์เพื่อเปลี่ยนเส้นทางการรับส่งข้อมูลแพลตฟอร์มไปPORT
แอปพลิเคชันเซิร์ฟเวอร์ ยูวิคอร์นหรือกูนิคอร์นผูกติดกับHOST/PORT(ค่าเริ่มต้น0.0.0.0:8000) และจัดการคำขอ HTTP(S)

เมื่อแพลตฟอร์ม SSL ถูกปิดใช้งาน (ค่าเริ่มต้น) พอร์ต TCP80ถูกเปลี่ยนเส้นทางไปยังแอปพลิเคชันPORT. เมื่อเปิดใช้งาน SSL ของแพลตฟอร์มพอร์ต TCP443ถูกเปลี่ยนเส้นทางไปยังแอปพลิเคชันPORT. ท่าเรือ80ยังคงพร้อมใช้งานสำหรับการตรวจสอบ Let's Encrypt HTTP

แพลตฟอร์ม SSL

คุณไม่จำเป็นต้องเพิ่มการกำหนดค่า TLS ลงในโค้ดแอปพลิเคชันของคุณสำหรับโฟลว์การโฮสต์มาตรฐาน SSL ได้รับการจัดการผ่าน UI ของแพลตฟอร์ม:

  1. เปิดใช้งาน SSL ผ่านทางมาเข้ารหัสส่วนเสริมกันหรืออัปโหลดใบรับรองที่กำหนดเอง
  2. แพลตฟอร์มจัดเตรียมใบรับรองและชุดต่างๆSSLEnabledใน/home/jelastic/pythonenv.
  3. ที่pythonengineบริการรีสตาร์ทและpythonAutoConfigสลับการส่งต่อพอร์ตจาก 80 เป็น 443
  4. ตัวจัดการกระบวนการเปิดใช้งาน TLS บนแอปพลิเคชันเซิร์ฟเวอร์โดยใช้ใบรับรองจาก/var/lib/jelastic/SSL/(เส้นทางเริ่มต้น:jelastic.crt,jelastic.key,jelastic-ca.crt).

อ้างถึงโดเมนที่กำหนดเองและSSL ในตัวสำหรับรายละเอียดการจัดการใบรับรอง

ไฟล์แบบคงที่

Python Engine ไม่มีเว็บเซิร์ฟเวอร์ไฟล์คงที่โดยเฉพาะสินทรัพย์คงที่ให้บริการโดยแอปพลิเคชันเซิร์ฟเวอร์ (ยูวิคอร์น/กูนิคอร์น) หรือโดยมิดเดิลแวร์ของเฟรมเวิร์กตัวอย่างเช่น:

  • จังโก้ -collectstaticกับไวท์นอยส์หรือมิดเดิลแวร์ที่คล้ายกัน
  • FastAPI / สตาร์เล็ต -StaticFilesมิดเดิลแวร์
  • Flask - การจัดการไฟล์คงที่หรือส่วนขยายในตัว

สำหรับการจัดส่งแบบคงที่ที่มีการรับส่งข้อมูลสูงให้พิจารณาให้บริการสินทรัพย์จาก CDN หรือพื้นที่จัดเก็บอ็อบเจ็กต์โดยเพิ่มโหลดบาลานเซอร์กับโทโพโลยี Environment หรือการใช้งานอาปาเช่ไพธอนเมื่อเป็นคนพื้นเมืองอาปาเช่แนะนำให้ใช้การแสดงไฟล์แบบคงที่

ตัวแปรเครื่องยนต์หลาม

ต่อไปนี้ตัวแปรคอนเทนเนอร์ควบคุมพฤติกรรมเซิร์ฟเวอร์ Python Engine (ดูทั้งหมดตัวแปร Environment เริ่มต้น):

ตัวแปร ค่าเริ่มต้น คำอธิบาย
APP_MODULE _AUTO_ ตั้งค่าจุดเริ่มต้นแอปพลิเคชันในmodule:attributeรูปแบบ (_AUTO_เพื่อการตรวจจับอัตโนมัติ)
ท่าเรือ 8000 พอร์ตผูกภายในการรับส่งข้อมูลแพลตฟอร์มบนพอร์ต80(หรือ443เมื่อเปิดใช้งาน SSL) จะถูกเปลี่ยนเส้นทางไปยังพอร์ตนี้
กระบวนการ_ผู้จัดการ uvicorn ตั้งค่าตัวจัดการกระบวนการ:ยูวิคอร์นหรือกุนิคอร์น
คนงาน nproc ตั้งค่าจำนวนกระบวนการของผู้ปฏิบัติงาน (nprocให้เท่ากับจำนวนซีพียู)

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