ddns-go部署在linux虚拟机

ddns-go部署ubuntu1804

1.二进制部署

1.虚拟机部署

bash 复制代码
1.下载linux的x86二进制包
wget https://github.com/jeessy2/ddns-go/releases/download/v5.6.3/ddns-go_5.6.3_linux_x86_64.tar.gz

2.解压
tar -xzf ddns-go_5.6.3_linux_x86_64.tar.gz

3.拷贝执行文件到PATH下,实现全局命令,也可以创建软连接
cp ddns-go /usr/local/bin/  #或者ln -s ddns-go /usr/local/bin/

4.创建systemd文件,设置开机启动,方便管理,也可以一直接在rc.local中添加开机启动项。
vim /lib/systemd/system/ddns-go.service
[Unit]
Description=ddns-go service
After=network.target

[Service] 
Type=simple
ExecStart=/usr/local/bin/ddns-go start
ExecStop=/usr/local/bin/ddns-go stop

[Install]
WantedBy=multi-user.target

5.让systemd文件生效
systemctl daemon-reload

6.启动ddns-go
systemctl start ddns-go

7.设置开机自启
systemctl enable ddns-go

8.查看运行状态
systemctl status ddns-go.service

9.通过宿主机访问浏览器页面进行配置(如果是gui的安装可以直接浏览器访问127.0.0.1:9876)

2.宿主机配置通过宿主机进行管理虚拟机ip:port

4.一键脚本

bash 复制代码
#**********************************************************************************************
#Author:        wwzzone
#QQ:            896517050
#Date:          2023-10-22
#FileName:      b.sh
#URL:                       
#Description:   The test script
#Copyright (C):2023 All rights reserved
#*********************************************************************************************

wget https://github.com/jeessy2/ddns-go/releases/download/v5.6.3/ddns-go_5.6.3_linux_x86_64.tar.gz
tar -xzf ddns-go_5.6.3_linux_x86_64.tar.gz
cp ddns-go /usr/local/bin/

cat > /lib/systemd/system/ddns-go.service <<eof
[Unit]
Description=ddns-go service
After=network.target

[Service] 
Type=simple
ExecStart=/usr/local/bin/ddns-go start
ExecStop=/usr/local/bin/ddns-go stop

[Install]
WantedBy=multi-user.target
eof

systemctl daemon-reload && systemctl enable --now ddns-go

echo "ddns-go deployed successfully!"

2.源码编译

1.下载源码包,这是最新稳定版,因为会变更,可以直接访问ddns-go找到最新版源码下载。

bash 复制代码
wget https://github.com/jeessy2/ddns-go/archive/refs/tags/v5.6.6.tar.gz

2.安装go和git,这里可以不用安装git,因为git的目的就是获取版本,不编译版本也是可以使用的,因此把版本变量可以注释掉就行。

bash 复制代码
1.安装编译依赖包
[root@centos7:~]#yum install git go 
#git可以不用安装,不安装的时候就需要注释掉版本变量,但是go必须安装。

2.解压源码包并进入到ddns-go目录
[root@centos7:~]#tar -xf v5.6.6.tar.gz
[root@centos7:~]cd ddns-go-5.6.6

3.查看Makefile文件
[root@centos7:~/ddns-go-5.6.6]#
cat Makefile 
.PHONY: build clean test test-race   #Makefile 中以 PHONY 关键字定义的部分是伪目标,不是真正的文件名,只是标记了一些任务名称,执行这些任务时并不会在文件系统中创建对应的文件,而是执行 Makefile 中对应的命令,定义make后面跟的命令,根据命令执行相应的命令,例如,build、clean、test、test-race 这些目标是用于构建、清理和测试代码的任务名称。执行 make build 将运行 build 目标下的命令,而 make clean 将执行清理命令。这些任务名称定义了要执行的一系列命令

