如何在启动时启动我的网络应用程序?开放BSD

如何在启动时启动我的网络应用程序?开放BSD

我刚刚将一个 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 在启动时启动吗?

相关内容