gpt4 book ai didi

go - Golang 应用程序的类似 PM2 的进程管理解决方案?

转载 作者:数据小太阳 更新时间:2023-10-29 03:44:04 57 4
gpt4 key购买 nike

Go 是否有类似 PM2 for NodeJS 的进程管理器?

PM2的基本特征:

  • 无限期地在后台运行应用程序,例如等待请求的服务器。
  • 重启后重启应用。

编者注:PM2 提供了一种在后台永远运行 NodeJS 应用程序的简单方法,例如用于生产服务器。当然,您可以使用 Linux 操作系统,使用不特定于任何特定编程语言的工具来做到这一点,这些答案很有帮助。由于 Go 可以创建可执行文件,因此您实际上不需要 Go 语言特定的解决方案来解决这个问题。

最佳答案

开发环境

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

我习惯了Godegansta's gin对于 web 服务器/api 服务器开发这样的工作。还有fresh , reflex也许some others .


生产环境

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

定义单位

我的 Unit File看起来像这样:

[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

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

systemctl daemon-reload

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

systemctl status my_app.service

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

journalctl -f -u my_app.service

如需进一步帮助,请阅读 manual page .

关于go - Golang 应用程序的类似 PM2 的进程管理解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58022141/

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com