piku

piku

轻量级Git推送式应用部署工具

piku是一个轻量级应用部署工具,支持通过Git推送将应用部署到服务器。它兼容多种编程语言,如Python、Node.js和Java,提供虚拟主机和SSL功能。piku适用于低端设备和云服务器,遵循12因子应用原则,为开发者提供简单高效的部署方式。该工具支持多应用管理、独立扩展,适用于ARM和Intel架构,可在各种云提供商和裸机上运行。

piku部署工具Git推送服务器管理应用程序部署Github开源项目

piku 标志

piku,受dokku启发而生,允许您将应用程序通过git push部署到自己的服务器,无论服务器有多小。

演示

asciicast

许可证: MIT

文档: 安装 | 使用 | Procfile | ENV | 示例 | 路线图 | 贡献 | LinuxConf 演讲 | 快速 Web 应用程序教程 | 讨论论坛

安装

TL;DR:

curl https://piku.github.io/get | sh

还有其他安装方法,包括 cloud-init手动安装

项目活动

piku 被视为稳定。它正在积极维护,但"积极"在此意味着功能集已基本完成,因此只有在添加新的语言运行时或出现可重现的错误时才会更新。

它当前需要 Python 3.7 或更高版本,因为即使 3.8+ 现在是 Ubuntu LTS 20.04 和 Debian 11 中的 Python 3 的基准版本,但这些版本之间没有实质性的差异。

动机

我们希望拥有一种类似于 Heroku/CloudFoundry 的方式来部署一些 ARM 主板上的东西,但由于 dokku 当时不适用于 ARM, 即使 docker 有时也可能过于复杂,因此需要一个更简单的解决方案。

piku 目前能够在 ARM 和 Intel 架构上独立部署、管理和扩展多个应用程序,并在任何可以运行 Python、nginxuwsgi 的云提供商(以及裸机)上工作。

工作流程

piku 支持类似于 Heroku 的工作流程:

  • 创建一个指向您的 piku 服务器的 git SSH 远程,以应用程序名称作为仓库名称: git remote add piku piku@yourserver:appname
  • 推送您的代码: git push piku master(或者如果您想推送一个不同于当前分支的分支,请使用 git push piku release-branch-name)。
  • piku 确定运行时并为您的应用程序安装依赖项(构建所需的任何内容)。
    • 对于 Python,它会将每个应用程序的依赖项隔离到一个 virtualenv 中。
    • 对于 Go,它为每个应用程序定义一个单独的 GOPATH
    • 对于 Node,它会将 package.json 中的内容安装到 node_modules
    • 对于 Java,它会根据 pom.xmlbuild.gradle 文件来构建您的应用程序。
    • 对于 Clojure,它可以使用 leiningen 或 Clojure CLI 和 deps.edn 文件。
    • 对于 Ruby,它会在一个隔离的文件夹中执行 bundle install 来安装您的 gems。
  • 然后它会查看 Procfile 并使用 uwsgi 作为通用进程管理器启动相关的工作进程。
  • 您还可以选择指定一个 release 工作进程,该工作进程在应用程序部署时运行一次。
  • 您可以远程更改应用程序设置(config:set)或扩展/缩减工作进程(ps:scale)。
  • 您还可以将应用程序和 nginx 设置纳入 ENV 文件。 您还可以使用 static 工作类型和根路径作为参数来部署一个 gh-pages 风格的静态站点,并在 git push 后运行一个 release 任务来对服务器进行一些处理。

虚拟主机和 SSL

piku 拥有完整的虚拟主机支持,也就是说,您可以在同一台 VPS 上托管多个应用程序,并使用 DNS 别名通过不同的主机名访问它们。

piku 还会设置私有证书或通过 Let's Encrypt 获取证书来启用 SSL。

如果您在局域网上,并且从 macOS/iOS/Linux 客户端访问 piku,您可以尝试使用 piku/avahi-aliases 通过 Avahi/mDNS/Bonjour 为同一 IP 地址公布不同的主机。

缓存和静态路径

除了静态站点,piku 还支持直接将特定的 URL 前缀映射到文件系统路径(用于提供静态资产)或缓存后端响应(以减轻应用程序的负载)。

这些特性是通过在 ENV 文件中设置适当的值来配置的。

支持的平台

piku 旨在在任何有 Python、nginxuwsgi 和 SSH 的 POSIX 类环境中工作:它已经在 Linux、FreeBSD、CygwinWindows 子系统 for Linux 上部署过。

作为一个基准,它是从一台 256MB 树莓派 Model B 开始开发的,并且仍然可以可靠地运行在上面。

但它的主要用途是作为一个微型 PaaS,在具有 Intel 和 ARM CPU 的云服务器上运行应用程序,以 Debian 和 Ubuntu Linux 作为目标平台。

支持的运行时

piku 目前支持用 Python、Node、Clojure、Java 等语言编写的应用程序(Go 等其他一些语言也在开发中)。

但一般来说,只要可以从 shell 调用,就可以在 piku 中运行。

核心价值观

  • 在低端设备上运行。
  • 对业余爱好者和 K-12 学校可访问。
  • ~1500 行可读代码。
  • 函数式编程风格。
  • 少量(单个?)依赖项
  • 12 因素应用
  • 简化用户体验。
  • 覆盖 80% 的常见用例。
  • 为所有功能提供合理的默认值。
  • 在 Raspbian/Debian/Ubuntu 中利用发行版软件包(对 Alpine 和 RHEL 的支持正在进行中)
  • 利用标准工具(gitsshuwsginginx)。
  • 尽可能保持向后兼容性

编辑推荐精选

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

下拉加载更多