当前位置:   article > 正文

Windows Server版部署java服务_windows下java部署

windows下java部署

Windows Server 2022部署java web服务

由于服务器中了勒索病毒,不得不清空硬盘,所有东西都要重新部署,为此写下博客,记录部署过程,为以后的自己提供参考。



一、各种软件安装

阿里云 本来是都分享了的,但是压缩包阿里云暂不支持分享,不知后续是否支持。

1.JDK

JDK安装教程
建议安装jdk-8u202这个,之前安装的jdk-8u111,在对接微信支付的时候,出BUG,升级了JDK就好了,当时时间紧迫,也没来得及深究,有知道的小伙伴可以留言告知。

2.MySql

先用解压包解压,然后添加my.ini配置文件的方式运行MySql服务,但是一切配置好了,运行提示我少文件,让我重新下载,没办法,就下载的安装包
本次有参考 MySQL下载教程
自定义MySQL安装
下载VC_redist.x64.exe

3.Nginx

下载安装包,解压即可用
记得去nginx.conf文件中不Nginx的端口从80改为其他端口,我修改的是888

4.Redis

下载安装包,解压即可用

由于项目是jar包的方式,所以没有安装TomCat


二、数据恢复、运行jar、Nginx配置、端口映射

1.数据恢复

过程中,有张表报错了 Got a packet bigger than ‘max_allowed_packet’ bytes
查看帖子解决了

#查看数据库中最大的单个文件容量

SHOW VARIABLES LIKE ‘%max_allowed_packet%‘; 
  • 1

#设置最大单个文件容量为20M,单次有效

SET GLOBAL max_allowed_packet=20*1024*1024 
  • 1

2.运行jar

java -jar -Xms256m -Xmx512m .\xxx.jar >  .\log.log &
  • 1

3.Nginx配置

由于要配置HTTPS协议请求,所以要先去阿里云SSL 证书管理页面,把证书下载下来

配置过程中,还遇到配置多个ssl server,每次请求下面的地址时,都会进入第一个server的页面,百度说输入nginx -V 查看是否有 TLS SNI support enabled 有就支持,没有就需要安装模块。但是我的显示支持,还是出现了这个问题,一顿瞎操作,后来才发现,我自己应该不小心点到了nginx.exe,启动了多个服务,在任务管理其中关闭所有Nginx服务,重新启动就解决了

由于有个项目要传非常大的文件上来,所以真的这个server,添加了一下单独配置

client_max_body_size        800G; # 文件最大大小
keepalive_timeout 1800s;          # 指定 KeepAlive 的超时时间(timeout)。指定每个 TCP 连接最多可以保持多长时间。Nginx 的默认值是 75 秒,有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为 0,就禁止了 keepalive 连接。
proxy_connect_timeout 1800s;      # nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 1800s;         # 后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 1800s;         # 连接成功后,后端服务器响应时间(代理接收超时)
fastcgi_connect_timeout 1800s;    # 指定nginx与后端fastcgi server连接超时时间
fastcgi_send_timeout 1800s;       # 指定nginx向后端传送请求超时时间(指已完成两次握手后向fastcgi传送请求超时时间)
fastcgi_read_timeout 1800s;       # 指定nginx向后端传送响应超时时间(指已完成两次握手后向fastcgi传送响应超时时间)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Windows Server和Windows还有的细微的区别,就是root地址中的斜杠只能是'/','\'会识别不到目录

4.端口映射

这个服务器网络是通过光猫连接路由器,然后再通过路由器某端口连到服务器上的,所以服务器是内网IP,光猫是外网固定IP。想访问服务器,就要去路由器设置里面做映射才行(首先要把服务器设置为固定IP,防止重启后IP变了,映射失效的问题),由于每款路由器设置可能不同,这里就不作记录了


三、脚本

1.Jar

1)启动Jar

为了不让jar运行一直有个DOS窗口,就编写了个脚本,让它后台静默运行

@echo off

