前言

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

服务

  • 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=%%Aset port=%%Bset serviceName=%%Cset displayName=%%Dset dependOn=%%Eset dependOnService=%%Fset script=%%Gset address=!host!:!port!echo install !address! !serviceName!echo %rootpath%!script!echo =================================>>logecho ServiceName: !serviceName!>>logecho DisplayName: !displayName!>>logecho Host: !host!>>logecho Port: !port!>>logecho DependOnService: !dependOnService!>>logecho Time: !date! !time!>>logecho Operation: Install>>lognssm 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=%%Aset port=%%Bset serviceName=%%Cset displayName=%%Dset dependOn=%%Eset dependOnService=%%Fset script=%%Gset address=!host!:!port!echo uninstall !address! !serviceName! echo %rootpath%!script!echo =================================>>logecho ServiceName: !serviceName!>>logecho DisplayName: !displayName!>>logecho Host: !host!>>logecho Port: !port!>>logecho DependOnService: !dependOnService!>>logecho Time: !date! !time!>>logecho Operation: UnInstall>>lognssm stop !serviceName!>>lognssm 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

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

  1. tomcat php centeros,linux(center OS7)安装JDK、tomcat、mysql 搭建java web项目运行环境...

    一.安装JDK 1.卸载旧版本或者系统自带的JDK (1)列出所有已安装的JDK rpm -qa | grep jdk (2)卸载不需要的JDK yum -y remove 安装包名称 2.下载并解压 ...

  2. 使用 Advanced Installer 打包 一键安装Web应用程序

    使用 Advanced Installer 打包 一键安装Web应用程序 原文 http://www.cnblogs.com/codealone/archive/2013/04/03/2998148. ...

  3. linux集成环境包一键安装web环境

    linux集成环境包一键安装web环境 linux服务器一般非小型官网或个人网站等,其他中小型或者大型项目都应该是采用的linux服务器,其中的特性大概就是安全吧,不过我一直用linux,很多大神级别 ...

  4. maven常用命令(编译、测试、运行、打包、安装、部署)

    我们可以在cmd中通过一系列的maven命令来对我们的maven-helloworld工程进行编译.测试.运行.打包.安装.部署. compile compile是maven工程的编译命令,作用是将s ...

  5. 【再读第六版PMBOK】第二章 项目运行环境

    [再读第六版PMBOK]第二章 项目运行环境 1)事业环境因素 1.1)组织内部事业环境因素 1.2)组织外部事业环境因素 2)组织过程资产 2.1)过程政策,和程序 2.2)组织知识库 3)组织系统 ...

  6. 项目管理指南学习笔记-项目运行环境(1)

    项目运行环境(1) 项目运行环境分为两种事业环境因素(EEF)和组织过程资产(OPA) 事业环境因素(EEFs)是指项目团队不能控制的,将对项目产生影响.限制或指令作用的各种条 件. 事业环境因素是很 ...

  7. Docker - 通过快速脚本在不同的环境下一键安装Docker

    文章目录 Docker - 通过快速脚本在不同的环境下一键安装Docker 1.在 CentOS/RHEL 中安装 Docker 2.在 Ubuntu 中安装 Docker 3.在 SLES 中安装 ...

  8. mfc140dll 丢失 微软常用运行库_集成最新运行库、一键安装、一键到位,运行库操作简单!...

    背景有很多童鞋在安装诸如PS.vc++等软件总会提示缺少关键组件或者运行框架,也有在后台问我的,所以今天就给大家分享一下一些电脑安装软软件或者游戏常用的运行库,号主找了一些并且写了批处理直接运行就可以 ...

  9. 关于项目运行或者打包出现“primordials is not defined”导致运行或打包失败问题

    公司有一个项目,因为用到了gulp,运行是可以正常运行,但是打包的时候就出现了 primordials is not defined的报错信息,但是在代码中并没有找到primordials,所以查阅了 ...

最新文章

  1. 修改以服务方式启动tomcat7的堆内存设置
  2. redis 高级特性一
  3. JS 创建自定义对象的方法
  4. NPOI 导出 excel 性能测试
  5. docker 容器开启ssh服务
  6. python整理-day4
  7. 数据结构和算法分析(三)——C++实现队列
  8. 基于VisualC++2010开发Windows7杀毒应用程序范例(2)---检测并遍历所有进程的线程信息...
  9. 呕心沥血博一文--MySQL主从异步复制
  10. monty python读音-PYTHON – 让quot;Monty 语言”进入自动化行业:第 1 部分
  11. 21计算机考研上岸经验分享(一战成硕,普通双非逆袭顶级211)
  12. Windows7下完美绿色版无损分区软件Paragon Partition Manager
  13. 华为HCIP认证考试简介
  14. 印前调色的基本规律及视觉效果
  15. 反汇编工具OD(OllyDebug)
  16. Python非线性拟合笔记
  17. 【​观察】英特尔傲腾DC P4800X有哪些适用场景?
  18. Nim博弈和威佐夫博弈 Return of the Nim
  19. TIA portal西门子博途安装时一直提示重启怎么办?
  20. 佬,速速进来观看你的专属通讯录(静态版本)

热门文章

  1. 构建中国云生态 | 华云数据与开江科技完成产品兼容互认证 携手赋能政务数字化建设
  2. 华裔科学家颠覆光刻机时代!麻省理工突破1纳米工艺,引领2D晶体管革命的未来...
  3. Android跨进程通信
  4. 南开c语言程序设计作业答案,南开19春学期(1709、1803、1809、1903)《C语言程序设计》在......
  5. 红外补光灯发热的原因 - 是红外线辐射导致的吗?
  6. 背水一战 Windows 10 (43) - C# 7.0 新特性
  7. Java对象的存活判定与对象引用
  8. mysql客户端连接10060_mysql客户端连接失败处理方法(can't connect to MySQL server on localhost'(10060))...
  9. azkaban资源下载及简单使用
  10. 一个简单的二维码传输技术(Python语言)