piku
ซึ่งได้รับแรงบันดาลใจจาก dokku
ช่วยให้คุณสามารถ git push
Deployment ไปยังเซิร์ฟเวอร์ของคุณเองได้ ไม่ว่าจะมีขนาดเล็กแค่ไหนก็ตาม
TL; DR:
curl https://piku.github.io/get | sh
นอกจากนี้ยังมีวิธีการติดตั้งอื่นๆ ที่ใช้งานได้ รวมถึงการติดตั้ง cloud-init
และการติดตั้งด้วยตนเอง
piku
ถือว่าเสถียร มีการบำรุงรักษาอย่างสม่ำเสมอ แต่ "ใช้งานอยู่" ในที่นี้หมายถึงชุดคุณลักษณะเสร็จสิ้นแล้ว ดังนั้นจึงได้รับการอัปเดตเฉพาะเมื่อมีการเพิ่มรันไทม์ภาษาใหม่หรือข้อผิดพลาดที่ทำซ้ำได้
ปัจจุบันต้องใช้ Python 3.7 ขึ้นไป เนื่องจากแม้ว่าตอนนี้ 3.8+ จะเป็นเวอร์ชันพื้นฐานของ Python 3 ใน Ubuntu LTS 20.04 และ Debian 11 ได้ย้ายไปเป็น 3.9 แล้ว แต่ก็ไม่มีความแตกต่างที่สำคัญระหว่างเวอร์ชันเหล่านั้น
เราต้องการวิธีที่คล้ายกับ Heroku/CloudFoundry ในการปรับใช้สิ่งต่าง ๆ บนบอร์ด ARM
สองสามตัว แต่เนื่องจาก dokku
ไม่ได้ทำงานบน ARM
ในขณะนั้น และแม้แต่ docker
ก็อาจทำงานหนักเกินไปในบางครั้ง จึงจำเป็นต้องมีวิธีแก้ปัญหาที่ง่ายกว่า
ปัจจุบัน piku
สามารถปรับใช้ จัดการ และปรับขนาดแอปพลิเคชันหลายรายการต่อโฮสต์บนสถาปัตยกรรม ARM และ Intel ได้อย่างอิสระ และทำงานบนผู้ให้บริการคลาวด์ทุกราย (รวมถึง Bare Metal) ที่สามารถเรียกใช้ Python, nginx
และ uwsgi
piku
รองรับเวิร์กโฟลว์ที่เหมือน Heroku:
git
SSH ที่ชี้ไปยังเซิร์ฟเวอร์ piku
ของคุณด้วยชื่อแอปเป็นชื่อ repo: git remote add piku piku@yourserver:appname
git push piku master
(หรือถ้าคุณต้องการพุชสาขาอื่นนอกเหนือจากสาขาปัจจุบันให้ใช้ git push piku release-branch-name
)piku
กำหนดรันไทม์และติดตั้งการขึ้นต่อกันสำหรับแอปของคุณ (สร้างทุกสิ่งที่จำเป็น)virtualenv
GOPATH
แยกกันสำหรับแต่ละแอปpackage.json
ลงใน node_modules
pom.xml
หรือ build.gradle
leiningen
หรือ Clojure CLI และไฟล์ deps.edn
ได้bundle install
อัญมณีของคุณในโฟลเดอร์แยกProcfile
และเริ่มต้นผู้ปฏิบัติงานที่เกี่ยวข้องโดยใช้ uwsgi
เป็นผู้จัดการกระบวนการทั่วไปrelease
ซึ่งจะเรียกใช้ครั้งเดียวเมื่อมีการปรับใช้แอปได้config:set
) หรือขยายขนาดกระบวนการของผู้ปฏิบัติงาน ( ps:scale
)nginx
ลงในไฟล์ ENV
ได้ คุณยังสามารถปรับใช้ไซต์คงที่สไตล์ gh-pages
โดยใช้ประเภทผู้ปฏิบัติงาน static
ที่ โดยมีพาธรูทเป็นอาร์กิวเมนต์ และรันงาน release
เพื่อทำการประมวลผลบางอย่างบนเซิร์ฟเวอร์หลังจาก git push
piku
มีการรองรับโฮสต์เสมือนเต็มรูปแบบ กล่าวคือ คุณสามารถโฮสต์หลายแอปบน VPS เดียวกัน และใช้นามแฝง DNS เพื่อเข้าถึงแอปเหล่านั้นผ่านชื่อโฮสต์ที่ต่างกัน
piku
จะตั้งค่าใบรับรองส่วนตัวหรือรับผ่าน Let's Encrypt เพื่อเปิดใช้งาน SSL
หากคุณอยู่บน LAN และกำลังเข้าถึง piku
จากไคลเอนต์ macOS/iOS/Linux คุณสามารถลองใช้ piku/avahi-aliases
เพื่อประกาศโฮสต์ที่แตกต่างกันสำหรับที่อยู่ IP เดียวกันผ่าน Avahi/mDNS/Bonjour
นอกจากไซต์แบบสแตติกแล้ว piku
ยังรองรับการแมปคำนำหน้า URL เฉพาะกับพาธของระบบไฟล์โดยตรง (เพื่อให้บริการสินทรัพย์คงที่) หรือการแคชการตอบสนองแบ็กเอนด์ (เพื่อลบโหลดออกจากแอปพลิเคชัน)
คุณสมบัติเหล่านี้ได้รับการกำหนดค่าโดยการตั้งค่าที่เหมาะสมในไฟล์ ENV
piku
มีวัตถุประสงค์เพื่อทำงานในสภาพแวดล้อมที่คล้ายกับ POSIX ใดๆ ที่คุณมี Python, nginx
, uwsgi
และ SSH: ได้รับการปรับใช้บน Linux, FreeBSD, Cygwin และระบบย่อย Windows สำหรับ Linux
โดยพื้นฐานแล้ว บริษัทได้เริ่มการพัฒนาบน Raspberry Pi Model B ดั้งเดิมที่มีความจุ 256MB และยังคงทำงานได้อย่างน่าเชื่อถือ
แต่การใช้งานหลักคือเป็น micro-PaaS เพื่อรันแอปพลิเคชันบนเซิร์ฟเวอร์คลาวด์ที่มีทั้ง CPU Intel และ ARM โดยมี Debian และ Ubuntu Linux เป็นแพลตฟอร์มเป้าหมาย
ปัจจุบัน piku
รองรับแอปที่เขียนด้วย Python, Node, Clojure, Java และภาษาอื่นๆ อีกสองสามภาษา (เช่น Go) ที่กำลังพัฒนาอยู่
แต่ตามกฎทั่วไป หากสามารถเรียกใช้จากเชลล์ได้ ก็สามารถเรียกใช้ภายใน piku
ได้
git
, ssh
, uwsgi
, nginx
)