Piku 是一款极简的 PaaS (Platform as a Service,平台即服务)平台,它允许你通过 Git Push 将代码部署到自己的服务器,即使你的服务器资源极其有限。它以 Dokku 为灵感,却比 Dokku 更轻量级,更适合在资源受限的设备上运行。
Piku 的诞生:为小型设备而生
Piku 的诞生源于一个简单的需求:在资源有限的 ARM 板上,如何实现类似 Heroku 或 CloudFoundry 的部署体验?当时 Dokku 还不支持 ARM 平台,而 Docker 对小型设备来说也过于庞大。因此,Piku 应运而生,它提供了一种更轻量级、更易于使用的方式,将应用部署到各种平台,包括 ARM 和 Intel 架构。
Piku 的优势:
• 轻量级: Piku 只有大约 1500 行可读代码,依赖极少,可以在低端设备上流畅运行。
• 简单易用: Piku 提供了类似 Heroku 的工作流程,只需要简单几步就能将代码部署到服务器。
• 灵活可扩展: Piku 支持多种运行时环境,包括 Python、Node、Clojure、Java 等,并可以根据需要扩展应用程序。
• 高可用性: Piku 经过测试,可以在 Raspberry Pi 等低端设备上稳定运行,并支持多种云平台和裸机环境。
Piku 的工作流程:
1. 创建远程仓库: 在你的 Piku 服务器上创建一个 Git SSH 远程仓库,仓库名称即为应用程序名称。
2. 推送代码: 使用 git push piku master 将代码推送到远程仓库。
3. 自动部署: Piku 会自动检测代码运行时环境,安装依赖并构建应用程序。
4. 启动服务: Piku 使用 uwsgi 作为进程管理器,根据 Procfile 启动应用程序进程。
5. 管理应用: 通过命令行工具可以远程修改应用程序设置、调整进程数量等。
Piku 的功能亮点:
• 虚拟主机和 SSL 支持: Piku 支持在同一台 VPS 上托管多个应用程序,并通过 DNS 别名访问。Piku 还会自动配置 SSL 证书,可以使用私有证书或通过 Let's Encrypt 获取证书。
• 缓存和静态路径映射: Piku 支持将特定 URL 前缀映射到文件系统路径(用于提供静态资产)或缓存后端响应(减轻应用程序负载)。
• 多平台支持: Piku 支持多种 POSIX 环境,包括 Linux、FreeBSD、Cygwin 和 Windows Subsystem for Linux。
总结
Piku 的目标是成为一个轻量级、易于使用且功能强大的 PaaS 平台,让任何人都可以轻松地将应用程序部署到自己的服务器。
项目地址:https://github.com/piku/piku