Advertisement

Shell脚本实现应用自动安装部署

阅读量:

该版本的安装程序采用了inno setup技术来打包应用和相关软件为.exe文件。

在那个版本中,我们将应用和软件交付给客户,并编写了详细的安装指南。然而客户对此并不满意,并希望像Windows版那样只需执行下一步即可完成应用程序和软件的安装。于是乎我编写了一个简短而有效的Shell脚本。

安装脚本所需文件 (与shell脚本文件在同一目录下)

medical.zip (应用)

Install.zdt(数据初始化文件,非必须)

medical.tar.gz (软件包)

medical.tar.gz包内包含:

apache-tomcat.tar.gz

MySQL-client-5.5.31-2.rhel5.i386.rpm

MySQL-server-5.5.31-2.rhel5.i386.rpm

jdk-6u29-linux-i586-rpm.bin

mysql.cnf

默认安装位置:

JDK默认安装路径为/usr/java/ 下

MySQL默认安装路径为/usr/share/mysql/ 下

Tomcat默认安装路径为/usr/tomcat-medical/ 下

#!/bin/bash //指定命令路径 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH //获取执行命令的结果码 ? 是用来获取执行命令的结果码的?通常正常情况下结果码应为0表示成功 if [ "?" -ne 0 ] ; then //请输出操作信息 echo "Please check your need software" //强制终止脚本运行 exit 0 fi //定义回滚功能函数(用于删除解压后的文件) rollback() { rm -rf apache-tomcat.tar.gz rm -rf MySQL-client-5.5.31-2.rhel5.i386.rpm rm -rf MySQL-server-5.5.31-2.rhel5.i386.rpm rm -rf jdk-6u29-linux-i586-rpm.bin rm -rf mysql.cnf } //请求用户确认操作并获取响应 read userinput //解析用户的确认信息 if [ "$userinput" == '1' ] ; then

//判断文件是否存在

if [ ! -e medical.tar.gz ] ; then

echo "I cann't find medical.tar.gz file."

exit 0

else //存在则赋权并解压

chmod 755 medical.tar.gz

tar zxvf medical.tar.gz

fi

################################### Verify #################################

//判断本机是否安装了jdk rpm -qa | grep jdk if [ "$?" == 0 ] ; then

echo "Already installed JDK, please uninstall!"

rollback;

exit 0

fi //判断8080端口是否被占用 netstat -apn | grep 8080 if [ "$?" == 0 ] ; then

echo "8080 port is occupied!"

rollback;

exit 0

fi //判断本机是否安装了mysql rpm -qa | grep -i mysql if [ "$?" == 0 ] ; then

echo "The system has been installed MySQL.Please run the uninstall!"

rollback;

exit 0

fi //判断目录是否已存在 if [ -d /usr/tomcat-medical ] ; then

echo "/usr/tomcat-medical Directory exists"

rollback;

exit 0

fi //判断3306端口是否被占用 netstat -apn | grep 3306 if [ "$?" == 0 ] ; then

echo "3306 port is occupied"

rollback;

exit 0

fi

##################################### JDK ############################## # #

//赋权并安装jdk
chmod +x jdk-6u29-linux-i586-rpm.bin
./sdk-6u29-linux-i586-rpm.bin
//安装jdk时需要回车确认一下 JDK的许可协议

//赋权并安装jdk
chmod +x jdk-6u29-linux-i586-rpm.bin
./sdk-6u29-linux-i586-rpm.bin
//安装jdk时需要回车确认一下 JDK的许可协议

######################################################################## #

当rpm包安装完成后会自动创建java/jdk**目录,并检测是否生成了java/jdk目录

echo "I cann't find JDK directory."

rollback;

exit 0

fi

############################## Environment Variables ######################## #

//将一段文本附加到指定文件尾部并将其内容写入环境变量
append_to_file << /etc/profile << EFF
set Java JDK安装路径为/usr/java/jdk1.6.0_29
set Java RuntimEnvironment安装路径为$JAVA_HOME/jre
拼接系统Java JDK和Java RuntimEnvironment类库路径至CLASSPATH环境变量
将系统Java JDK、/bin/以及Java RuntimEnvironment bin目录添加至PATH环境变量中
设置上述四个参数为可执行的环境变量
EFF

#########################################################################

//判断环境变量是否已经生效 java -version if [ "$?" != 0 ] ; then

echo "I cann't set java path."

rollback;

exit 0

fi

####################### Delete JDK Installation file ######################## # # # # #

rm -rf jdk-6u29-linux-i586.rpm rm -rf sun-javadb*

################################# MySQL ################################# #

