使用 GoFrame 打包部署到 Linux,并通过 PM2 启动项目

276 阅读2分钟

使用 GoFrame 打包部署到 Linux,并通过 PM2 启动项目

本文将手把手教你如何将基于 GoFrame 框架开发的项目打包成可执行文件,并部署到 Linux 服务器上,结合 PM2 来管理你的服务进程,做到项目上线后稳定运行、断电重启自动拉起等。

🧱 一、前置准备

1. 环境要求

  • 开发环境:GoFrame 项目(本文以 GoFrame v2 为例)
  • 编译环境:Go 1.20+
  • 目标服务器:Linux x64(如 CentOS / Ubuntu)
  • 服务管理工具:PM2(Node.js 环境)

2. 安装 PM2

bash
npm install -g pm2

如果你还没有安装 Node.js,可以先装个 Node.js(建议使用 nvm 安装)。


🚀 二、GoFrame 打包为 Linux 可执行文件

1. 设置 GOOS 和 GOARCH 环境变量

bash
GOOS=linux GOARCH=amd64 go build -o myapp main.go

如果你项目采用的是 GoFrame 标准结构(main.go 是启动入口),这个命令会在当前目录下生成一个 myapp 可执行文件。

✅ 小技巧:你也可以使用 gf build 命令:

bash
gf build main.go -a amd64 -s linux -n myapp

这样还能自动打包资源文件,非常适合包含 resource, template, config 等目录的项目。


📦 三、上传可执行文件到 Linux 服务器

使用 scp 或其他工具上传 myapp 文件到你的服务器:

bash
scp ./myapp root@your-server-ip:/home/youruser/myapp/

🧭 四、使用 PM2 启动 GoFrame 服务

虽然 PM2 是 Node.js 世界的神器,但它也可以管理任何可执行程序。

1. 编写启动脚本 ecosystem.config.js

在项目根目录新建 ecosystem.config.js 文件:

js
module.exports = {
  apps: [
    {
      name: "myapp",
      script: "./myapp",
      watch: false,
      autorestart: true,
      max_memory_restart: "500M",
      env: {
        PORT: 8000,
        NODE_ENV: "production",
      },
    },
  ],
};

2. 启动项目

bash
pm2 start ecosystem.config.js

3. 设置开机启动

bash
pm2 startup
pm2 save

这一步确保服务器重启后,你的项目也能自动拉起。


🔍 五、查看运行状态和日志

bash
复制编辑
pm2 list         # 查看所有服务状态
pm2 logs myapp   # 查看服务日志
pm2 restart myapp  # 重启服务
pm2 stop myapp     # 停止服务

🎯 六、总结

本篇文章我们学习了:

  • 如何将 GoFrame 项目打包成 Linux 可执行文件;
  • 如何上传并在服务器运行;
  • 如何使用 PM2 管理 Go 项目的运行生命周期。

结合 PM2 后,我们的 Go 服务不再担心挂掉或意外停止,也无需每次重启手动拉起,非常适合中小型项目部署!

如果这篇文章对你有帮助,欢迎点赞 + 收藏 + 评论讨论 🙌!