为了账号安全,请及时绑定邮箱和手机立即绑定

如何为 Golang 程序配置服务守护程序文件

如何为 Golang 程序配置服务守护程序文件

Go
阿波罗的战车 2022-05-23 17:56:00
这是 php 的服务文件,它运行良好[Unit][Service]ExecStart=/usr/bin/env php /path/to/server.php[Install]这个是给python的[单元][Service]ExecStart=/usr/bin/python3 /path/to/server.py[Install]当我为 Golang 尝试这个时它不起作用,有什么问题?[Unit][Service]ExecStart=/usr/bin/go /path/to/server.goEnvironment=GOPATH="/home/test/go"[Install]
查看完整描述

2 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

在尝试whereis go 了 Golang 的 conf 文件的每一个输出之后,它就起作用了:

ExecStart=/usr/local/go/bin/go run /home/testbed/Desktop/test/test.go


查看完整回答
反对 回复 2022-05-23
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

Python 和 PHP 是解释型语言,这意味着它们需要通过名为解释器的程序运行(对于 PHP that's/usr/bin/php和对于 Python /usr/bin/python),它获取源代码(您的.php.py文件)并解释它(将源代码翻译成计算机在运行时可以理解的机器代码) . 因此,任何想要运行您的程序的人都需要:

  1. 你的程序(源代码.py文件)

  2. 您使用的任何库

  3. 口译员

Golang 不是那样的,它是编译语言(如 C 或 C++)。在编译语言的情况下,您有一个称为编译器的程序,它获取源代码(您的.go文件)并生成(编译)任何同类计算机(具有相同或兼容的 CPU、操作系统等)直接理解的二进制文件,而不需要任何解释器或编译器。在大多数情况下,在 Golang 中,您使用的所有库也都编译到该二进制文件中,这对用户来说非常方便和容易。

在 Golang 中,而不是使用go run命令,它是编译和执行一次的快捷方式。您想完成编码,然后使用go build命令将程序编译为可执行形式(在 Windows 上是.exe文件,在 Linux 上是二进制 - 没有扩展名的可执行文件),然后从服务文件中执行。

假设您的代码文件是server.go

  1. go build -o server server.go将编译您的源代码并生成名为 server 的可执行文件(我们强制命令通过添加go build来命名它)server-o server

  2. 您可以./server根据需要运行多次。

  3. 如果您需要更新代码,那么您还需要重新运行go build -o server server.go,这将生成更新的二进制文件。这与 PHP 或 Python 略有不同(因此请注意这一点)。

然后您只需更新您的服务文件(请参阅go根本不需要):

[Service]
    ExecStart=/path/to/server
    [Install]

从服务文件编译代码并不是一个好主意,因为它需要在运行程序的机器上安装 go。同样在 Golang 程序中,经常从 Github 中提取库,如果有人更改库,因此您的程序不再编译,服务将无法运行。


查看完整回答
反对 回复 2022-05-23
  • 2 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信