piku
, inspirado em dokku
, permite que você faça implantações git push
em seus próprios servidores, não importa quão pequenos eles sejam.
DR:
curl https://piku.github.io/get | sh
Existem também outros métodos de instalação disponíveis, incluindo cloud-init
e instalação manual.
piku
é considerado ESTÁVEL . Ele é mantido ativamente, mas "ativamente" aqui significa que o conjunto de recursos está praticamente concluído, portanto, ele só é atualizado quando novos tempos de execução de linguagem são adicionados ou bugs reproduzíveis surgem.
Atualmente requer Python 3.7 ou superior, pois embora 3.8+ seja agora a versão básica do Python 3 no Ubuntu LTS 20.04 e o Debian 11 já tenha passado para 3.9, não há diferenças substanciais entre essas versões.
Queríamos uma maneira semelhante ao Heroku/CloudFoundry de implantar coisas em algumas placas ARM
, mas como dokku
não funcionava no ARM
na época e até mesmo docker
pode ser um exagero às vezes, era necessária uma solução mais simples.
Atualmente, piku
é capaz de implantar, gerenciar e dimensionar de forma independente vários aplicativos por host nas arquiteturas ARM e Intel e funciona em qualquer provedor de nuvem (bem como bare metal) que possa executar Python, nginx
e uwsgi
.
piku
suporta um fluxo de trabalho semelhante ao Heroku:
git
SSH remoto apontando para o seu servidor piku
com o nome do aplicativo como nome do repositório: git remote add piku piku@yourserver:appname
.git push piku master
(ou se você quiser enviar um branch diferente do atual, use git push piku release-branch-name
).piku
determina o tempo de execução e instala as dependências do seu aplicativo (construindo o que for necessário).virtualenv
.GOPATH
separado para cada aplicativo.package.json
em node_modules
.pom.xml
ou build.gradle
.leiningen
ou Clojure CLI e um arquivo deps.edn
.bundle install
suas gems em uma pasta isolada.Procfile
e inicia os trabalhadores relevantes usando uwsgi
como gerenciador de processos genérico.release
que será executado uma vez quando o aplicativo for implantado.config:set
) ou aumentar/diminuir processos de trabalho ( ps:scale
).nginx
em um arquivo ENV
. Você também pode implantar um site estático no estilo gh-pages
usando um tipo de trabalhador static
, com o caminho raiz como argumento, e executar uma tarefa release
para fazer algum processamento no servidor após git push
. piku
tem suporte completo a host virtual - ou seja, você pode hospedar vários aplicativos no mesmo VPS e usar aliases DNS para acessá-los por meio de nomes de host diferentes.
piku
também configurará um certificado privado ou obterá um via Let's Encrypt para habilitar SSL.
Se você estiver em uma LAN e acessando piku
de clientes macOS/iOS/Linux, você pode tentar usar piku/avahi-aliases
para anunciar hosts diferentes para o mesmo endereço IP via Avahi/mDNS/Bonjour.
Além de sites estáticos, piku
também suporta o mapeamento direto de prefixos de URL específicos para caminhos do sistema de arquivos (para servir ativos estáticos) ou armazenar em cache respostas de back-end (para remover a carga dos aplicativos).
Esses recursos são configurados definindo valores apropriados no arquivo ENV
.
piku
foi projetado para funcionar em qualquer ambiente tipo POSIX onde você tenha Python, nginx
, uwsgi
e SSH: ele foi implantado em Linux, FreeBSD, Cygwin e no subsistema Windows para Linux.
Como base, ele iniciou seu desenvolvimento em um Raspberry Pi Modelo B original de 256 MB e ainda funciona de maneira confiável nele.
Mas seu principal uso é como micro-PaaS para executar aplicativos em servidores em nuvem com CPUs Intel e ARM, com Debian e Ubuntu Linux como plataformas alvo.
piku
atualmente oferece suporte a aplicativos escritos em Python, Node, Clojure, Java e algumas outras linguagens (como Go) em desenvolvimento.
Mas como regra geral, se puder ser invocado a partir de um shell, poderá ser executado dentro de piku
.
git
, ssh
, uwsgi
, nginx
).