And 1.前言

在内网中的项目最终肯定会有对外应用的端口提供,基于windows操作系统上搭建项目环境当然也得使用到虚拟机,这些项目均都需要让每个步骤自动化,方法很多,这里操作的是对于自己来说算最简便稳定的方式

And 2.环境搭建

准备一台能够稳定长时间运行的电脑,内存最好有8G

And 2.1.配置虚拟机环境网络NAT

安装好VM虚拟机,在VM的菜单编辑中有虚拟网络编辑

image.png

在下方图片框出的设置项配置好需要的网络连接,应用确定

image.png

然后就可以创建新的虚拟机,创建就不演示,我这里使用的是centos7,网卡配置用手动,配置的信息如下

image.png

注意!!这里的DNS配置很关键,有可能默认就能使用,114和路由172.18.0.1一定不能没有,要不然就是实体机ping不到,要么就是ping不到百度

ip    #172.18.1.0
子网    #255.0.0.0
网关    #172.18.0.1
DNS    #172.18.0.1,114.114.114.114,8.8.8.8

配置好重启一下网卡或者虚拟机检查一下能否被实体机ping通,虚拟机ping通外网。

image.png

image.png

使用远程工具看一下ssh登录正常就行

image.png

And 2.2.配置Windows服务环境

这台电脑平时还会用来一些操作windows环境必不可少

And 2.2.1.配置多用户并行

实现一台windows能够多用户同时登录使用,互不干扰,远程桌面能够登录

先创建需要的其他帐号,开启远程登陆,保证都能够切换登录正常使用.

image.png

这里需要用到RDPWrap项目,直接到github下载压缩包Releases · stascorp/rdpwrap · GitHub

解压出来

image.png

image.png

可以看到有个install的bat脚本文件,直接右击管理员身份运行安装一下就行

image.png

安装完成后双击RDPCheck测试一下看看能不能登录上另一个账号

image.png

测试没有问题就行

And 2.2.2.配置网络穿透服务

And 2.2.2.1.穿透网络配置

网络穿透是必不可少的,我这里就直接使用frp来搭建,也可以使用nps来搭建。

这里还是到github上下载frp的程序文件,服务器上也要提前搭建好frps来与frpc使用Releases · fatedier/frp (github.com)

配置可以参照官方的文档来写Frp 官方文档介绍 – Frps.cn 中文文档

下面是我的配置,也可以参照测试一下:

image.png

服务器上的配置要和客户端的common保持一致,然后开启试试看能不能正常使用。

在cmd终端里运行./frpc.exe -c ./frpc.ini

服务器终端上也需要开启:./frps -c frps.ini

这里我们可以看服务器的状况来判断是否连接成功:

image.png

类似于这样就是连接上了,接下来就直接使用远程连接正常就行

image.png

再到实体机上登录另一个帐号,确保都能同时正常使用

And 2.2.2.2.添加到windows服务列表

上面的网络穿透我们需要给创建一个windows服务,让它能够自启动,定时运行,保证能稳定运行,这里其实也可以使用windows的定时任务来实现,我个人喜好这里选择使用添加一个服务,

这里需要使用到一个工具Releases · winsw/winsw (github.com)

这里找到开源的程序WinSW.NET4.exe下载就行,其他的可以忽略

image.png
同时还需要有一个语言编辑程序来配合WinSW使用,如果不使用语言编辑程序去编辑WinSW配置文件的可能导致编辑的文件出现无法被正常转译,导致程序运行出错,这里我使用VScode来编辑。

And 2.2.2.2.1.配置程序与配置文件

WinSW的使用方法很简单,稍微修改一下程序和文件的命名就能直接安装,用一次自然就明白了

第一步就是将WinSW.NET.exeimage.png改名,修改成我们需要的名字就行,这里需要先创建的第一个服务是frp,我改成frpc.servie.exe,这样就行了

第二步就是配置文件了,先创建一个名称与程序名称一样的xml文件frpc.servie.xml,要保证exe程序与xml文件在同一个路径下,然后使用VScode打开编辑xml文件。

我的配置如下,可以适当修改。路径关系是相对路径方式