# 如果找不到 tag 则使用 HEAD commit
#VERSION=$(shell git describe --tags `git rev-list --tags --max-count=1` 2>/dev/null || git rev-parse --short HEAD)    
#编译安装用不到就注释了。
BUILD_TIME=$(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
BIN=ddns-go
DIR_SRC=.
DOCKER_ENV=DOCKER_BUILDKIT=1
DOCKER=$(DOCKER_ENV) docker

GO_ENV=CGO_ENABLED=0
GO_FLAGS=-ldflags="-X main.version=$(VERSION) -X 'main.buildTime=$(BUILD_TIME)' -extldflags -static -s -w" -trimpath
GO=$(GO_ENV) $(shell which go)
GOROOT=$(shell `which go` env GOROOT)
GOPATH=$(shell `which go` env GOPATH)

build: $(DIR_SRC)/main.go
	@$(GO) build $(GO_FLAGS) -o $(BIN) $(DIR_SRC)

build_docker_image:
	@$(DOCKER) build -f ./Dockerfile -t ddns-go:$(VERSION) .

test:
	@$(GO) test ./...

test-race:
	@$(GO) test -race ./...

# clean all build result
clean:
	@$(GO) clean ./...
	@rm -f $(BIN)
	@rm -rf ./dist/*
#@符号的作用是把命令不显示出来,因为默认是shell命令会输出到屏幕上。

4.通过make install编译安装,注意需要能访问github才行,否则就编译失败。
[root@centos7:~/ddns-go-5.6.6]#
make build
go: downloading github.com/kardianos/service v1.2.2
go: downloading gopkg.in/yaml.v3 v3.0.1
go: downloading github.com/wagslane/go-password-validator v0.3.0


5.复制文件到/usr/local/bin/,或者直接移动到次目录下
[root@centos7:~/ddns-go-5.6.6]#
mv ddns-go /usr/local/bin/

6.启动并运行
[root@centos7:~]#
ddns-go 
2023/11/24 17:21:25 可使用 sudo ./ddns-go -s install 安装服务运行
2023/11/24 17:21:25 监听 :9876 ...
请手动打开浏览器并访问 http://127.0.0.1:9876 进行配置
#注意此时是前台运行的,可以通过设置为后台运行,开机自启

7.编写service文件
[root@centos7:~]#cat > /lib/systemd/system/ddns-go.service <<eof
[Unit]
Description=ddns-go service
After=network.target

[Service] 
Type=simple
ExecStart=/usr/local/bin/ddns-go start
ExecStop=/usr/local/bin/ddns-go stop

[Install]
WantedBy=multi-user.target
eof

8.设置开机重启并查看状态
[root@centos7:~]#systemctl daemon-reload && systemctl enable --now ddns-go

[root@centos7:~]#
systemctl status ddns-go
● ddns-go.service - ddns-go service
   Loaded: loaded (/usr/lib/systemd/system/ddns-go.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2023-11-24 17:25:34 CST; 32s ago
 Main PID: 13062 (ddns-go)
   CGroup: /system.slice/ddns-go.service
           └─13062 /usr/local/bin/ddns-go start

[root@centos7:~]#
ss -ntlp |grep ddns-go
LISTEN     0      128       [::]:9876                  [::]:*                   users:(("ddns-go",pid=13062,fd=4))

9.可以在宿主机直接访问虚拟机的IP+端口号进行配置
相关推荐
Leo.yuan4 分钟前
数据隐私是什么?如何做好数据隐私规范?
大数据·网络·数据库·人工智能·信息可视化
爱吃萝卜的猪13 分钟前
linux内核编译问题记录
linux·服务器
企业智能研究14 分钟前
企业如何高效构建BI团队,解锁数据价值新高地?
大数据·数据库·人工智能
Zack No Bug29 分钟前
使用VirtualBox安装ubuntu22.04虚拟机
linux·运维
Sayai1 小时前
dbeaver 查询clickhouse,数据库时间差了8小时
数据库·clickhouse·oracle
不再幻想,脚踏实地1 小时前
Linux简单的操作
java·linux·运维·服务器
dayceng1 小时前
一则复杂 SQL 改写后有感
java·数据库·mysql
Mylvzi1 小时前
Linux 杀进程指令详解:`kill -9 PID` 和 `kill -15 PID` 有什么区别?
linux·运维·服务器
海风极客1 小时前
《Go小技巧&易错点100例》第三十五篇
开发语言·后端·golang
小声读源码1 小时前
【技巧】win10和ubuntu互相挂在共享文件夹
linux·运维·ubuntu