为了账号安全,请及时绑定邮箱和手机立即绑定

适用于 Golang 应用程序的类似 PM2 的流程管理解决方案?

适用于 Golang 应用程序的类似 PM2 的流程管理解决方案?

Go
饮歌长啸 2023-07-26 15:35:06
Go 有类似于 NodeJS PM2 的进程管理器吗?PM2.5的基本特点:无限期地在后台运行应用程序,例如服务器等待请求。重新启动后重新启动应用程序。编者注:PM2 提供了一种在后台永远运行 NodeJS 应用程序的简单方法,例如用于生产服务器。当然,您可以使用 Linux 操作系统,使用不特定于任何特定编程语言的工具来完成此操作,这些答案很有帮助。由于 Go 可以创建可执行文件,因此您实际上不需要针对此问题的 Go 语言特定解决方案。
查看完整描述

1 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

开发环境

对于开发,您可能需要进程管理器来监视文件更改并实时重新加载服务器二进制文件。

我习惯使用Godegansta 的 杜松子酒来完成 Web 服务器/API 服务器开发的此类工作。还有新鲜的、条件反射的,或许还有 其他一些。


生产环境

我正在生产环境中使用 systemd 来管理 Linux 上的 Golang 应用程序进程。

定义单位

我的单元文件如下所示:

[Unit]


[Install]

WantedBy=multi-user.target


[Service]

ExecStart=/usr/local/bin/<MY_GO_APP>

WorkingDirectory=/home/user/<MY_GO_APP_HOME_DIR>

User=<MY_GO_APP_USER>

Restart=always

RestartSec=5

StandardOutput=syslog

StandardError=syslog

SyslogIdentifier=%n

创建此文件/etc/systemd/system/my_app.service,然后运行:


systemctl start my_app.service

会自动启动该服务。根据配置,如果进程停止,systemd 将始终重新启动您的进程。


日常操作

要在机器启动时使其始终打开:


systemctl enable my_app.service

start如果您在第一个或之后更改单元文件enable,则需要运行:


systemctl daemon-reload

要查看进程的状态,请运行:


systemctl status my_app.service

要查看进程的 STDOUT,请运行:


journalctl -f -u my_app.service


查看完整回答
反对 回复 2023-07-26
  • 1 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信