首页 > 系统相关 >linux中systemctl管理go服务 (gin)git部署

linux中systemctl管理go服务 (gin)git部署

时间:2023-04-14 15:35:31浏览次数:80  
标签:git gotest systemctl linux go main data

go安装

下载 https://golang.google.cn/dl/
解压至指定目录,一般到/usr/local
sudo tar -C /usr/local -xzf  go**.linux-amd64.tar.gz
设置环境变量
# 修改~/.bashrc 文件
$ sudo gedit ~/.bashrc 
# 在该文件最后一行插入
$ export PATH=$PATH:/usr/local/go/bin
$ source ~/.bashrc
$ go version 
go mod 设置
# 控制台中输入一下命令
$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
# 查看go所有相关配置
$ go env

 

git安装

sudo yum install git

 

自定义 systemctl 管理服务

systemd是靠管理unit的方式来控制开机服务,开机级别等功能。 在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等,这里介绍关于service后缀的文件。因为systemd在开机要想执行自启动,都是通过这些*.service 的unit控制的,服务又分为系统服务(system)和用户服务(user)

  • 系统服务:开机不登陆就能运行的程序(常用于开机自启)。
  • 用户服务:需要登陆以后才能运行的程序。

以go服务gotest服务为例

在 /lib/systemd/system 目录下创建 gotest.service 文件,内容如下:

[Unit]
Description=gotest
After=network.target

[Service]
Type=simple
ExecStart=/data/gotest/gotest_run.sh
ExecStop=/bin/kill -15 $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

其中/data/gotest及go服务部署的目录, gotest_run.sh内容如下:

#!/bin/sh

cd /data/gotest
./main

  

执行systemctl daemon-reload命令使得新加的服务生效

shell + git 部署go

git clone  http://git.******/gotest.git go 代码到指定目录   如:/data/code/

创建服务目录与code分离 mkdir  /data/gotest  服务依赖的相关配置文件也放于此目录下

创建shell 脚本 gotest_update.sh  内容如下:

cd /data/code/gotest
git reset --hard
git pull
go mod tidy

echo '2. Building ...'

#删除旧的编译生成文件
if [ -f main ]; then
        rm main
fi

go build main.go

# 检查是否编译成功
if [ ! -f main ]; then
        echo "ERR: build error, return now"
else
        # 编译成功了,这里开始备份当前正在运行的程序文件,一定要备份/data/gotest/main这个文件,而不是 /data/code/gotest/main文件。
        echo "3. Backup old version"
        if [ -f /data/gotest/main ]; then
                mv /data/gotest/main /data/gotest/main.`date "+%Y-%m-%d_%H:%M:%S"`
        fi
        mv main /data/gotest/main

        echo "4. Restart service"
        systemctl restart gotest
        echo "Service status is :"
        systemctl status gotest
        echo ""
        echo "Restart OK, visit http://127.0.0.1:8000/ping for test"
fi

  

shell中  首次 systemctl start gotest  非restart

 

标签:git,gotest,systemctl,linux,go,main,data
From: https://www.cnblogs.com/yimingwang/p/17318432.html

相关文章

  • Linux内核进程管理六种状态
    进程概念1)正在执行的程序2)正在计算机上执行的程序实例3)能分配处理器并由处理器执行的实体进程的两个基本元素是程序代码和代码相关联的数据集。Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。这就可以引入‘进......
  • Linux内核进程管理实时调度与SMP
    一,实时调度器类实时调度类有两类进程:循环进程SCHED_RR:循环进程有时间片,随着进程的运行时间会减少。当时间片用完时又将其置为初值,并将进程置于队列末尾。先进先出SCHED_FIFO:没有时间片调度,运行后可执行任意长时间直到自己放弃CPU。实际上两类进程在相同优先级队列上都是先进先出......
  • Linux内核进程管理原理详解(代码演示)
    **前言:**Linux内核里大部分都是C语言。建议先看《Linux内核设计与实现(LinuxKernelDevelopment)》,RobertLove,也就是LKD。Linux是一种动态系统,能够适应不断变化的计算需求。Linux计算需求的表现是以进程的通用抽象为中心的。进程可以是短期的(从命令行执行的一个命令),也可以是......
  • git中 commit 和 pull 的先后顺序问题会产生多余的merge记录
    commit和pull的先后顺序问题最近提交代码,发现一个问题。自己很清楚的记得本次的提交是没有进行合并的。奇怪的死gitlab中的history历史中显示了我对本次进行了Merge合并操作。并且Merge合并操作中显示了很多不是本次对代码的修改。这就很明显了,git自动生成的merge操......
  • 如何去掉Linux vim文本中的^M
    正常情况如果vim只是发现行尾有^M,那么直接使用dos2unix就可以了dos2unixyourfile.txt但是有些文本只有^M没有换行。这是因为一般换行都是"0x0d0x0a",0x0d是回车键,0x0a是换行。只有^M没有换行,是因为只有0x0d没有0x0a,这时可以用sed替换sed-i"s/\x0D/\x0A/g"yourfile.txt......
  • Linux上面安装AWVS
    安装先决条件在Ubuntu安装sudoapt-getinstalllibxdamage1libgtk-3-0libasound2libnss3libxss1libx11-xcb1libxcb-dri3-0libgbm1libdrm2libxshmfence1libxmlsec1-openssl在SuseLinuxEnterpriseServer或OpenSUSELeap安装sudozypperinstalllibXdama......
  • 查看linux上的内存
    [superuser@vmbin]$free-htotalusedfreesharedbufferscachedMem:3.7G3.5G213M356K268M1.9G-/+buffers/cache:1.4G2.4GSwap:0B0B......
  • Linux系统之MobaXterm远程连接centos的GNOME桌面环境
    (Linux系统之MobaXterm远程连接centos的GNOME桌面环境)一、MobaXterm介绍1.MobaXterm简介MobaXterm是远程计算的终极工具箱,主要用于Windows的增强终端,带有X11服务器、选项卡式SSH客户端、网络工具等。2.MobaXterm功能特点内建Xserver,可远程运行X窗口程序内建SFTP......
  • Linux系统之使用yum安装Redis数据库
    (Linux系统之使用yum安装Redis数据库)一、redis介绍1.redis解释Redis(RemoteDictionaryServer),即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。2.redis特点1.性能极高–Redis能读的速度......
  • 基于imx8m plus开发板全体系开发教程4:Linux系统开发
    前言:i.MX8MPlus开发板是一款拥有4个Cortex-A53核心,运行频率1.8GHz;1个Cortex-M7核心,运行频率800MHz;此外还集成了一个2.3TOPS的NPU,大大加速机器学习推理。全文所使用的开发平台均为与NXP官方合作的FS-IMX8MPCA开发板(华清远见imx8mp开发板),支持Weston、ubuntu20.04、A......