windows环境下面的项目一键部署和自启动方案

项目需要写了windows下面一键部署脚本和自启动方案。

概览如下(包含了运行以后的东西)。
windows环境下面的项目一键部署和自启动方案_第1张图片
实际上只需要这些

windows环境下面的项目一键部署和自启动方案_第2张图片

下载的安装包 mysql、jdk、nginx如下:
mysql-8.0.29-winx64.zip
jdk-17_windows-x64_bin.zip
nginx-1.22.0.zip

unzip.exe是命令解压需要的

barcode.sql 表结构
initSQL.sql 初始化数据
mombarcode.zip 前端页面数据
mom-barcode-1.0.jar 后端文件数据

install.bat 一键安装脚本
java.bat java执行脚本
nginx.bat nginx执行脚本

自动启动注册服务用的 winsw,这个可以注册服务。java-boot.exe和nginx-boot就是winsw.exe改的名字
可以参考这个文章
java自启动服务:java-boot.exe 和 java-boot.xml
nginx自启动服务:nginx-boot.exe 和 nginx-boot.xml 注意:需要放到nginx文件夹下面
mysql使用的net这个自己就会启动。不需要用winsw了

改好名字记得执行 java-boot.exe install 注册java服务, nginx-boot.exe install 注册nginx服务

my.ini是 mysql数据库需要的配置
nginx.conf是nginx需要的配置

说明完毕上脚本详情。
install.bat

set mysql_version=mysql-8.0.29
set nginx_version=nginx-1.22.0

copy unzip.exe C:\Windows

%mysql_version%\bin\mysqld remove

unzip -o %mysql_version%-winx64.zip
unzip -o jdk-17_windows-x64_bin.zip
unzip -o %nginx_version%.zip

move %mysql_version%-winx64 %mysql_version%
move jdk-17.0.3.1 jdk
move %nginx_version% nginx

mkdir mysql\data
mkdir mysql\log

copy nginx.conf .\nginx\conf\
copy nginx-boot.exe .\nginx\
copy nginx-boot.xml .\nginx\
copy my.ini %mysql_version%

%mysql_version%\bin\mysqld --initialize-insecure
%mysql_version%\bin\mysqld install 

net start mysql

set setpwd=XXX

%mysql_version%\bin\mysql --connect-expired-password -uroot -p -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '%setpwd%';"
%mysql_version%\bin\mysql -h localhost -u root -p%setpwd% -Dmysql < .\initSQL.sql
%mysql_version%\bin\mysql -h localhost -u root -p%setpwd% -Dbarcode < .\barcode.sql

java.bat


:: find app pid!
set pid=0
set appName=mom-barcode
set appJarPath=mom-barcode-1.0.jar
echo Start find app[%appName%] pid!
for /f "tokens=1-2" %%i in ('jps ^|findstr %appName%') do (
  if %%j == %appJarPath% (
    set pid=%%~i
  )
)
echo app[%appName%] pid:%pid%
 
:: start or restart!
if %pid% GTR 0 ( 
  echo Start kill pid:%pid%
  taskkill /f /pid %pid%
  ping -n 5 127.0.0.1>nul
  echo app[%appName%] already stop,next restart!
  jdk\bin\java -jar -verbose:gc -Xlog:gc:/u01/deploy/%appName%/gc.log -XX:+PrintGC -XX:+PrintGCDetails -Xms2048m -Xmx2048m -Xss1024K -XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=2048m %appJarPath% --spring.profiles.active=online --spring.main.allow-bean-definition-overriding=true
) else (
  echo App[%appName%] not running,start run! 
  jdk\bin\java -jar -verbose:gc -Xlog:gc:/u01/deploy/%appName%/gc.log -XX:+PrintGC -XX:+PrintGCDetails -Xms2048m -Xmx2048m -Xss1024K -XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=2048m %appJarPath% --spring.profiles.active=online --spring.main.allow-bean-definition-overriding=true
)```

**nginx.bat**

```bash

::unzip -o mombarcode -d nginx\html\
::需要进入nginx里面运行命令
cd nginx
nginx

java-boot.xml

<service>
  
  <!-- ID of the service. It should be unique across the Windows system-->
  <id>barcode</id>
  <!-- Display name of the service -->
  <name>barcode</name>
  <!-- Service description -->
  <description>barcode后端服务</description>
  
  <!-- Path to the executable, which should be started -->
  <executable>D:\u01\deploy\java.bat</executable>
</service>

my.ini

[mysqld]
basedir=D:\u01\deploy\mysql-8.0.29
datadir=D:\u01\deploy\mysql\data
port=3306
log-bin=D:\u01\deploy\mysql\log\mysql-binlog
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-time_zone='+8:00'
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
default_authentication_plugin=mysql_native_password
max_connections=2000
max_connect_errors=100000

# (adjust value here, 50%-70% of total RAM)
innodb_dedicated_server=ON
innodb_flush_log_at_trx_commit=0
max_binlog_size=134217728
binlog_cache_size=8388608

innodb_flush_log_at_trx_commit = 0

innodb_autoinc_lock_mode=2

bulk_insert_buffer_size=128M

log_error=D:\u01\deploy\mysql\error.log
slow_query_log_file=D:\u01\deploy\mysql\slow.log
long_query_time=10
slow_query_log = 1

[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4

nginx.conf

		location /mombarcode {
			try_files $uri $uri/  /mombarcode/index.html;
            root   html;
        }
		
		location /apitest/mombarcode/ {
            proxy_pass http://localhost:XXX/;
        }

一些问题:
mysql文件夹删除不掉。执行 net stop mysql
nginx所有命令需要进入nginx文件夹下面执行。(windows下面的bug?)

你可能感兴趣的:(小技巧,windows,nginx,java)