场景

若依前后端分离版手把手教你本地搭建环境并运行项目:

若依前后端分离版手把手教你本地搭建环境并运行项目_若依本地运行流程

前后端分离的系统,需要部署在windows服务器上,若后期需要部署的机器较多,

则每台机器都需要安装jdk、配置jdk环境变量、安装mysql、配置mysql环境变量、导入mysql的表数据,

如果使用nginx代理前端dist包,还需要根据每台服务器的实际存放路径修改配置文件中的绝对路径地址。

如何能实现在一台windows电脑上部署成功后,其它机器可以快速复用。

比如jdk不需要人为点击exe程序包进行安装,可以直接迁移并可通过运行bat的方式将jdk的环境变量配置好。

又比如mysql在一台windows上安装配置好之后可以直接复制整个目录到另一条电脑,并通过双击bat的方式实现快速

执行配置mysql环境变量以及安装msyql服务的操作,使迁移之后保留原数据库的数据、配置。

当然如果系统部署在linux服务器上可以使用docker以及导出导入镜像的方式实现服务迁移和复用。

那么在windows服务器上迁移为减少人工干预的工作,可以按照如下方式实现。

注:

博客:
霸道流氓气质

实现

Window上jdk的安装后的整体迁移、复用、离线部署以及Bat中实现配置JDK环境变量

windows上实现jdk的安装通常是下载exe包并手动安装。比如下载jdk-8u301-windows-x64.exe并双击运行然后设置安装目录。

然后手动将安装目录添加到环境变量中。

其实可以通过在一台windows上安装完jdk的目录整体复制从而实现jdk的迁移工作。

比如下面安装时选择的默认位置C:\Program Files\Java

则将该目录下两个目录整体复制迁移即可,这里将其复制到资料目录下的Java目录下

Windows上实现jdk、Mysql(含数据)整体环境和配置以及数据迁移复用(Bat中实现jdk、mysql环境变量配置、修改my.ini文件路径以及安装mysql服务)_java

则将上面Java目录复制到另一台服务器的某磁盘路径下即可,建议不要放在C盘和中文路径下。

BAT中获取当前路径并配置JDK环境变量

在上面Java目录下同级目录新建bat文件,修改bat内容添加如下

首先设置中文编码

chcp 65001
  • 1.

Bat中获取当前目录的绝对路径

SET "ABS_PATH=%~dp0"
ECHO 当前目录的绝对路径是: %ABS_PATH%
  • 1.
  • 2.

设置当前路径的jdk的路径

set JAVA_HOME=%ABS_PATH%Java\jdk1.8.0_301
  • 1.

提取系统变量path并添加JAVA_HOME的bin到path中

set key="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
for /F "skip=2 tokens=3" %%i IN ('reg query %key% /v "Path"') do (
echo 原始Path ======= %%i
set temppath=%%i
)
 
echo 设置jdk环境变量
setx /M JAVA_HOME "%JAVA_HOME%"
 
setx /M path "%temppath%%%JAVA_HOME%%\bin"
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

执行此bat并去环境变量中验证效果

Windows上实现jdk、Mysql(含数据)整体环境和配置以及数据迁移复用(Bat中实现jdk、mysql环境变量配置、修改my.ini文件路径以及安装mysql服务)_绝对路径_02

并另起一个cmd,输入java -version 验证。

注意此bat要以管理员模式运行,否则提示被拒绝。

可自行添加是否为管理员模式的验证逻辑。

Windows上Mysql的离线安装与整体环境迁移复用

首先安装mysql时采用解压并离线安装的方式进行

Mysql在Windows上离线安装与配置:

Mysql在Windows上离线安装与配置_mysql离线安装

然后将mysql的配置文件my.ini中的datadir设置为当前目录下,便于后期整体的数据迁移。

Windows上实现jdk、Mysql(含数据)整体环境和配置以及数据迁移复用(Bat中实现jdk、mysql环境变量配置、修改my.ini文件路径以及安装mysql服务)_java_03

这样在一台电脑上解压离线安装并导入sql以及修改root密码等操作后就可以整体将这个目录进行迁移到另一台电脑上并复用。

在上面的离线安装过程中也需要设置mysql的环境变量,下面使用bat实现。

Bat中实现配置mysql环境变量

流程与上面配置jdk流程写法基本一致,就是修改下路径即可

新建bat内容并修改如下

SET "ABS_PATH=%~dp0"
ECHO 当前目录的绝对路径是: %ABS_PATH%
set MYSQL_HOME=%ABS_PATH%mysql-8.0.26-winx64
echo MYSQL_HOME的路径为:%MYSQL_HOME%

