Deploy แอป Python
Virtual environment แยกแต่ละ release ในนาม project user
เลือกวิธี start
| โหมด | Entry | Dependency |
|---|---|---|
| Script | main.py / src/server.py | Dependencies ของแอป |
| ASGI | app.main:app | uvicorn + framework |
| WSGI | app:app / project.wsgi:application | gunicorn + framework |
Web แบบ script อ่าน PORT/HOST ส่วน ASGI/WSGI ใช้ loopback/port arguments ที่กำหนด Worker รองรับเฉพาะ script โดยไม่ตรวจ HTTP และไม่เติม PORT/HOST เลือก requirements.txt, pyproject.toml ที่ติดตั้งได้ หรือไม่ใช้ dependencies สำหรับ standard-library script
เตรียม venv บน host และ rollback
ตรวจ /usr/bin/python3 และ python3-venv ก่อน Python ที่ติดมาพร้อม Certbot ไม่ได้ยืนยันว่ามี venv Helper สร้าง .venv ที่ final release path ลดสิทธิ์เป็น uid/gid ของโปรเจกต์แล้วใช้ pip ใน venv จากนั้น pip check และ start service โดย Web ตรวจ HTTP ตาม config ส่วน Worker ตรวจ process stability เมื่อ rollback จะใช้ venv ของ release ที่เก็บไว้ ส่วน local source preflight ที่ไม่มี helper ไม่ใช่ HTTP check ที่สำเร็จ
เมื่อใดควรใช้ Compose
Native contract นี้ไม่ได้ตั้ง private indexes, OS libraries เพิ่ม, ตัวติดตั้ง lockfile ของ Poetry/uv หรือ migration/pre-start command อิสระ ใช้ Compose ที่เชื่อถือเมื่อมีข้อกำหนดเหล่านี้ และไม่ใช้ sudo pip หรือติดตั้ง dependencies แบบ global