使用PM2部署goweb工程

一、安装nodepm2

  • 1、下载源码

    wget https://nodejs.org/dist/v16.19.1/node-v16.19.1-linux-x64.tar.xz
    
  • 2、解压文件

    tar xvf node-v16.19.1-linux-x64.tar.xz
    
  • 3、进入解压后的文件夹中进行拷贝文件

    sudo cp -R * /usr/local/
    
  • 4、检查是否安装成功

    node -v
    npm -v
    
  • 5、安装pm2

    npm install pm2 -g
    
  • 6、检查pm2是否安装成功

    pm2 --version
    
  • 7、如果安装比较慢,可以切换镜像源

    npm config set registry https://registry.npm.taobao.org
    
  • 8、或者使用下面命令安装

    npm install pm2 -g --registry=http://mirrors.cloud.tencent.com/npm
    

二、PM2启动go程序

  • 1、Mac或者widnow 下编译, Linux 或者 Windows下去执行

    # linux 下去执行
    CGO_ENABLED=0  GOOS=linux  GOARCH=amd64  go build main.go
    # Windows 下去执行
    CGO_ENABLED=0 GOOS=windows  GOARCH=amd64  go  build  main.go
    
  • 2、Linux 下编译 , Mac 或者 Windows 下去执行

    # Mac  下去执行
    CGO_ENABLED=0 GOOS=darwin  GOARCH=amd64  go build main.go
    # Windows 下执行
    CGO_ENABLED=0 GOOS=windows  GOARCH=amd64  go build main.go
    
  • 3、直接启动

    pm2 start 打包后的项目名称
    # 我目前是window电脑,打包出来的文件名字叫main.exe
    pm2 start main.exe 
    
  • 4、如果要传递参数的方式启动(比如启动不同环境的)

    pm2 start main.exe -- -envString prod
    
  • 5、如果要显示日志输出

    pm2 start main.exe -o ./out.log -e ./error.log --log-date-format="YYYY-MM-DD HH:mm Z" -- -envString prod
    
  • 6、以下是我一个go项目中的Makefile文件内容,可以参考

    runDev:
    	 go run main.go -envString dev
    runProd:
    	go run main.go -envString prod
    buildLinux:
    	CGO_ENABLED=0  GOOS=linux  GOARCH=amd64  go build -o im-api main.go
    
    buildWin:
    	go build -o im-api.exe main.go
    startDev:
    	pm2 start im-api.exe -o ./out.log -e ./error.log --log-date-format="YYYY-MM-DD HH:mm Z"
    startProd:
    	pm2 start im-api.exe -o ./out.log -e ./error.log --log-date-format="YYYY-MM-DD HH:mm Z" -- -envString prod
    
### 使用 PM2 部署 Go 应用程序 尽管 PM2 主要用于 Node.js 应用的管理和部署,也可以通过一些额外配置来支持其他类型的后台服务,比如 Go 编写的服务器端应用。为了确保 Go 应用能被有效管理并保持稳定运行,在使用 PM2 进行部署时应当遵循一系列最佳实践。 #### 安装依赖项与环境准备 在目标机器上安装必要的软件包,包括但不限于 Git 和 Golang 开发工具链。如果应用程序依赖特定版本的库,则需提前准备好这些资源[^2]。 #### 构建可执行文件 编译阶段至关重要,因为这决定了最终产物的质量以及其能否顺利启动。建议采用静态链接的方式构建二进制文件,这样可以减少对外部共享库的依赖,从而降低因缺少某些动态链接库而导致的应用无法正常工作的风险。 ```bash CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app . ``` 此命令会生成名为 `app` 的 Linux 平台下兼容的独立执行档。 #### 创建生态系统配置文件 (ecosystem.config.js) 定义一个 JSON 或 JavaScript 格式的配置文件来描述待托管的服务详情。对于 Go 应用而言,重点在于设置正确的入口点(即刚才提到的那个 `.exe` 文件),还有就是工作目录、日志记录策略等方面的内容: ```javascript module.exports = { apps : [{ name: 'my-go-app', script: './app', // 假设当前路径存在上述编译得到的二进制文件 instances: 'max', // 可选参数, 表示尽可能多地创建实例数以充分利用多核CPU性能 exec_mode: "cluster",// 同样是为了优化并发处理能力而设定的工作模式 watch: false, max_memory_restart: '1G',// 当内存占用超过一定限度时自动重启进程以防崩溃 env: { NODE_ENV: "production" } }] }; ``` 值得注意的是,这里虽然指定了 `NODE_ENV` 环境变量,但这并不影响 Go 应用本身;相反,这样做主要是为了让后续可能引入的日志分析组件或其他中间件能够据此调整行为逻辑。 #### 初始化 PM2 并加载配置 一旦完成了前面几步的操作之后就可以正式启用 PM2 来接管整个流程了。先让 PM2 加载之前编辑好的配置文件,再将其保存到开机自启列表里以便于长期维护: ```bash pm2 start ecosystem.config.js --env production pm2 save pm2 startup systemd ``` 最后一条指令的作用是在不同的操作系统平台上注册 PM2 成为系统级守护进程的一部分,保证即使主机意外断电或者重新启动也能继续维持业务连续性。 #### 日常运维注意事项 定期查看由 PM2 收集起来的各种监控指标,及时响应异常情况报告。另外也要记得适时清理过期无用的日志条目以免占据过多磁盘空间。同时鼓励开发团队积极采纳 CI/CD 流程自动化方案进一步简化迭代更新过程中的重复劳动环节[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水痕01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值