if "%1"=="h" goto begin 

start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit 

:begin 

set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"

java -jar -Xms256m -Xmx512m .\xxx.jar >>  .\log_%Ymd%.log &

@echo on
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

2)线程守护

为了防止项目停止,需要连接服务器,手动启动的麻烦,编写了个脚本一直监控

@echo off

set jarName=jarName.jar
@echo %jarName% daemon thread start
 
:START_CHECK
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
jps -l | findstr /i  "%jarName%" || goto STARTPRO
ping -n 10 127.0.0.1 > nul
goto START_CHECK
 
 
:STARTPRO
@echo %Ymd%   start %jarName% process...
:: start后面的就是上面那个启动jar脚本的名称
start 1.bat
:: -n后面的数字是多少  就是sleep多少秒
ping -n 20 127.0.0.1 > nul
goto START_CHECK

@echo on
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

3)关闭Jar

为了停止服务不要每次都去 netstat -aon|findstr "8080" taskkill /f /pid 端口 而编写了个脚本

@echo off
set port=8080
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do (
    echo kill the process %%m who use the port 
    taskkill /pid %%m -t -f
    goto q
)
:q
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.Nginx

@echo off
if "%1" == "h" goto begin 
  mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit 
begin 

:: cd后面是Nginx的安装目录
cd ...\nginx-1.9.10

start nginx

exit
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

停止:nginx.exe -s quit
重载:nginx.exe -s reload
重新打开日志:nginx.exe -s reopen

3.Redis

@echo off
 
if "%1" == "h" goto begin 
  mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit 
:begin

:: cd后面是Redis的安装目录
cd ...\Redis

redis-server redis.windows.conf
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

以上的路径,最好都写绝对路径,这样移动了文件也能试用

四、开机自启动

以上启动脚本创建快捷打开方式,放到 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 目录下面,开机后就会自动运行了

五、MySql的自动备份脚本

要先在E:\mysql_backup下面建好对应数据库名的文件夹

rem ******MySQL backup start******
    @echo off

    set "user=root"
    set "password=123456"

    ::规定数组长度
    set objLength=7

    ::给数组设值
    set obj[0] =数据库名
    set obj[1] =数据库名
    set obj[2] =数据库名
    set obj[3] =数据库名
    set obj[4] =数据库名
    set obj[5] =数据库名
    set obj[6] =数据库名
    ::set obj[7] =数据库名

    ::初始索引
    set objIndex=0
    
    ::设置时间变量
    set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
    
    ::进入mysql安装目录的bin目录下
    D:
    cd D:/java/mysql8.0.28/bin/

    ::循环
    :loopStart

    ::判断索引值是否大于数组长度,大于的话跳到结束,不大于的话继续循环
    if %objIndex% equ %objLength% goto end

    ::初始化变量
    set objCurrent=0

    ::这个循环是数组对象处理循环,就是处理单个对象。/f是参数格式 usebackq声明路径有空格
    for /f "usebackq delims== tokens=1-2" %%i in (`set obj[%objIndex%]`) do (

          ::赋值变量
          set objCurrent=%%j
          echo %%j

    ::删除一周前的备份数据
    forfiles /p "E:\mysql_backup\%%j" /m backup_*.sql -d -7 /c "cmd /c del /f @path"

    ::执行备份操作
    mysqldump --opt --single-transaction=TRUE --user=%user% --password=%password% --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "%%j" --hex-blob > E:\mysql_backup\%%j\backup_%Ymd%.sql
     )

    ::索引+1
    set /a objIndex=%objIndex% + 1

    ::继续循环
    goto loopStart

    :end

    @echo on
rem ******MySQL backup end******
  • 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
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62

然后添加Windows定时任务,这样就可以每天备份数据库了

如果用上面的脚本,备份时间最好设置在每天10:00:00之后,因为十点之前 set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%" 有问题,会导致备份失败

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/480154
推荐阅读
相关标签
  

闽ICP备14008679号