使用WinSW将CoreDNS托管到Windows系统服务

说明

  • 将一个简单的exe可执行文件,作为Windows服务启动,不需要登录用户
  • 以CoreDNS为例做个说明
    • CoreDNS通过Windows自带的sc命令创建服务,启动会失败
    • 启动CoreDNS是一个命令提示符窗口
    • 只有单一exe可执行文件和一个配置文件

CoreDNS

项目地址

https://github.com/coredns/coredns

下载地址

https://github.com/coredns/coredns/releases/download/v1.7.0/coredns_1.7.0_windows_amd64.tgz

创建工作目录

D:\Program Files\CoreDNS

创建配置文件

D:\Program Files\CoreDNS\Corefile

1
2
3
4
5
.:53 {
errors
forward . 114.114.114.114:53
cache 30
}

WinSW

项目地址

https://github.com/winsw/winsw

下载地址

https://github.com/winsw/winsw/releases

二进制文件

Windows7及之前的版本 下载 WinSW.NET2.exe

Windows8及之后的版本 下载 WinSW.NET4.exe

Windows10 下载 WinSW.NET461.exe

配置文件模板

sample-allOptions.xml

sample-minimal.xml

配置Windows服务

配置WinSW

拷贝winsw

将winsw可执行文件拷贝到CoreDNS的目录,并且重命名为D:\Program Files\CoreDNS\CoreDNS-service.exe

创建winsw配置

更多的配置项可以参考sample-allOptions.xml

D:\Program Files\CoreDNS\CoreDNS-service.xml

1
2
3
4
5
6
7
8
9
10
<service>
<id>CoreDNS</id>
<name>CoreDNS Service (powered by WinSW)</name>
<description>This service is a CoreDNS service</description>
<executable>D:\Program Files\CoreDNS\coredns.exe</executable>
<workingdirectory>D:\Program Files\CoreDNS\</workingdirectory>
<onfailure action="restart" delay="10 sec"/>
<startmode>Automatic</startmode>
<log mode="reset"/>
</service>

配置系统服务

  • 以管理员模式打开命令行提示符
  • 安装服务
1
D:\Program Files\CoreDNS\CoreDNS-service.exe install
  • 启动服务
1
D:\Program Files\CoreDNS\CoreDNS-service.exe start
  • 检查服务状态
1
D:\Program Files\CoreDNS\CoreDNS-service.exe status

验证

  • 重启操作系统
  • 打开命令行提示符
  • 输入nslookup www.baidu.com 127.0.0.1,返回以下内容即可
1
2
3
4
5
6
7
8
服务器:  localhost
Address: 127.0.0.1

非权威应答:
名称: www.a.shifen.com
Addresses: 163.177.151.109
163.177.151.110
Aliases: www.baidu.com