前段时间在客户那边做一个web应用项目,我负责的是项目的镜像版数据导入导出以及将应用打成安装包。
Windows版本的安装包直接使用了inno setup将应用及所需软件压成exe文件。
Linux版本当时是把应用及软件交给了客户,并写了安装步骤文档,但是客户不满意,希望做成类似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,错误为1
if [ "$?" != 0 ] ;
then
//echo 为输出到屏幕
echo "Please check your need software"
//exit 0 为强制终止脚本
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
}
echo "Please choose to install or uninstall? (Installation: 1 / Uninstall: 0)"
//接收键盘输入,并把输入的值存放在userinput变量中
read userinput
//判断变量的值
if [ "$userinput" == '1' ] ;
then
//判断文件是否存在
echo "I cann't find medical.tar.gz file." exit 0
chmod 755 medical.tar.gz tar zxvf medical.tar.gz fi ################################### Verify #################################
echo "Already installed JDK, please uninstall!" rollback; exit 0
echo "8080 port is occupied!" rollback; exit 0
echo "The system has been installed MySQL.Please run the uninstall!" rollback; exit 0
echo "/usr/tomcat-medical Directory exists" rollback; exit 0
echo "3306 port is occupied" rollback; exit 0 fi ##################################### JDK ################################ //赋权并安装jdk #########################################################################
echo "I cann't find JDK directory." rollback; exit 0 fi ############################## Environment Variables #########################
//将一段文本追加到指定文件尾部(写入环境变量)
cat >> /etc/profile << EFF
JAVA_HOME=/usr/java/jdk1.6.0_29
JRE_HOME=\$JAVA_HOME/jre
CLASSPATH=:\$JAVA_HOME/lib:\$JRE_HOME/lib
PATH=\$JAVA_HOME:/bin:\$JRE_HOME/bin:\$PATH
export JAVA_HOME JRE_HOME CLASSPATH PATH
EFF
//使环境变量立即生效
source /etc/profile
#########################################################################
echo "I cann't set java path." rollback; exit 0 fi ####################### Delete JDK Installation file #############################
################################# MySQL ##################################
################### Copy MySQL configuration file ##############################
################################ Tomcat ##################################
################################ Medical ##################################
########################### Change Password ################################
########################## Environment Variables #############################
//环境变量
cat >> /etc/profile << TTD TOMCAT_HOME=/usr/tomcat-medical/ PATH=\$PATH:\$TOMCAT_HOME/bin/:/usr/local/apache2/bin: export JAVA_HOME JRE_HOME CLASSPATH PATH TOMCAT_HOME TTD
#########################################################################
######################## Auto Start Up Services ###############################
########################################################################
//如果用户输入0的情况下执行卸载程序
elif [ "$userinput" == '0' ] ;
then
//如果用户输入的不是1或0则执行这里
else
echo "You can only enter 1 or 0."
fi
|
所有评论仅代表网友意见