piku
, inspirado en dokku
, te permite realizar implementaciones git push
en tus propios servidores, sin importar cuán pequeños sean.
TL;DR:
curl https://piku.github.io/get | sh
También hay otros métodos de instalación disponibles, incluida la instalación manual y cloud-init
.
piku
se considera ESTABLE . Se mantiene activamente, pero "activamente" aquí significa que el conjunto de funciones está prácticamente terminado, por lo que solo se actualiza cuando se agregan nuevos tiempos de ejecución de lenguaje o surgen errores reproducibles.
Actualmente requiere Python 3.7 o superior, ya que aunque 3.8+ es ahora la versión básica de Python 3 en Ubuntu LTS 20.04 y Debian 11 ya pasó a 3.9, no existen diferencias sustanciales entre esas versiones.
Queríamos una forma similar a Heroku/CloudFoundry de implementar cosas en algunas placas ARM
, pero como dokku
no funcionaba en ARM
en ese momento e incluso docker
puede ser excesivo a veces, se necesitaba una solución más simple.
Actualmente, piku
puede implementar, administrar y escalar de forma independiente múltiples aplicaciones por host en arquitecturas ARM e Intel, y funciona en cualquier proveedor de nube (así como bare metal) que pueda ejecutar Python, nginx
y uwsgi
.
piku
admite un flujo de trabajo similar al de Heroku:
git
SSH que apunte a su servidor piku
con el nombre de la aplicación como nombre del repositorio: git remote add piku piku@yourserver:appname
.git push piku master
(o si desea insertar una rama diferente a la actual, use git push piku release-branch-name
).piku
determina el tiempo de ejecución e instala las dependencias de su aplicación (construyendo lo que sea necesario).virtualenv
.GOPATH
separado para cada aplicación.package.json
en node_modules
.pom.xml
o build.gradle
.leiningen
o la CLI de Clojure y un archivo deps.edn
.bundle install
de sus gemas en una carpeta aislada.Procfile
e inicia a los trabajadores relevantes usando uwsgi
como administrador de procesos genérico.release
que se ejecute una vez cuando se implemente la aplicación.config:set
) o ampliar o reducir los procesos de trabajo ( ps:scale
).nginx
en un archivo ENV
. También puede implementar un sitio estático estilo gh-pages
usando un tipo de trabajador static
, con la ruta raíz como argumento, y ejecutar una tarea release
para realizar algún procesamiento en el servidor después de git push
. piku
tiene soporte completo de host virtual, es decir, puede alojar múltiples aplicaciones en el mismo VPS y usar alias DNS para acceder a ellas a través de diferentes nombres de host.
piku
también configurará un certificado privado u obtendrá uno a través de Let's Encrypt para habilitar SSL.
Si está en una LAN y accede piku
desde clientes macOS/iOS/Linux, puede intentar usar piku/avahi-aliases
para anunciar diferentes hosts para la misma dirección IP a través de Avahi/mDNS/Bonjour.
Además de los sitios estáticos, piku
también admite la asignación directa de prefijos de URL específicos a rutas del sistema de archivos (para servir activos estáticos) o el almacenamiento en caché de respuestas de back-end (para eliminar la carga de las aplicaciones).
Estas características se configuran estableciendo valores apropiados en el archivo ENV
.
piku
está diseñado para funcionar en cualquier entorno similar a POSIX donde tenga Python, nginx
, uwsgi
y SSH: se ha implementado en Linux, FreeBSD, Cygwin y el subsistema de Windows para Linux.
Como punto de partida, comenzó su desarrollo en una Raspberry Pi Modelo B original de 256 MB y todavía funciona de manera confiable en ella.
Pero su uso principal es como micro-PaaS para ejecutar aplicaciones en servidores en la nube con CPU Intel y ARM, con Debian y Ubuntu Linux como plataformas de destino.
Actualmente, piku
admite aplicaciones escritas en Python, Node, Clojure, Java y algunos otros lenguajes (como Go) en proceso.
Pero como regla general, si se puede invocar desde un shell, se puede ejecutar dentro de piku
.
git
, ssh
, uwsgi
, nginx
).