<service>
<!-- 该服务的唯一标识 -->
    <id>frpc</id>
    <!-- 该服务的名称 -->
    <name>frp_0.47.0_windowsc_amd64</name>
    <!-- 该服务的描述 -->
    <description>frpc客户端 这个服务用 frpc 实现内网穿透</description>
    <!-- 要运行的程序路径 -->
    <executable>frp\frpc.exe</executable>
    <!-- 携带的参数 -->
    <arguments>-c frp\frpc.ini</arguments>
    <!-- 第一次启动失败 60秒重启 -->
    <onfailure action="restart" delay="60 sec"/>
    <!-- 第二次启动失败 120秒后重启 -->
    <onfailure action="restart" delay="120 sec"/>
    <!-- 日志模式 -->
    <logmode>append</logmode>
    <!-- 指定日志文件目录(相对于executable配置的路径) -->
    <logpath>logs</logpath>
</service>

目录如下

image.png

上面配置完成之后就进入cmd,切换路径到程序所在位置

可以使用frpc.servie.exe --help查看一下使用方法,或者直接看开发文档

image.png

使用install来安装

frpc.servie.exe install

image.png

类似这样,然后去windows的服务看看有没有添加上这服务

image.png

可以看到有这个服务,但是没有运行,我们给他打开看看能不能正常运行

image.png

正常运行了,去远程连接一下,看看有没有正常的开启

image.png

看到远程连接正常即可,这里就成功的将服务配置好,可以重启一下主机,等待一会,远程连接一下正常就好了

And 2.2.2.3.配置VM的服务自启

配置好基础的网络服务之后我们就回到vm虚拟机这里,与上方同理的,创建一个vm的自启服务

这里会有些许不同的配置。

And 2.2.2.3.1.配置VM虚拟机启动bat脚本

这里我们找个目录创建一个bat文件

我的配置如下:

"C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" -x "C:\Users\sunian\Desktop\Apps\VM\centos\no0\CentOS7_64_no0.vmx"

## 前面的填写VM程序的路径,使用-x运行后面虚拟机的路径,就可以达成打开vm,并且运行指定的虚拟机

文件配置好保存,双击这bat脚本看看能不能正常的打开vm并且运行虚拟机,正常的启动运行起来就可以

image.png

And 2.2.2.3.2.添加脚本到Windows服务

完成上方步骤之后就加一个WinSW来加入到windows服务项,让虚拟机自启

步骤也是同上方添加frp一样

第一步,拷贝一份WinSW程序,重命名成需要的名称,我命名为VM.start.exe

第二步,创建配置的xml文件为VM.start.xml,内容如下:

<service>
  <!-- 指定在Windows系统内部使用的识别服务的ID。在系统中安装的所有服务中,这必须是唯一的,它应该完全由字母数字字符组成 -->
  <id>vm</id>
  <!-- 服务的简短名称,它可以包含空格和其他字符。尽量简短,就像“id”一样,在系统的所有服务名称中,也要保持唯一 -->
  <name>vm_start</name>
  <!-- 该服务可读描述。当选中该服务时,它将显示在Windows服务管理器中 -->
  <description>vm自启</description>
  <!-- 该元素指定要启动的可执行文件 -->
  <executable>vm-start.bat</executable>
  <!-- 日志输出位置 -->
  <logpath>serviceLogs</logpath>
</service>

我将这三个文件放到了一起使用

image.png

第三步,就是安装系统服务,再重启测试一下是否正常

cmd到程序路径下

VM.start.exe install

image.png

系统服务查看一下,启动试试是否正常

image.png

在重启实体机后登录用户,发现并没有显示正在运行的虚拟机,同时,进入虚拟机时会提示需要获取所有权,这里不点击,直接打叉掉,使用ssh连接一下,可以正常连接就代表配置完成,正常可用了,如果不行就得一步一步去排查一下。


至此,windows的自动化环境就能够正常的使用了,如果有需要增改的内容,可以去修改frp的配置文件或者是bat脚本文件,如果需要修改WinSW的xml文件,则需要提前使用WinSW的配置命令将系统的服务项先卸载安装,配置好xml文件之后重新安装即可。

最后修改:2023 年 06 月 04 日
觉得文章有用,可以赞赏请我喝瓶冰露