关于项目运行环境打包一键安装的实现

前言

写这篇博客用于记录当开发完一个项目时,如何实现给用户使用时能够一键安装部署。

服务

  • elasticsearch 开源搜索引擎
  • geoserver 地理数据服务器
  • node + server 用于静态资源服务器搭建
  • postgresql + postgis 关系型数据库及其空间数据拓展插件
  • redis
  • graphhopper 地理导航服务
  • 系统jar包

实现方案

  1. 下载以上服务的免安装版本(幸运的是都有免安装的)
  2. 编写各个服务的启动脚本(windows bat脚本)
  3. windows 下使用 nssm 将 bat 脚本注册为 windows 服务

部分截图

某些原因,只能放一些截图了。能看懂最好,看不懂私信提供一些思路。
在这里插入图片描述
nssm.exe是注册windows服务的插件

nssm_intsall.bat是windows服务注册程序,nssm_intsall.properties是配置文件,供nssm_intsall.bat扫描,里面存放的是服务的属性:

  • IP
  • 端口
  • 名称
  • 别名
  • 是否有依赖服务
  • 服务依赖列表,当不存在依赖服务时,为NONE,存在依赖服务时为空格隔开的服务名称列表
  • 服务启动脚本相对路径

nssm_uninstall.bat是windows服务卸载程序,nssm_unintsall.properties是配置文件(同 nssm_intsall.properties),供nssm_unintsall.bat扫描。

Shell 命令

nssm_intsall.bat

cd /d %~dp0
setlocal enabledelayedexpansion
@echo off
set rootpath=%~dp0
for /f "tokens=* delims==," %%i in ('type "nssm_install.properties"') do (
	for /f "tokens=1,2,3,4,5,6,7 delims==," %%A in ("%%i") do (
		set host=%%A
		set port=%%B
		set serviceName=%%C
		set displayName=%%D
		set dependOn=%%E
		set dependOnService=%%F
		set script=%%G
		set address=!host!:!port!
		echo install !address! !serviceName!
		echo %rootpath%!script!
		
		echo =================================>>log
		echo ServiceName: !serviceName!>>log
		echo DisplayName: !displayName!>>log
		echo Host: !host!>>log
		echo Port: !port!>>log
		echo DependOnService: !dependOnService!>>log
		echo Time: !date! !time!>>log
		echo Operation: Install>>log
			
		
		nssm install !serviceName! %rootpath%!script!
		nssm set !serviceName! DisplayName !displayName!
		if !dependOn!==T (
			echo !dependOnService!
			nssm set !serviceName! DependOnService !dependOnService!
		)
	)
)

echo Service installed please restart your computer.
pause

nssm_intsall.properties

127.0.0.1,30001,rbroute,RBEIS Route,F,NONE,route\startup_an.bat
127.0.0.1,30002,rbelasticsearch,RBEIS Elasticsearch,F,NONE,elasticsearch\bin\startup_an.bat
127.0.0.1,30003,rbpostgresql,RBEIS Postgresql,F,NONE,pgsql\startup_an.bat
127.0.0.1,30004,rbredis,RBEIS Redis,F,NONE,redis\startup_an.bat
127.0.0.1,30005,rbnode,RBEIS Node,F,NONE,node\startup_an.bat
127.0.0.1,30006,rbgeoserver,RBEIS Geoserver,F,NONE,geoserver\bin\startup_an.bat
127.0.0.1,30000,rbqjpa,RBEIS System,T,rbroute rbelasticsearch rbpostgresql rbredis rbnode rbgeoserver,qjpa\startup_an.bat

nssm_uninstall.bat

cd /d %~dp0
setlocal enabledelayedexpansion
@echo off
set rootpath=%~dp0
for /f "tokens=* delims==," %%i in ('type "nssm_uninstall.properties"') do (
	for /f "tokens=1,2,3,4,5,6,7 delims==," %%A in ("%%i") do (
		set host=%%A
		set port=%%B
		set serviceName=%%C
		set displayName=%%D
		set dependOn=%%E
		set dependOnService=%%F
		set script=%%G
		set address=!host!:!port!
		echo uninstall !address! !serviceName! 
		echo %rootpath%!script!
		
		echo =================================>>log
		echo ServiceName: !serviceName!>>log
		echo DisplayName: !displayName!>>log
		echo Host: !host!>>log
		echo Port: !port!>>log
		echo DependOnService: !dependOnService!>>log
		echo Time: !date! !time!>>log
		echo Operation: UnInstall>>log
			
		
		nssm stop !serviceName!>>log
		nssm remove !serviceName! confirm>>log
	)
)
pause

nssm_uninstall.properties

127.0.0.1,30000,rbqjpa,RBEIS System,T,rbroute rbelasticsearch rbpostgresql rbredis rbnode rbgeoserver,qjpa\startup_an.bat
127.0.0.1,30001,rbroute,RBEIS Route,F,NONE,route\startup_an.bat
127.0.0.1,30002,rbelasticsearch,RBEIS Elasticsearch,F,NONE,elasticsearch\bin\startup_an.bat
127.0.0.1,30003,rbpostgresql,RBEIS Postgresql,F,NONE,pgsql\startup_an.bat
127.0.0.1,30004,rbredis,RBEIS Redis,F,NONE,redis\startup_an.bat
127.0.0.1,30005,rbnode,RBEIS Node,F,NONE,node\startup_an.bat
127.0.0.1,30006,rbgeoserver,RBEIS Geoserver,F,NONE,geoserver\bin\startup_an.bat
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值