คู่มือ Python Apps Specifications สำหรับ Python
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
คำสั่ง ชื่อเมนู Parameter และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง
หน้านี้อธิบายข้อกำหนดด้าน Package และการ Deploy สำหรับ Application Python ใน Ruk-Com PaaS ใช้สารบัญด้านล่างเพื่อค้นหาข้อมูลที่คุณต้องการได้รวดเร็วยิ่งขึ้น:
การจัดการการพึ่งพา
Platform จะติดตั้งการพึ่งพาโดยอัตโนมัติในระหว่างการ Deploy แต่ละครั้งสำหรับทั้งสองอาปาเช่ไพธอนและเครื่องยนต์หลาม. คุณไม่จำเป็นต้องสร้างหรือเปิดใช้งาน Environment เสมือนของโปรเจ็กต์ก่อนที่จะ Deploy - Container จะมีขอบเขตการแยก
หมายเหตุ:
- มีการติดตั้งการพึ่งพาในฐานะผู้ใช้
python. - ความคืบหน้าและข้อผิดพลาดในการติดตั้งจะถูกบันทึกไว้ในบันทึกการใช้งาน (
/home/jelastic/log/deploy.log). - ที่ยูวี(
uv.lock) และpylock.tomlขณะนี้เครื่องมือ (PEP 751) ยังไม่รองรับการ Deploy อัตโนมัติจนกว่าจะดำเนินการส่งออกกrequirements.txtจากของคุณยูวีโครงการหรือใช้ไฟล์ล็อค Poetry/Pipenv
ปัจจุบัน Platform รองรับเครื่องมือดังต่อไปนี้:
| เครื่องมือ | สแต็ค | ทริกเกอร์การตรวจจับ | ลักษณะการติดตั้ง |
|---|---|---|---|
| บทกวี | เครื่องยนต์หลาม | 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 หลายไฟล์ Platform ก็จะทำงานหนึ่งขั้นตอนการทำงานต่อการ Deploy ตามลำดับต่อไปนี้:
- บทกวี- ถ้า
poetry.lockมีอยู่หรือpyproject.tomlประกอบด้วย[tool.poetry] - ไปป์เพน- ถ้า
Pipfileมีอยู่จริง - ปิ๊ป- ถ้า
requirements.txtมีอยู่จริง
การจัดการ Package ด้วยตนเองผ่าน SSH (ตัวเลือก)
หากต้องการตรวจสอบหรือปรับ Package นอก Workflow การ Deploy ให้เชื่อมต่อกับ Application Serverผ่านทาง SSHและใช้มาตรฐานปิ๊ปคำสั่ง:
pip install {packageName}- ติดตั้ง Packagepip uninstall {packageName}- ลบ Packagepip install --upgrade {packageName}- อัพเดต Packagepip install -r requirements.txt- ติดตั้ง Package จากไฟล์ข้อกำหนดpip list- แสดงรายการ Package ที่ติดตั้ง
จุดรับสมัคร
อาปาเช่ไพธอนคาดหวังจุดเข้า WSGI และรายการการพึ่งพาในไฟล์เก็บถาวรการ Deploy ของคุณ:
wsgi.py- เปิดเผยวัตถุ Application WSGI สำหรับmod_wsgirequirements.txt- แสดงรายการ Package ที่ติดตั้งด้วยปิ๊ประหว่างการใช้งาน
รวมทั้งสองไฟล์ไว้ในรูทโปรเจ็กต์ของไฟล์เก็บถาวรของคุณ Platform จะติดตั้งการพึ่งพาจากrequirements.txtและกำหนดเส้นทาง Traffic HTTP ไปยังวัตถุ Application ที่กำหนดไว้wsgi.py.
เครื่องยนต์หลามใช้APP_MODULEตัวแปรเพื่อกำหนดจุดเริ่มต้น Application:
APP_MODULE="_AUTO_"(ค่าเริ่มต้น) - ตรวจจับจุดเริ่มต้นโดยอัตโนมัติในระหว่างการ Deploy และคงอยู่/home/jelastic/pythonenv.APP_MODULE="module:attribute"(ตัวอย่างเช่น,app:appหรือmyproject.asgi:application) - ตั้งค่าจุดเริ่มต้นด้วยตนเอง Platform ตรวจสอบว่าสามารถนำเข้าโมดูลที่ระบุได้ก่อนที่จะเริ่มบริการหากการตรวจสอบล้มเหลวบริการจะไม่เริ่มทำงานและข้อผิดพลาดจะถูกบันทึกไว้ใน Log File
การตรวจจับอัตโนมัติทำงานดังนี้:Platform จะสแกน Directory สูงสุดสามระดับด้านล่างROOT_DIR(/home/jelastic/ROOT) และเลือกจุดเริ่มต้นโดยใช้ลำดับความสำคัญของไฟล์ต่อไปนี้:app.py>main.py>application.py>server.py>api.py>asgi.py>wsgi.py. เมื่อไฟล์หลายไฟล์ที่มีชื่อเดียวกันอยู่ที่ระดับความลึกต่างกันระบบจะเลือกการจับคู่ที่ตื้นที่สุด (เช่น rootapp.pyให้ความสำคัญมากกว่าbackend/app.py).
เครื่องยนต์หลาม
ส่วนต่อไปนี้จะอธิบายลักษณะการใช้งานและ Runtime เฉพาะสำหรับเครื่องยนต์หลามApplicationServer
กระแสจราจรและเครือข่าย
Python Engine ใช้ Uvicorn/Gunicorn เป็น Server HTTP(S) โดยไม่มีพร็อกซีย้อนกลับใน Application Container เชื่อมโยงกับ Port ภายในและ Platform จะจัดการการส่งต่อ Port ผู้ใช้เข้าถึงแอปบน Port มาตรฐาน 80/443 ผ่านทาง URL Environment
| ชั้น | บทบาท |
|---|---|
| URL ของ Platform | ผู้ใช้เข้าถึง Application ของคุณบน Port80(HTTP) หรือ443(HTTPS) ผ่าน Domain Environment |
| การส่งต่อ Port | pythonAutoConfigกำหนดค่าnftablesกฎภายใน Container เพื่อเปลี่ยนเส้นทาง TrafficPlatform ไปPORT |
| ApplicationServer | ยูวิคอร์นหรือกูนิคอร์นผูกติดกับHOST/PORT(ค่าเริ่มต้น0.0.0.0:8000) และจัดการคำขอ HTTP(S) |
เมื่อ Platform SSL ถูกปิดใช้งาน (ค่าเริ่มต้น) Port TCP80ถูกเปลี่ยนเส้นทางไปยัง ApplicationPORT. เมื่อเปิดใช้งาน SSL ของ Platform Port TCP443ถูกเปลี่ยนเส้นทางไปยัง ApplicationPORT. ท่าเรือ80ยังคงพร้อมใช้งานสำหรับการตรวจสอบ Let's Encrypt HTTP
Platform SSL
คุณไม่จำเป็นต้องเพิ่มการกำหนดค่า TLS ลงใน CodeApplication ของคุณสำหรับโฟลว์การ Host มาตรฐาน SSL ได้รับการจัดการผ่าน UI ของ Platform:
- เปิดใช้งาน SSL ผ่านทางมาเข้ารหัสส่วนเสริมกันหรืออัปโหลดใบรับรองที่กำหนดเอง
- Platform จัดเตรียมใบรับรองและชุดต่างๆ
SSLEnabledใน/home/jelastic/pythonenv. - ที่
pythonengineบริการ Restart และpythonAutoConfigสลับการส่งต่อ Port จาก 80 เป็น 443 - ตัวจัดการกระบวนการเปิดใช้งาน TLS บน Application Server โดยใช้ใบรับรองจาก
/var/lib/jelastic/SSL/(เส้นทางเริ่มต้น:jelastic.crt,jelastic.key,jelastic-ca.crt).
อ้างถึงDomain ที่กำหนดเองและSSL ในตัวสำหรับรายละเอียดการจัดการใบรับรอง
ไฟล์แบบคงที่
Python Engine ไม่มีเว็บ Server ไฟล์คงที่โดยเฉพาะสินทรัพย์คงที่ให้บริการโดย Application Server (ยูวิคอร์น/กูนิคอร์น) หรือโดยมิดเดิลแวร์ของเฟรมเวิร์กตัวอย่างเช่น:
- จังโก้ -
collectstaticกับไวท์นอยส์หรือมิดเดิลแวร์ที่คล้ายกัน - FastAPI / สตาร์เล็ต -
StaticFilesมิดเดิลแวร์ - Flask - การจัดการไฟล์คงที่หรือส่วนขยายในตัว
สำหรับการจัดส่งแบบคงที่ที่มี Traffic สูงให้พิจารณาให้บริการสินทรัพย์จาก CDN หรือพื้นที่จัดเก็บอ็อบเจ็กต์โดยเพิ่มLoad Balancerกับ Topology Environment หรือการใช้งานอาปาเช่ไพธอนเมื่อเป็นคนพื้นเมืองอาปาเช่แนะนำให้ใช้การแสดงไฟล์แบบคงที่
ตัวแปรเครื่องยนต์หลาม
ต่อไปนี้ตัวแปร Containerควบคุมพฤติกรรม Server Python Engine (ดูทั้งหมดEnvironment Variable เริ่มต้น):
| ตัวแปร | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
| APP_MODULE | _AUTO_ |
ตั้งค่าจุดเริ่มต้น Application ในmodule:attributeรูปแบบ (_AUTO_เพื่อการตรวจจับอัตโนมัติ) |
| ท่าเรือ | 8000 |
Port ผูกภายใน TrafficPlatform บน Port80(หรือ443เมื่อเปิดใช้งาน SSL) จะถูกเปลี่ยนเส้นทางไปยัง Port นี้ |
| กระบวนการ_ผู้จัดการ | uvicorn |
ตั้งค่าตัวจัดการกระบวนการ:ยูวิคอร์นหรือกุนิคอร์น |
| คนงาน | nproc |
ตั้งค่าจำนวนกระบวนการของผู้ปฏิบัติงาน (nprocให้เท่ากับจำนวนซีพียู) |
หากจำเป็นคุณสามารถปรับตัวแปรเหล่านี้และ Restart Container เพื่อใช้การเปลี่ยนแปลงได้

