这是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]
[尝试了whereis go
的每个输出后,就可以了这是Golang的conf文件:
ExecStart=/usr/local/go/bin/go run /home/testbed/Desktop/test/test.go
Python和PHP是解释性语言,这意味着它们需要通过称为解释器的程序运行,该程序获取源代码(您的.php
或.py
文件)并对其进行解释(将源代码转换为计算机代码,计算机在运行时可以理解) 。因此,任何想要运行您的程序的人都需要:
.py
文件)Golang不是那样的,它是编译语言(例如C或C ++)。对于已编译的语言,您有一个名为compiler
的程序,该程序将获取源代码(您的.go
文件)并生成(编译)计算机直接理解的二进制文件,该文件将在该类的任何计算机(具有相同或兼容的CPU)上运行,操作系统等),而无需任何解释器或编译器。在大多数情况下,在Go中,您使用的所有库也会被编译成该二进制文件。
在Golang中,而不是使用go run
命令,该命令是编译和执行一次的快捷方式。您想要完成编码,然后使用go build
命令将程序编译为可执行形式(在Windows上为Linux上的.exe
文件,该文件将是二进制文件-不带扩展名的可执行文件),然后从服务文件中执行该程序。
假设您的代码文件是server.go
:
go build -o server server.go
将编译您的源代码并生成称为服务器的可执行文件(我们通过添加go build
强制server
命令将其命名为-o server
)]./server
多次。go build -o server server.go
,这将生成更新的二进制文件。然后您只需更新服务文件(完全不需要go
:]
[Service]
ExecStart=/path/to/server
[Install]
从服务文件编译代码不是一个好主意,因为它需要安装在运行程序的计算机上。同样在Golang中,程序经常从Github中提取库,并且如果有人更改了库,则您的程序不再编译,服务将无法运行。