Python и PHP являются интерпретируемыми языками, что означает, что их необходимо запускать через программу, называемую интерпретатором (для PHP это /usr/bin/php
и для Python /usr/bin/python
), которая принимает исходный код (ваш * 1003) * или .py
файл) и интерпретирует его (переводит исходный код в машинный код, понятный компьютеру во время работы). Поэтому всем, кто хочет запустить вашу программу, нужны:
- ваша программа (исходный код
.py
файлы) - любые библиотеки, которые вы использовали
- интерпретатор
Golang не так, это скомпилированный язык (например, C или C ++). В случае скомпилированных языков у вас есть программа под названием compiler, которая берет исходный код (ваш файл .go
) и создает (компилирует) двоичный файл, непосредственно понятный любому компьютеру того же класса (с таким же или совместимым процессором, ОС и т. Д. c). .) без необходимости какого-либо интерпретатора или компилятора. В Golang для большинства случаев все используемые вами библиотеки также скомпилированы в этот двоичный файл, что делает его очень удобным и легким для пользователей.
В Golang вместо использования команды go run
, которая является ярлыком для скомпилировать и выполнить один раз. Вы хотите завершить sh кодирование, затем скомпилировать программу с помощью команды go build
в исполняемую форму (для Windows это файл .exe
и для Linux, который будет двоичным - исполняемый файл без расширения), а затем выполнить это из вашего служебного файла.
Предположим, что ваш файл кода server.go
:
go build -o server server.go
скомпилирует ваш исходный код и создаст исполняемый файл с именем server (мы принудительно установили команду go build
назвать его server
, добавив -o server
) - Вы можете запускать
./server
столько раз, сколько хотите. - Если вам нужно обновить код, то вам также необходимо повторно запустите
go build -o server server.go
, и это сгенерирует обновленный двоичный файл. Это немного отличается от PHP или Python (так что будьте осторожны с этим).
Затем вы просто обновляете свой служебный файл (см. go
совсем не нужно):
[Service]
ExecStart=/path/to/server
[Install]
Компиляция кода из служебного файла не очень хорошая идея, так как для этого требуется go, установленный на машине, на которой запущена программа. Также в Golang программы часто извлекают библиотеки из Github, и если кто-то изменяет библиотеку, чтобы ваша программа больше не компилировалась, служба не запускается.