如何在 ubuntu 服务器中将 golang restful api 作为服务运行

如何在 ubuntu 服务器中将 golang restful api 作为服务运行

我需要在我的 ubuntu 服务器中运行使用 gin 框架和 mongodb 作为服务的 golang restful 服务器。该怎么做?(每次我运行 go 脚本时,我也需要这个 gvm 使用 go1.4)

答案1

您可以构建 go 二进制文件并创建 systemd 服务以将其作为服务运行。

sudo nano /lib/systemd/system/go_app.service

使用以下示例作为 .service 配置。

[Unit]
Description=My example go application
[Service]
Type=simple
Restart=always
RestartSec=5s
ExecStart=/opt/go_app
[Install]
WantedBy=multi-user.target

来源:https://www.atpeaz.com/running-go-app-as-a-service-on-ubuntu/

答案2

  • 您可以通过运行(或为您的应用程序运行类似的命令)为应用程序创建二进制文件go build。构建应该针对 Linux(export GOOS=Linux)。

  • 然后,您将构建版本(二进制文件)复制到服务器的适当位置(例如,/var/www/webapp/opt/webapp),并确保您拥有root二进制文件的所有者(或者您可以webappuser为应用程序设置专用用户)并为二进制文件提供可执行权限(chmod +x /var/www/webapp

  • 然后你有两个选择 - 使用进程管理器(例如supervisor)或使用 Ubuntu 的原生程序systemd来编写服务申请文件

  1. 在 ubuntu 上安装 Supervisor 很简单,只需按 即可apt-get install supervisor。安装完成后,你可以为你的应用编写一个管理脚本,如下所示:
[program:webapp]
command=/var/www/webapp
autostart=true
autorestart=true
stderr_logfile=/var/log/webapp.err.log
stdout_logfile=/var/log/webapp.out.log

您需要按照webapp.conf中的方式编写此文件。 写入此文件后,您需要通过运行和 来/etc/supervisor/conf.d/webapp.conf重新加载主管。 然后您的应用程序将通过 Supervisor 开始作为服务运行。supervisorctl rereadsupervisorctl update

  1. 另一个选项是使用 的systemd本机功能。您可以简单地在以下位置写入文件/lib/systemd/system/webapp.service
[Unit]
Description=Golang Web application
[Service]
Type=simple
Restart=always
RestartSec=5s
ExecStart=/var/www/webapp
[Install]
WantedBy=multi-user.target

写好之后,运行systemctl daemon-reload;systemctl start webapp.servicesystemctl enable webapp.service。然后您的应用程序将通过 Systemd 开始作为服务运行。

我通常选择通过主管编写服务文件,因为它允许您仅控制您部署的应用程序。此外,您可能已经注意到我在示例配置中写了一些关于日志文件的内容。这基本上允许我控制日志位置以及应用程序日志的写入方式(即错误在哪里以及应用程序日志在哪里)。这也有助于将特定文件流式传输到外部日志管理服务(例如 AWS Cloudwatch)

相关内容