使用shell指令碼安裝軟體部署javaweb程式
阿新 • • 發佈:2019-01-27
#!/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 //判斷檔案是否存在 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 755 jdk-6u29-linux-i586-rpm.bin ./jdk-6u29-linux-i586-rpm.bin //安裝jdk的時候需要回車確認一下jdk的許可協議 ######################################################################### //rpm包的jdk安裝完成會自動生成 java/jdk**** 的資料夾,判斷是否生成了jdk資料夾 if [ ! -d java/jdk1.6* ] ; then 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 ######################################################################### //判斷環境變數是否已經生效 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 755 MySQL-server-5.5.31-2.rhel5.i386.rpm rpm -ivh MySQL-server-5.5.31-2.rhel5.i386.rpm ################### Copy MySQL configuration file ############################## //將一份已經準備好的配置檔案替換mysql現有配置檔案 chmod 755 mysql.cnf cp mysql.cnf /usr/share/mysql/my-medium.cnf cp mysql.cnf /etc/my.cnf //啟動或重啟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 fi //安裝mysql使用者端 chmod 755 MySQL-client-5.5.31-2.rhel5.i386.rpm rpm -ivh MySQL-client-5.5.31-2.rhel5.i386.rpm ################################ Tomcat ################################## //賦權並解壓tomcat chmod 755 apache-tomcat*.tar* tar zxvf apache-tomcat*.tar* mv apache-tomcat-6.0.32/ /usr/tomcat-medical/ ################################ Medical ################################## //賦權並解壓應用到tomcat/webapps目錄下 chmod 755 medical.zip unzip medical.zip -d /usr/tomcat-medical/webapps/ //判斷當前目錄下是否存在Install.zdt檔案,存在則copy檔案到指定目錄下 if [ -e Install.zdt ] ; then cp Install.zdt /usr/tomcat-medical/webapps/medical/WEB-INF/data/installer/ fi ########################### Change Password ################################ //等待5秒 sleep 5 //mysql預設密碼為空,修改mysql密碼(需要當前使用者有mysql執行許可權) mysqladmin flush-privileges 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 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 ############################### //把tomcat啟動指令碼加入rc.local檔案中實現開機自動啟動 cat >> /etc/rc.local << ASU /usr/tomcat-medical/bin/startup.sh ASU //設定mysql服務開機自動啟動 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 rm -rf /usr/tomcat-medical/ echo "Uninstalling JDK......" rpm -e jdk-1.6.0_29-fcs.i586 echo "Uninstalling MySQL......" netstat -apn | grep 3306 if [ "$?" == 0 ] ; then 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 is complete please modify environment variables." //如果使用者輸入的不是1或0則執行這裡 else echo "You can only enter 1 or 0." fi