echo 提取系统级变量path
set key="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
for /F "skip=2 tokens=3" %%i IN ('reg query %key% /v "Path"') do (
echo 原始Path ======= %%i
set temppath=%%i
)

echo 设置mysql环境变量
setx /M MYSQL_HOME "%MYSQL_HOME%"

setx /M path "%temppath%%%MYSQL_HOME%%\bin"
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

同理,此bat必须用管理员模式运行。

Bat中实现修改mysql配置文件my.ini指定行的内容(修改路径为获取当前路径)

上面离线安装的过程中,需要修改mysql的配置文件my.ini中配置文件。

比如这里需要修改basedir的路径为目录所在的路径,以及datadir的路径为目录下的data路径下。

但是这里无法通过设置相对路径的方式实现,所以考虑通过bat获取当前绝对路径,并通过行号修改my.ini的指定行的内容。

注意这里配置文件的行号要对应,这里basedir在第8行,datadir在第10行。

新建bat内容如下

setlocal enabledelayedexpansion

::获取当前路径的绝对路径
SET "ABS_PATH=%~dp0"
echo 当前目录的绝对路径是: %ABS_PATH%

::设置要修改的basedir的路径
set MYSQL_HOME=%ABS_PATH%mysql-8.0.26-winx64
::设置要修改的datadir的路径
set MYSQL_HOME_DATA=%ABS_PATH%mysql-8.0.26-winx64\data
::设置mysql配置文件my.ini的路径
set MYINI_PATH=%ABS_PATH%mysql-8.0.26-winx64\my.ini


:: 指定行号和新内容,格式为 "行号=新内容"
set"line8=basedir=%MYSQL_HOME%"
set"line10=datadir=%MYSQL_HOME_DATA%"
 
:: 读取原始文件,写入到临时文件,并替换指定行号的内容
for /f "tokens=1,* delims=:" %%a in ('findstr /n "^" "%MYINI_PATH%"') do (
    set "line=%%a"
    set "content=%%b"
    if "!line!"=="8" (
        set "content=%line8%"
    )
    if "!line!"=="10" (
        set "content=%line10%"
    )
    >>"%MYINI_PATH%.new" echo !content!
)
 
:: 删除原始文件,重命名临时文件
del "%MYINI_PATH%"
ren "%MYINI_PATH%.new" "my.ini"
 
:: 结束本地环境变量延迟扩展
endlocal
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.

Bat中实现安装并启动mysql服务

上面通过bat修改完my.ini指定行内容后,需要进行mysql服务的安装与启动

新建bat

echo ---------------------------安装mysql服务开始---------------------------------------
cd mysql-8.0.26-winx64
cd bin
call mysqld --initialize-insecure
call mysqld -install
call net start mysql
echo ---------------------------安装mysql服务完成---------------------------------------
pause
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

运行测试

Windows上实现jdk、Mysql(含数据)整体环境和配置以及数据迁移复用(Bat中实现jdk、mysql环境变量配置、修改my.ini文件路径以及安装mysql服务)_绝对路径_04

可通过数据库连接工具连接验证。

如果安装过程中出现问题,需要停止掉msyql服务,可通过如下

net stop mysql
  • 1.

如果需要将mysql服务卸载掉,可通过

mysqld -remove
  • 1.

Nginx部署前端项目修改路径为相对路径并在windows上实现整体迁移复用

上面jdk、mysql等都可进行整体迁移复用,redis使用离线解压即可用,可直接整体迁移。

那么Nginx中部署的前端项目需要将路径修改为相对路径,不能再使用绝对路径了。

原nginx配置文件路径为绝对路径

location / {
            root   D:/font/dist;
            try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

所以需要将前端项目路径修改为相对路径,便于整体迁移。

首先将dist包放在nginx的相对路径下

Windows上实现jdk、Mysql(含数据)整体环境和配置以及数据迁移复用(Bat中实现jdk、mysql环境变量配置、修改my.ini文件路径以及安装mysql服务)_环境变量_05

这里在nginx的根目录下新建font目录,并将dist放在此目录下,则nginx的配置文件可修改为在windows上的相对路径

location / {
            root   font/dist;
            try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

注意font前面不要加斜杠。

后台jar包路径也不涉及绝对路径问题,那么整个项目的在windows上迁移复用就可以通过复制相对目录以及运行几个bat达到快速部署

和复用。

完整bat、配置文件资源下载