记录windows server部署java web程序并设置开机自动启动的坎坷经历

故事背景

    公司为客户开发了一个网站,计划是linux服务器,结果同事去了现场发现只有一台window server。由于客户的服务器会不定时重启,所以我们需要设置程序的开机自动启动。

于是故事开始了。。

坎坷经历

    第一坑

    实现这个功能,网上一搜一大堆,比如这个Windows服务或者程序开机自启动的四种方式_windows_Windows系列_操作系统_脚本之家有时候我们需要将我们的一些exe文件、脚本代码等可以方便的自动运行,主要也是弥补windows计划经常出错的问题,这里为大家简单介绍一下icon-default.png?t=O83Ahttps://www.jb51.net/os/windows/937775.html

    经过短暂的权衡利弊,我选择方案一,即自启动文件夹方式。

    首先是些写一个批处理文件,由于怕java -jar 方式启动打开的控制台窗口被误操作关闭,导致服务停止,所以采用javaw -jar的方式启动。

    脚本我这么写:

@echo off
start javaw -jar D:\tmp\test\server.jar
exit

然后生成快捷方式放到自启动文件夹

    好了!so easy...

    但等到客户服务器重启之后,发现程序并不能访问,赶紧远程到服务器一看,锁屏了。。

    赶紧联系客户方服务器管理员解锁,解锁5分钟后再试,程序运行正常。

    于是推测,是由于自启动文件夹中的程序必须要等到windows系统用户登录后才能运行。

   第二坑

   不可能每次系统重启都让管理员进行用户登录操作,这样风险太高。所以果断放弃自启动文件夹方式,采用任务计划程序,设置开机启动,设置完成后让客户服务器管理员输入密码。

   嗯,应该可能大概能行吧。。

   结果服务器再次重启后,发现两个程序都没有正常运行。。。挠头。。。

   第三坑

   疯狂百度之后,我找到了这个:

Nginx在Windows操作系统中配置开机自动启动_windows 设置nginx、redis 服务开机自启动-CSDN博客文章浏览阅读3.9k次,点赞3次,收藏10次。关于如何在Windows操作系统中配置Nginx开机自动启动,解决方案如下:一、下载文件服务启动执行文件WinSW.NET4.exe下载地址:https://github.com/winsw/winsw/releases下载最新移动版即可,我用的是2.10.3:https://github.com/winsw/winsw/releases/tag/v2.10.3下载后放入nginx文件夹并改名为service.exe,如下图:二、在nginx文件夹下新建一个 service..._windows 设置nginx、redis 服务开机自启动https://blog.csdn.net/antma/article/details/112916917   成果解决了nginx开机自启动问题,但当我想继续用winsw继续安装java服务的时候,却怎么也安装不上。。

    于是各种尝试各种搜。。偶然间发现了一个奇怪的现象:

当我在jar包所在目录文件夹shift + 鼠标右键打开powershell控制台,运行命令 java -jar  server.jar,程序正常运行

当我cmd命令打开控制台,运行命令java -jar server.jar,程序运行失败,提示数据库连接超时。。

    嗯,总算让我找到了原因所在:jar包中的配置文件数据库地址是测试环境地址,生产环境的数据库地址配置在外部配置文件中。而cmd控制台运行程序时,没能加载到外部配置文件,也就是config文件夹下的配置文件,所以运行不起来。

    定位到了问题,那解决起来就简单多了,修改启动脚本为

@echo off
D:
cd D:\tmp\test
start javaw -jar D:\tmp\test\server.jar
exit

    然后尝试启动站点的windows任务计划程序,程序完美启动。。

PS:

1. 关于网上很多都说用命令:sc create service binPath= path命令直接安装服务,但是我安装的服务启动不起来。。原因未知,世上无难事,只要肯放弃,不研究了

2. 关于wrapper-windows,配(懒)置(得)略(去)微(研)复(究)杂,同样放弃。。

3. 关于添加本地组策略方式,公司电脑是家庭版,无法打开组策略配置,无法测试,直接去客户电脑配置组策略风险较高,放弃。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值