piku
, вдохновленный dokku
, позволяет выполнять развертывания git push
на ваших собственных серверах, независимо от того, насколько они малы.
ТЛ;ДР:
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, между этими версиями нет существенных различий.
Нам нужен был способ развертывания чего-либо на нескольких платах ARM
, подобный Heroku/CloudFoundry, но поскольку dokku
в то время не работал на ARM
, и даже docker
иногда может быть излишним, требовалось более простое решение.
piku
в настоящее время может развертывать, управлять и независимо масштабировать несколько приложений на один хост как на архитектуре ARM, так и на Intel, и работает с любым облачным провайдером (а также с «голым железом»), который может запускать Python, nginx
и uwsgi
.
piku
поддерживает рабочий процесс, подобный Heroku:
git
SSH, указывающий на ваш сервер piku
с именем приложения в качестве имени репозитория: 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.
Если вы находитесь в локальной сети и получаете доступ к 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 с памятью 256 МБ и до сих пор надежно работает на ней.
Но его основное использование — это микро-PaaS для запуска приложений на облачных серверах с процессорами Intel и ARM, а в качестве целевых платформ — Debian и Ubuntu Linux.
piku
в настоящее время поддерживает приложения, написанные на Python, Node, Clojure, Java и некоторых других языках (например, Go), находящихся в разработке.
Но, как правило, если его можно вызвать из оболочки, его можно запустить и внутри piku
.
git
, ssh
, uwsgi
, nginx
).