// 赋予权限并安装MySQL服务
chmod 754 MySQL-server-4.x.x rpm.rpm
// 使用rpm命令以获取MySQL服务器所需的所有依赖项
rpm -ivh MySQL-server-4.x.x rpm.rpm
// 赋予权限并安装MySQL服务
chmod 740 MySQL-server-y.y.y rpm.rpm
// 使用rpm命令以获取MySQL服务器所需的所有依赖项
rpm -i –lock MySQL-server-y.y.y rpm.rpm

################### Copy MySQL configuration file ########################### # # #

// 备份MySQL主配置文件
chmod 755 mysql.conf
复制mysql.conf至/usr/share/mysql目录
复制mysql.conf至/etc目录
// 检查并重启MySQL服务
netstat -apn | grep 3306
if [ "$?" != 0 ]; then

service mysql start

else

service mysql restart

fi //判断mysql是否启动成功 netstat -apn | grep 3306 if [ "$?" != 0 ] ; then

echo "MySQL service failed to start!"

rollback;

exit 0

findinstall // 检查mysql用户安装情况
set mode=755 # 设置文件权限为755
rpm install -v # 安装mysql客户端程序

################################ Tomcat ##################################

// 舵权后解压tomcat
chmod 755 /usr/local/bin/apache-tomcat*.tar*

使用 tar 命令解压压缩过的 tar 文件

tar zxvf /usr/local/bin/apache-tomcat*.tar*

将解压后的tomcat程序移动到指定目录

mv apache-tomcat-6.0.32/ /usr/tomcat-medical/

################################ Medical ################################# #

//对medical.zip文件进行赋权压缩并解压至指定路径
chmod 755 medical.zip
unzip medical.zip -d /usr/tomcat-medical/webapps/
//检查当前目录中是否包含Instal zdt文件;如果存在,则复制至目标路径
if [ -e Install.zdt ] ; then

执行以下复制操作:将名为zdt的安装文件从当前位置复制到配置目录下的指定位置。

fi

########################### Change Password ############################### #

//等待五秒 sleep five seconds //MySQL默认密码为空,更改MySQL密码(该用户具有执行MySQL指令的权限) mysqladmin flush-privileges password ' ******'

########################## Environment Variables ######################### # # # #

//环境变量设置 通过管道将输出重定向至tedd日志文件并捕获错误信息 TOMCAST_Home位置配置为/usr/tomcat-medical路径 系统路径变量PATH被重新定义为当前工作目录下的bin目录以及Apache服务器相关目录 同时配置多个环境变量:JAVA_HOME JRE_Home CLASSPATH PATH以及TOMCAST_Home

source /etc/profile

#########################################################################

//启动tomcat sh /usr/tomcat-medical/bin/startup.sh //这里延迟5秒等待tomcat启动完成 sleep 5 //判断tomcat状态 curl 127.0.0.1:8080 | grep "Thanks for using Tomcat" if [ "$?" != 0 ] ; then

echo "I think install tomcat is unfinished ."

rollback;

exit 0

fi rollback;

######################## Auto Start Up Services ############################ # # #

在RC本地文件中添加Tomcat启动脚本以实现开机自动启动配置。 cat >> /etc/rc.local << ASU /usr/tomcat-medical/bin/startup.sh ASU 启动MySQL服务以实现开机自动重启配置。 chkconfig --add mysql

在RC本地文件中添加Tomcat启动脚本以实现开机自动启动配置。\n\n cat >> /etc/rc.local << ASU\n\n /usr/tomcat-medical/bin/startup.sh\n\n ASU\n\n 启动MySQL服务以实现开机自动重启配置。\n\n chkconfig --add mysql

########################################################################

//如果用户输入0的情况下执行卸载程序 elif [ "$userinput" == '0' ] ; then

echo "Uninstalling Tomcat......" netstat -apn | grep 8080 if [ "$?" == 0 ] ; then

sh /usr/tomcat-medical/bin/shutdown.sh

fi清除该目录位置
echo输出卸载JDK提示信息
rpm执行JDK版本号指定的卸载操作
echo输出卸载MySQL提示信息
netstat通过管道连接获取端口状态并检查是否已断开连接
if[$?等于零则继续运行后续代码]

service mysql stop

fi rpm -e MySQL-client-5.5.31-2.rhel5.i386 rpm -e MySQL-server-5.5.31-2.rhel5.i386 echo "Uninstall operation completed, please ensure that environment variables are updated."

//如果用户输入的不是1或0则执行这里 else

echo "You can only enter 1 or 0."

fi

全部评论 (0)

还没有任何评论哟~