【golang】单机部署systemctl方案

这篇具有很好参考价值的文章主要介绍了【golang】单机部署systemctl方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概要

本文简单记录go编译后的程序,单机部署systemctl方案,开机启动等问题。

新增service文件

在/etc/systemd/system/目录下新增 testapi.service

[Unit]
Description=myGoApp

[Service]
User=root
Group=root
Type=simple
WorkingDirectory=/home/www/projectName/
ExecStart=/home/www/projectName/testapi serve
Restart=on-failure
RestartSec=20s
LimitNOFILE=infinity


[Install]
WantedBy=multi-user.target

提示:/home/www/projectName/testapi serve,根据具体服务情况来填,我这里需要传递serve参数

参数Restart 可选值还有:always。还有一个参数ExceStartPre,大家可以自行查阅相关信息。

配置文件添加完后,常用的命令有:

systemctl daemon-reload // 重载配置
systemctl enable testapi  //开机启动
systemctl start testapi  //启动服务
systemctl stop testapi  //停止服务

编辑testapi.service文件以后:Warning: vrapi.service changed on disk. Run 'systemctl daemon-reload' to reload units.

技术细节

如果发现服务无法启动,可以查看日志

tail -f -n 100 /var/log/messages

Jan 12 16:01:32 localhost systemd: Started myGoApp.
Jan 12 16:01:32 localhost systemd: Starting myGoApp...
Jan 12 16:01:32 localhost vrapi: 2024/01/12 16:01:32 config.Setup, fail to parse file conf/app.ini: open conf/app.ini: no such file or directory
Jan 12 16:01:32 localhost systemd: testapi.service: main process exited, code=exited, status=1/FAILURE
Jan 12 16:01:32 localhost systemd: Unit testapi.service entered failed state.
Jan 12 16:01:32 localhost systemd: testapi.service failed.
Jan 12 16:01:33 localhost systemd: testapi.service holdoff time over, scheduling restart[Unit]

提示:我这里的错误是因为之前没有指定:WorkingDirectory,导致go程序的配置文件无法加载。

小结

这就是一个简单的单机部署开机启动、报错重启等方案了。此方案还有很多不足,如无法实现优雅的重启等,只是简单粗暴的保持了服务的可用。欢迎留言指正,共同学习。

参考

golang是如何部署到服务器的文章来源地址https://www.toymoban.com/news/detail-805925.html

到了这里,关于【golang】单机部署systemctl方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • golang 连接 oracle 数据库 增删改查

     1,golang 连接 oracle 数据库  2,增删改查

    2024年02月09日
    浏览(51)
  • Docker部署golang项目

    前言:最近开发了钉钉机器人的第二版,第二版主要开发的是企业内部机器人,只有企业内的成员才可以使用。 不同于第一版,是自定义机器人,所有人可能使用。企业内部机器人的权限比自定义机器人的权限要多很多,所以功能也会多很多,后续的开发肯定是基于企业内部

    2024年02月11日
    浏览(35)
  • Docker部署Golang服务

    不管是开发还是生产环境,通过 docker 方式部署服务都是一种不错的选择,能够解决不同开发环境一致性的问题。 本文以项目:https://github.com/johncxf/go-api 为例。 Dockerfile 构建 Go 运用环境 在项目根目录下添加 Dockerfile 文件: 如果需要缩小镜像大小,则可以用以下方式进行构建

    2024年01月22日
    浏览(42)
  • 部署Golang服务

    对于简单的项目,通常我们只需要将编译后的二进制文件拷贝到服务器上,然后设置为后台守护进程运行即可。 本文以项目:https://github.com/johncxf/go_practice 为例 编译 编译为 linux 系统可执行的二进制文件,二进制文件为 ./bin/go-api ,可自行修改 可以使用 -ldflags \\\"-s -w\\\" 参数去掉

    2024年01月22日
    浏览(37)
  • golang web学习随便记4-内存、文件、数据库

    我们来开始学习如何存储数据。书中有一点不错,就是并不是一上来就告诉你存储数据使用数据库,因为不同的数据存储适合不同的手段。 先来看在内存中存储数据:下面的例子用结构体方式在内存存放数据,然后利用两个map来表示“索引”,键值对中的值是指向内存中结构

    2024年02月06日
    浏览(248)
  • golang的docker 简单部署

    基础的环境 最开始搭建的想法 我就是想单独的创建三个docker,然后链接使用,就是go可以链接mysql和redis 开始搭建 1 首先创建一个docker的网络,将这三个容器全部放入这个网段中,他们才可以通过内网访问,可能会有人问,为什么不使用外网,这个原因有很多,就不一一说了

    2024年02月21日
    浏览(33)
  • Golang 程序漏洞检测利器 govulncheck(二):漏洞数据库详解

    上一篇文章详细介绍了 Golang 程序漏洞扫描工具 govulncheck 的使用方法,govulncheck 强大功能的背后,离不开 Go 漏洞数据库(Go vulnerability database)的支持,接下来详细讲解下 Go 漏洞数据库相关的知识。 在当今数字化的世界中,软件安全是至关重要的。随着 Golang 在开发领域的日

    2024年02月10日
    浏览(35)
  • golang mysql

    驱动 源代码 实现 --------------end

    2024年02月15日
    浏览(25)
  • 在CSDN学Golang场景化解决方案(EFK分布式日志系统方案)

    在 Golang EFK 分布式日志系统方案中,ElasticSearch 是一个分布式搜索引擎和数据存储库,它可以用于存储和搜索大量的日志数据。以下是 ElasticSearch 分布式集群部署的步骤: 下载 ElasticSearch:从 ElasticSearch 官网上下载最新版本的 ElasticSearch。 解压缩并安装 ElasticSearch:将下载下来

    2024年02月14日
    浏览(44)
  • 在CSDN学Golang场景化解决方案(微服务架构设计)

    在Golang微服务架构设计中,聚合器(Aggregator)微服务设计模式是一种常见的应用程序体系结构模式。该模式旨在简化客户端与后端微服务之间的通信,并支持更高级别的操作,例如聚合多个后端服务的数据。以下是一个简单的示例: 首先定义一个聚合器微服务: 在main函数中

    2024年02月14日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包