piku
, inspiriert von dokku
, können Sie git push
-Bereitstellungen auf Ihren eigenen Servern durchführen, egal wie klein diese sind.
TL;DR:
curl https://piku.github.io/get | sh
Es stehen auch andere Installationsmethoden zur Verfügung, einschließlich cloud-init
und manueller Installation.
piku
gilt als STABIL . Es wird aktiv gepflegt, aber „aktiv“ bedeutet hier, dass der Funktionsumfang so gut wie fertig ist, sodass er nur aktualisiert wird, wenn neue Sprachlaufzeiten hinzugefügt werden oder reproduzierbare Fehler auftreten.
Derzeit ist Python 3.7 oder höher erforderlich, denn obwohl 3.8+ jetzt die Basisversion von Python 3 in Ubuntu LTS 20.04 ist und Debian 11 bereits auf 3.9 umgestiegen ist, gibt es keine wesentlichen Unterschiede zwischen diesen Versionen.
Wir wollten eine Heroku/CloudFoundry-ähnliche Möglichkeit, Dinge auf einigen ARM
-Boards bereitzustellen, aber da dokku
zu diesem Zeitpunkt nicht auf ARM
funktionierte und sogar docker
manchmal übertrieben sein kann, war eine einfachere Lösung erforderlich.
piku
ist derzeit in der Lage, mehrere Anwendungen pro Host sowohl auf ARM- als auch auf Intel-Architekturen bereitzustellen, zu verwalten und unabhängig zu skalieren und funktioniert mit jedem Cloud-Anbieter (sowie Bare Metal), der Python, nginx
und uwsgi
ausführen kann.
piku
unterstützt einen Heroku-ähnlichen Workflow:
git
SSH-Remote, die auf Ihren piku
-Server verweist, mit dem App-Namen als Repo-Namen: git remote add piku piku@yourserver:appname
.git push piku master
(oder wenn Sie einen anderen Zweig als den aktuellen pushen möchten, verwenden Sie git push piku release-branch-name
).piku
bestimmt die Laufzeit und installiert die Abhängigkeiten für Ihre App (erstellt alles, was erforderlich ist).virtualenv
aufgeteilt.GOPATH
definiert.package.json
enthalten ist, in node_modules
installiert.pom.xml
oder build.gradle
erstellt.leiningen
oder die Clojure-CLI und eine deps.edn
Datei verwendet werden.bundle install
.Procfile
an und startet die relevanten Worker unter Verwendung von uwsgi
als generischem Prozessmanager.release
-Worker angeben, der einmalig ausgeführt wird, wenn die App bereitgestellt wird.config:set
) oder Arbeitsprozesse vergrößern/verkleinern ( ps:scale
).nginx
-Einstellungen in einer ENV
Datei backen. Sie können auch eine statische Site im gh-pages
-Stil mit einem static
Worker-Typ bereitstellen, mit dem Root-Pfad als Argument, und nach git push
eine release
-Aufgabe ausführen, um einige Verarbeitungen auf dem Server durchzuführen. piku
bietet vollständige Unterstützung für virtuelle Hosts – das heißt, Sie können mehrere Apps auf demselben VPS hosten und DNS-Aliase verwenden, um über verschiedene Hostnamen auf sie zuzugreifen.
piku
richtet außerdem entweder ein privates Zertifikat ein oder bezieht eines über Let's Encrypt, um SSL zu aktivieren.
Wenn Sie sich in einem LAN befinden und über macOS/iOS/Linux-Clients auf piku
zugreifen, können Sie versuchen, piku/avahi-aliases
zu verwenden, um verschiedene Hosts für dieselbe IP-Adresse über Avahi/mDNS/Bonjour anzukündigen.
Neben statischen Websites unterstützt piku
auch die direkte Zuordnung bestimmter URL-Präfixe zu Dateisystempfaden (um statische Assets bereitzustellen) oder das Zwischenspeichern von Back-End-Antworten (um Anwendungen zu entlasten).
Diese Funktionen werden durch Festlegen entsprechender Werte in der ENV
Datei konfiguriert.
piku
soll in jeder POSIX-ähnlichen Umgebung funktionieren, in der Sie Python, nginx
, uwsgi
und SSH haben: Es wurde unter Linux, FreeBSD, Cygwin und dem Windows-Subsystem für Linux bereitgestellt.
Die Entwicklung begann zunächst auf einem originalen Raspberry Pi Model B mit 256 MB und läuft immer noch zuverlässig darauf.
Sein Haupteinsatzgebiet ist jedoch die Verwendung als Micro-PaaS zum Ausführen von Anwendungen auf Cloud-Servern mit Intel- und ARM-CPUs, mit Debian und Ubuntu Linux als Zielplattformen.
piku
unterstützt derzeit Apps, die in Python, Node, Clojure, Java und einigen anderen Sprachen (wie Go) geschrieben sind.
Aber als allgemeine Regel gilt: Wenn es von einer Shell aus aufgerufen werden kann, kann es in piku
ausgeführt werden.
git
, ssh
, uwsgi
, nginx
).