Loading... # And 1.前言 在内网中的项目最终肯定会有对外应用的端口提供,基于windows操作系统上搭建项目环境当然也得使用到虚拟机,这些项目均都需要让每个步骤自动化,方法很多,这里操作的是对于自己来说算最简便稳定的方式 # And 2.环境搭建 准备一台能够稳定长时间运行的电脑,内存最好有8G ## And 2.1.配置虚拟机环境网络NAT 安装好VM虚拟机,在VM的菜单编辑中有虚拟网络编辑 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/3861752309.png) 在下方图片框出的设置项配置好需要的网络连接,应用确定 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/3250618157.png) 然后就可以创建新的虚拟机,创建就不演示,我这里使用的是centos7,网卡配置用手动,配置的信息如下 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/2945059589.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](https://www.zmzaxg.top/usr/uploads/2023/05/1290627950.png) ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/2105865614.png) 使用远程工具看一下ssh登录正常就行 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/536720167.png) ## And 2.2.配置Windows服务环境 这台电脑平时还会用来一些操作windows环境必不可少 ### And 2.2.1.配置多用户并行 实现一台windows能够多用户同时登录使用,互不干扰,远程桌面能够登录 先创建需要的其他帐号,开启远程登陆,保证都能够切换登录正常使用. ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/717140812.png) 这里需要用到RDPWrap项目,直接到github下载压缩包[Releases · stascorp/rdpwrap · GitHub](https://github.com/stascorp/rdpwrap/releases) 解压出来 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/1528565469.png) ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/3088512669.png) 可以看到有个install的bat脚本文件,直接右击管理员身份运行安装一下就行 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/2872530791.png) 安装完成后双击RDPCheck测试一下看看能不能登录上另一个账号 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/4236402945.png) 测试没有问题就行 ### And 2.2.2.配置网络穿透服务 #### And 2.2.2.1.穿透网络配置 网络穿透是必不可少的,我这里就直接使用frp来搭建,也可以使用nps来搭建。 这里还是到github上下载frp的程序文件,服务器上也要提前搭建好frps来与frpc使用[Releases · fatedier/frp (github.com)](https://github.com/fatedier/frp/releases) 配置可以参照官方的文档来写[Frp 官方文档介绍 – Frps.cn 中文文档](https://frps.cn/11.html) 下面是我的配置,也可以参照测试一下: ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/882285510.png) 服务器上的配置要和客户端的common保持一致,然后开启试试看能不能正常使用。 在cmd终端里运行./frpc.exe -c ./frpc.ini 服务器终端上也需要开启:./frps -c frps.ini 这里我们可以看服务器的状况来判断是否连接成功: ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/2952918873.png) 类似于这样就是连接上了,接下来就直接使用远程连接正常就行 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/871642431.png) 再到实体机上登录另一个帐号,确保都能同时正常使用 #### And 2.2.2.2.添加到windows服务列表 上面的网络穿透我们需要给创建一个windows服务,让它能够自启动,定时运行,保证能稳定运行,这里其实也可以使用windows的定时任务来实现,我个人喜好这里选择使用添加一个服务, 这里需要使用到一个工具[Releases · winsw/winsw (github.com)](https://github.com/winsw/winsw/releases) 这里找到开源的程序`WinSW.NET4.exe`下载就行,其他的可以忽略 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/06/2561382082.png) 同时还需要有一个语言编辑程序来配合WinSW使用,如果不使用语言编辑程序去编辑WinSW配置文件的可能导致编辑的文件出现无法被正常转译,导致程序运行出错,这里我使用VScode来编辑。 ##### And 2.2.2.2.1.配置程序与配置文件 WinSW的使用方法很简单,稍微修改一下程序和文件的命名就能直接安装,用一次自然就明白了 第一步就是将`WinSW.NET.exe`![image.png](https://www.zmzaxg.top/usr/uploads/2023/06/729869281.png)改名,修改成我们需要的名字就行,这里需要先创建的第一个服务是frp,我改成`frpc.servie.exe`,这样就行了 第二步就是配置文件了,先创建一个名称与程序名称一样的xml文件`frpc.servie.xml`,要保证exe程序与xml文件在同一个路径下,然后使用VScode打开编辑xml文件。 我的配置如下,可以适当修改。路径关系是相对路径方式 ~~~cmd <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](https://www.zmzaxg.top/usr/uploads/2023/06/4254119310.png) 上面配置完成之后就进入cmd,切换路径到程序所在位置 可以使用`frpc.servie.exe --help`查看一下使用方法,或者直接看开发文档 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/06/1278323503.png) 使用`install`来安装 ```cmd frpc.servie.exe install ``` ![image.png](https://www.zmzaxg.top/usr/uploads/2023/06/852048128.png) 类似这样,然后去windows的服务看看有没有添加上这服务 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/06/3645975137.png) 可以看到有这个服务,但是没有运行,我们给他打开看看能不能正常运行 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/06/3477835199.png) 正常运行了,去远程连接一下,看看有没有正常的开启 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/06/3833368731.png) 看到远程连接正常即可,这里就成功的将服务配置好,可以重启一下主机,等待一会,远程连接一下正常就好了 #### And 2.2.2.3.配置VM的服务自启 配置好基础的网络服务之后我们就回到vm虚拟机这里,与上方同理的,创建一个vm的自启服务 这里会有些许不同的配置。 ##### And 2.2.2.3.1.配置VM虚拟机启动bat脚本 这里我们找个目录创建一个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](https://www.zmzaxg.top/usr/uploads/2023/06/831426475.png) ##### And 2.2.2.3.2.添加脚本到Windows服务 完成上方步骤之后就加一个WinSW来加入到windows服务项,让虚拟机自启 步骤也是同上方添加frp一样 第一步,拷贝一份WinSW程序,重命名成需要的名称,我命名为`VM.start.exe` 第二步,创建配置的xml文件为`VM.start.xml`,内容如下: ```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](https://www.zmzaxg.top/usr/uploads/2023/06/920654603.png) 第三步,就是安装系统服务,再重启测试一下是否正常 cmd到程序路径下 ```cmd VM.start.exe install ``` ![image.png](https://www.zmzaxg.top/usr/uploads/2023/06/1153757472.png) 系统服务查看一下,启动试试是否正常 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/06/1082620371.png) 在重启实体机后登录用户,发现并没有显示正在运行的虚拟机,同时,进入虚拟机时会提示需要获取所有权,这里不点击,直接打叉掉,使用ssh连接一下,可以正常连接就代表配置完成,正常可用了,如果不行就得一步一步去排查一下。 --- 至此,windows的自动化环境就能够正常的使用了,如果有需要增改的内容,可以去修改frp的配置文件或者是bat脚本文件,如果需要修改WinSW的xml文件,则需要提前使用WinSW的配置命令将系统的服务项先卸载安装,配置好xml文件之后重新安装即可。 最后修改:2023 年 06 月 04 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 觉得文章有用,可以赞赏请我喝瓶冰露