简单的项目上线shell脚本

2 篇文章 0 订阅
1 篇文章 0 订阅

场景描述

       在项目开发过程中往往会有很多的配置文件需要根据环境的不同进行修改。比如我们在java开发中比较常用.properties配置文件。在代码上库时这种与环境配置相关的配置项往往用通配符标识,在不同的环境下需要根据当前的环境进行修改配置。在项目比较小,配置项比较少的时候,环境变更时为了方便大多采用手动打开这些配置文件进行修改。但是配置项比较多的时候会比较麻烦,而且容易修改错,为了简化环境变更的流程,我们可以通过编写shell脚本,将打包好的项目通过shell脚本进行解压,自动配置。

场景模拟:

1.假设我们通过gradle或者maven打的javaweb项目的包为education_server.war,该包中含有一个与环境相关的配置文件为WEB-INF/classes/config/appConfig.properties

   appConfig.properties内容如下所示:

#database config
db.name=#{DBNAME}
db.user.name=#{DBUSERNAME}
db.user.passwd=#{DBUSERPASSWD}

#resource save path
video.path=#{VIDEOPATH}
image.path=#{IMAGEPATH}

注意:.properties文件中注释以#号开头

2.创建一个.ini文件统一进行所有配置文件中配置项的配置

  appConfig.ini文件内容如下所示:

,database config
db_name=educate_db
db_user_name=jwang
db_user_passwd=jwang
,resource path config
video_path=/home/jwang/video
image_path=/home/jwang/image

注意:该ini文件包含项目中所有需要配置的配置项,目前就以一个配置文件appConfig.properties为例。ini文件是一个纯文本文件,该文件注释以逗号开头。

3.编写shell脚本将项目包解压并将ini文件中的配置信息替换到项目的各个对应的配置项中

   appInstall.sh文件内容如下所示:

#!/bin/bash
#program:
# educate_server install script
#history
#data:2017/11/06 author:jwang First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/loacl/sbin:~/bin
export PATH
echo ################# Install start ##################
_pwd=`pwd`
echo $_pwd
program="educate_server"
db_name="`cat $_pwd/appConfig.ini | grep 'db_name' | awk -F "db_name=" '{print $2}'`"
db_user_name="`cat $_pwd/appConfig.ini | grep 'db_user_name' | awk -F "db_user_name=" '{print $2}'`"
db_user_passwd="`cat $_pwd/appConfig.ini | grep 'db_user_passwd' | awk -F "db_user_passwd=" '{print $2}'`"
video_path="`cat $_pwd/appConfig.ini | grep 'video_path' | awk -F "video_path=" '{print $2}'`"
image_path="`cat $_pwd/appConfig.ini | grep 'image_path' | awk -F "image_path=" '{print $2}'`"
function unzip_package
{
echo "begin unzip package......"
unzip -o $program.war -d $program
chown -R jwang:jwang $program/
echo "unzip package end......"
}
function config_params
{
echo "begin config param......"
sed -i "s|#{DBNAME}|${db_name}|" $_pwd/$program/WEM-INF/classes/config/appConfig.properties
sed -i "s|#{DBUSERNAME}|${db_user_name}|" $_pwd/$program/WEM-INF/classes/config/appConfig.properties
sed -i "s|#{DBUSERPASSWD}|${db_user_passwd}|" $_pwd/$program/WEM-INF/classes/config/appConfig.properties
sed -i "s|#{VIDEOPATH}|${video_path}|" $_pwd/$program/WEM-INF/classes/config/appConfig.properties
sed -i "s|#{IMAGEPATH}|${image_path}|" $_pwd/$program/WEM-INF/classes/config/appConfig.properties
echo "config param end......"
}
unzip_package
config_params
echo ################## Install end ####################
exit 0

4.调试运行

(1)如下图所示将我们编辑好的ini文件,sh文件以及war包放到同一目录下

   

 

(2)执行脚本文件./appInstall.sh

   

(3)查看解压后的war文件如下所示

   

(4)查看配置后的appConfig.properties文件

   

 

特别提醒:

       大多时候编写shell和ini文件都是在windows系统通过可视化的编辑工具进行编辑的,通过这种方式编写的shell和ini文件多数情况会存在格式问题,针对这种问题在确保编码一致的情况下可在运行脚本之前执行dos2linux命令进行转换,转换之后若是还是不能执行成功则检查配置项和脚本文件,编辑的时候很容易因为不细心而写错。

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值