Golang 应用程序的类似 PM2 的进程管理解决方案?
PM2-like process management solution for Golang applications?
Go 有类似 PM2 for NodeJS 的进程管理器吗?
PM2的基本特点:
- 运行 应用程序无限期地在后台运行,例如等待请求的服务器。
- 重新启动后重新启动应用程序。
编者注:PM2 提供了一种简单的方法 运行 NodeJS 应用程序永远在后台运行,例如用于生产服务器。当然,您可以使用 Linux 操作系统,使用不特定于任何特定编程语言的工具来执行此操作,这些答案很有帮助。由于 Go 可以创建可执行文件,因此您真的不需要 Go 语言特定的解决方案来解决这个问题。
开发环境
对于开发,您可能需要进程管理器来监视文件更改并实时重新加载您的服务器二进制文件。
我习惯了Godegansta's gin for such job for web server / api server development. There is also fresh, reflex and perhaps 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
如果您在第一个 start
或 enable
之后更改单元文件,则需要 运行:
systemctl daemon-reload
要查看进程的状态,运行:
systemctl status my_app.service
要查看进程的 STDOUT,运行:
journalctl -f -u my_app.service
如需进一步帮助,请阅读 manual page。
Go 有类似 PM2 for NodeJS 的进程管理器吗?
PM2的基本特点:
- 运行 应用程序无限期地在后台运行,例如等待请求的服务器。
- 重新启动后重新启动应用程序。
编者注:PM2 提供了一种简单的方法 运行 NodeJS 应用程序永远在后台运行,例如用于生产服务器。当然,您可以使用 Linux 操作系统,使用不特定于任何特定编程语言的工具来执行此操作,这些答案很有帮助。由于 Go 可以创建可执行文件,因此您真的不需要 Go 语言特定的解决方案来解决这个问题。
开发环境
对于开发,您可能需要进程管理器来监视文件更改并实时重新加载您的服务器二进制文件。
我习惯了Godegansta's gin for such job for web server / api server development. There is also fresh, reflex and perhaps 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
如果您在第一个 start
或 enable
之后更改单元文件,则需要 运行:
systemctl daemon-reload
要查看进程的状态,运行:
systemctl status my_app.service
要查看进程的 STDOUT,运行:
journalctl -f -u my_app.service
如需进一步帮助,请阅读 manual page。