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

问题描述 投票:0回答:2

这是php的服务文件,效果很好

[Unit]

[Service]
ExecStart=/usr/bin/env php /path/to/server.php

[Install]

此为python

[[Unit]

[Service]
ExecStart=/usr/bin/python3 /path/to/server.py

[Install]

当我为Golang尝试使用时,它不起作用,请问什么? g?

[Unit]

[Service]
ExecStart=/usr/bin/go /path/to/server.go
Environment=GOPATH="/home/test/go"

[Install]
go service daemon
2个回答
0
投票

[尝试了whereis go的每个输出后,就可以了这是Golang的conf文件:

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

0
投票

Python和PHP是解释性语言,这意味着它们需要通过称为解释器的程序运行,该程序获取源代码(您的.php.py文件)并对其进行解释(将源代码转换为计算机代码,计算机在运行时可以理解) 。因此,任何想要运行您的程序的人都需要:

  1. 您的程序(源代码.py文件)
  2. 您使用的任何库
  3. 口译员

Golang不是那样的,它是编译语言(例如C或C ++)。对于已编译的语言,您有一个名为compiler的程序,该程序将获取源代码(您的.go文件)并生成(编译)计算机直接理解的二进制文件,该文件将在该类的任何计算机(具有相同或兼容的CPU)上运行,操作系统等),而无需任何解释器或编译器。在大多数情况下,在Go中,您使用的所有库也会被编译成该二进制文件。

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

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

  1. [go build -o server server.go将编译您的源代码并生成称为服务器的可执行文件(我们通过添加go build强制server命令将其命名为-o server)]
  2. 您可以根据需要运行./server多次。
  3. 如果需要更新代码,则还需要重新运行go build -o server server.go,这将生成更新的二进制文件。

然后您只需更新服务文件(完全不需要go:]

[Service]
ExecStart=/path/to/server

[Install]

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

© www.soinside.com 2019 - 2024. All rights reserved.