Rawley Fowler Asked: 2022-02-07 20:29:12 +0800 CST2022-02-07 20:29:12 +0800 CST 2022-02-07 20:29:12 +0800 CST 如何在启动时启动我的 Web 应用程序?OpenBSD 772 我刚刚将一个 Web 应用程序从 NodeJS 迁移到 Go,我无法让它在启动时运行。以前使用我的 Node 应用程序,我会使用pm2来处理启动应用程序。但是,我找不到使用 Go 执行此操作的好方法。 我已经考虑过使用自己的服务,rc.d但我真的找不到任何有用的东西。是否有捷径可寻?如果需要,我可以将源代码编译为二进制文件。 目前我只是在 TTY 中运行它,但我真的希望它成为一个守护进程。 编辑:澄清一下,我正在使用 NGiNX 反向代理 Go 应用程序。 openbsd 2 个回答 Voted Best Answer Zé Loff 2022-02-09T03:12:00+08:002022-02-09T03:12:00+08:00 如果您不想使用rc.d基础设施(您应该),您可以添加任何适合的内容,/etc/rc.local但请记住所有内容都运行为root,因此您可能希望使用su以其他用户身份运行您的应用程序(并且同时你在它,检查你是否想在chroot某个地方运行它)。 如果你想走这rc.d条路,你可能想先浏览一下 and 的手册页,rc.d而rc.subrat 的模板/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 SKull 2022-02-08T07:47:44+08:002022-02-08T07:47:44+08:00 我不是真正的 OpenBSD 人,但您是否只需要确保 httpd 在启动时启动?
如果您不想使用
rc.d
基础设施(您应该),您可以添加任何适合的内容,/etc/rc.local
但请记住所有内容都运行为root
,因此您可能希望使用su
以其他用户身份运行您的应用程序(并且同时你在它,检查你是否想在chroot
某个地方运行它)。如果你想走这
rc.d
条路,你可能想先浏览一下 and 的手册页,rc.d
而rc.subr
at 的模板/usr/ports/infrastructure/templates/rc.template
也可能有很大的帮助。另一个选择是找到一个已经移植的 Go Web 应用程序,安装它并查看它是如何运行的。例如 gitea 作为编译后的二进制文件安装,然后有一个非常简单的/etc/rc.d/gitea
脚本:我不是真正的 OpenBSD 人,但您是否只需要确保 httpd 在启动时启动?