首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在ubuntu服务器中作为服务运行golang restful

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

Ask Ubuntu用户
提问于 2016-02-16 05:39:34
回答 1查看 1.3K关注 0票数 2

我需要运行在我的ubuntu server.how中使用gin框架和mongodb作为服务构建的golang服务器可以做到这一点吗?(每次运行go脚本时,我都需要这样做,gvm也使用go1.4)

EN

回答 1

Ask Ubuntu用户

发布于 2020-10-09 13:13:02

  • 可以通过运行go build (或应用程序的类似命令)为应用程序创建二进制文件。构建应该针对Linux (export GOOS=Linux)。
  • 然后将构建复制到服务器(二进制文件)到适当的位置(例如,/var/www/webapp/opt/webapp),并确保将root作为二进制文件的所有者(或者可以为应用程序设置专用的webappuser用户),并为二进制文件(chmod +x /var/www/webapp)提供可执行权限。
  • 然后有两个选项--要么使用流程管理器(如supervisor),要么使用Ubuntu的本机systemd为应用程序编写服务文件。
  1. 可以简单地将ubuntu安装为apt-get install supervisor。一旦安装好它,您就可以为应用程序编写一个管理脚本,如下所示:
代码语言:javascript
运行
复制
[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中编写这个文件。写入该文件后,您需要通过运行supervisorctl rereadsupervisorctl update来重新加载监控器。然后,您的应用程序将开始通过Supervisor作为服务运行。

  1. 另一种选择是使用systemd的S本地功能。您可以简单地在位置/lib/systemd/system/webapp.service中编写一个文件:
代码语言:javascript
运行
复制
[Unit]
Description=Golang Web application
[Service]
Type=simple
Restart=always
RestartSec=5s
ExecStart=/var/www/webapp
[Install]
WantedBy=multi-user.target

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

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

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/735183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档