Windows Server版部署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%‘; 

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

SET GLOBAL max_allowed_packet=20*1024*1024 

2.运行jar

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

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传送响应超时时间)

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

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

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

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

停止: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

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

四、开机自启动

以上启动脚本创建快捷打开方式,放到 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******

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

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

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 Windows Server部署 Java 项目并使用 Nginx 作为反向代理,可以按照以下步骤进行操作: 1. 安装 Java 开发环境:在 Windows Server 上安装 Java 开发环境,确保 Java 运行时环境(JRE)或 Java 开发工具包(JDK)已正确安装。 2. 配置 Java 环境变量:将 Java 安装路径添加到系统的环境变量中,以便系统可以找到 Java 的执行文件。 3. 安装 Nginx:下载并安装 Windows 本的 Nginx,你可以从 Nginx 官方网站或其他可信来源获取安装程序。 4. 配置 Nginx:编辑 Nginx 的配置文件(通常是 `nginx.conf`),添加一个新的 server 配置块来配置反向代理。示例如下: ``` server { listen 80; server_name your_domain.com; location / { proxy_pass http://localhost:8080; // 将请求转发到 Java 项目的地址和端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 在上述示例中,将请求转发到本地的 `localhost:8080` 地址和端口上,你需要根据实际情况修改这些配置。 5. 启动 Nginx:启动 Nginx 服务,确保它正常运行。 6. 启动 Java 项目:启动你的 Java 项目,确保它监听在配置文件中指定的端口(上述示例中为 `8080`)。 7. 测试访问:使用浏览器或其他工具,通过访问你的域名或服务器的 IP 地址来测试访问 Java 项目是否正常。 通过以上步骤,你就可以在 Windows Server 上成功部署 Java 项目并使用 Nginx 进行反向代理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值