dokku
からインスピレーションを得たpiku
使用すると、サーバーがどれほど小さいかに関係なく、独自のサーバーにgit push
デプロイメントを行うことができます。
TL;DR:
curl https://piku.github.io/get | sh
また、 cloud-init
や手動インストールなど、他のインストール方法も利用できます。
piku
STABLE とみなされます。これはアクティブに保守されていますが、ここでの「アクティブ」とは、機能セットがほぼ完成していることを意味するため、新しい言語ランタイムが追加されるか、再現可能なバグが発生した場合にのみ更新されます。
現在、Python 3.7 以降が必要です。Ubuntu LTS 20.04 では 3.8 以降がベースライン Python 3 バージョンであり、Debian 11 はすでに 3.9 に移行していますが、これらのバージョン間に大きな違いはありません。
私たちは、いくつかのARM
ボードに内容をデプロイするための Heroku/CloudFoundry のような方法を望んでいましたが、当時のARM
ではdokku
が機能せず、 docker
でさえ過剰になる場合があるため、よりシンプルなソリューションが必要でした。
piku
は現在、ARM と Intel の両方のアーキテクチャ上でホストごとに複数のアプリケーションをデプロイ、管理、独立してスケーリングすることができ、Python、 nginx
、 uwsgi
を実行できる任意のクラウド プロバイダー (およびベアメタル) 上で動作します。
piku
Heroku のようなワークフローをサポートしています。
piku
サーバーを指すgit
SSH リモートを作成します: 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
ファイルにベイクすることもできます。また、ルート パスを引数としてstatic
ワーカー タイプを使用してgh-pages
スタイルの静的サイトをデプロイし、 git push
の後にrelease
タスクを実行してサーバー上で何らかの処理を実行することもできます。 piku
仮想ホストを完全にサポートしています。つまり、同じ VPS 上で複数のアプリをホストし、DNS エイリアスを使用して異なるホスト名でそれらのアプリにアクセスできます。
また、 piku
プライベート証明書をセットアップするか、Let's Encrypt 経由で証明書を取得して SSL を有効にします。
LAN 上にいて、macOS/iOS/Linux クライアントからpiku
にアクセスしている場合は、 piku/avahi-aliases
使用して、Avahi/mDNS/Bonjour 経由で同じ IP アドレスの異なるホストをアナウンスしてみることができます。
静的サイトに加えて、 piku
特定の URL プレフィックスをファイルシステム パスに直接マッピングする (静的アセットを提供するため) か、バックエンド応答をキャッシュする (アプリケーションから負荷を取り除くため) こともサポートしています。
これらの機能は、 ENV
ファイルに適切な値を設定することによって構成されます。
piku
、Python、 nginx
、 uwsgi
、SSH が存在する POSIX に似た環境で動作することを目的としており、Linux、FreeBSD、Cygwin、および Linux 用 Windows サブシステムにデプロイされています。
ベースラインとして、オリジナルの 256MB Raspberry Pi Model B で開発が開始され、現在でもその上で確実に動作しています。
しかし、その主な用途は、Debian と Ubuntu Linux をターゲット プラットフォームとして、Intel と ARM CPU の両方を搭載したクラウド サーバー上でアプリケーションを実行するためのマイクロ PaaS としてです。
piku
現在、Python、Node、Clojure、Java、および開発中の他のいくつかの言語 (Go など) で書かれたアプリをサポートしています。
ただし、一般的なルールとして、シェルから呼び出すことができる場合は、 piku
内で実行できます。
git
、 ssh
、 uwsgi
、 nginx
) を活用します。