我刚刚将一个 Web 应用程序从 NodeJS 迁移到 Go,但在启动时遇到问题。以前使用我的 Node 应用程序时,我会使用颗粒物处理启动应用程序。但是我找不到用 Go 来做到这一点的好方法。
我已经考虑过提供自己的服务,rc.d
但我找不到任何有帮助的东西。是否有捷径可寻?如果需要,我可以将源代码编译为二进制文件。
目前我只是在 TTY 中运行它,但我真的希望它成为一个守护进程。
编辑:澄清一下,我使用 NGiNX 来反向代理 Go 应用程序。
答案1
如果您不想使用基础rc.d
设施(您应该),您可以添加任何适当的内容/etc/rc.local
,但请记住,所有内容都以 身份运行root
,因此您可能希望以su
另一个用户身份运行您的应用程序(并且同时你已经完成了,检查你是否想chroot
在某个地方运行它)。
如果您想走这rc.d
条路,您可能需要先浏览 和 的手册页,rc.d
并且rc.subr
的模板/usr/ports/infrastructure/templates/rc.template
也可能会有很大帮助。另一种选择是找到一个已经移植的 Go Web 应用程序,安装它并查看它是如何运行的。例如 gitea 作为编译的二进制文件安装,然后有一个非常简单的/etc/rc.d/gitea
脚本:
#!/bin/ksh
#
# $OpenBSD: gitea.rc,v 1.6 2021/01/17 21:07:41 pvk Exp $
daemon="/usr/local/sbin/gitea"
daemon_user="_gitea"
. /etc/rc.d/rc.subr
rc_bg=YES
rc_reload=NO
rc_cmd $1
答案2
我并不是真正的 OpenBSD 爱好者,但是您不需要确保 httpd 在启动时启动吗?