ddns-go部署ubuntu1804
1.二进制部署
1.虚拟机部署
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.一键脚本
#**********************************************************************************************
#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找到最新版源码下载。
wget https://github.com/jeessy2/ddns-go/archive/refs/tags/v5.6.6.tar.gz
2.安装go和git,这里可以不用安装git,因为git的目的就是获取版本,不编译版本也是可以使用的,因此把版本变量可以注释掉就行。
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+端口号进行配置