LNMP自動配置スクリプト


私たちの業務はnginx、mysql、php、tomcatを使って、これらのソフトウェアを自動化してインストールするスクリプトを書いて、ネット上で似たような自動インストールスクリプトがたくさんありますが、これは自分で書いたので、特にmarkして、他の人に参考にしてほしいと思って、同時によく見ている友达に改善意見を提出します.あまり話さないで、スクリプトに直接行きます.
#!/bin/sh
    alias echo='echo -e'
    ###    ,       64   
    machine=`uname -m`
    if [ $machine != x86_64 ] ;then
       echo "\e[1;31m 
your system is 32bit,but this script is only run on 64bit !
 \e[0m"        exit -1     fi      ###     mkdir /usr/local/src/auto_install &> /dev/null     source_dir=/usr/local/src/auto_install     ### function interact {     echo "Please input \"yes\" or \"no\""     read choice     case "$choice" in        no)           exit 0;;        yes)           echo;;         *)       echo "\e[1;31mInput Errot! \e[0m"           exit -1;;     esac }      ###  function check {    if [ $? -ne 0 ];then         echo  "\e[1;31m
 the last commond exec failed,please check it !\e[0m 
"     sleep 1     exit -1    fi } ###  ( , ) function download_install_epel {     cd $source_dir     rm -f epel* &> /dev/null     echo "\e[1;32m ---yum install epel repo--- \e[0m 
"             sys_version=`uname -r|cut -d '.' -f 4`     if [ $sys_version = el7 ];then        rpm -qa|grep -i epel > /dev/null        if [ $? -ne 0 ];then           wget -nv http://www.example.com/epel-release-7-2.noarch.rpm           rpm -ivh $source_dir/epel-release-7-1.noarch.rpm           check;        fi     elif [ $sys_version = el6 ];then        rpm -qa|grep -i epel > /dev/null        if [ $? -ne 0 ];then           wget -nv http://www.example.com/epel-release-6-8.noarch.rpm           rpm -ivh $source_dir/epel-release-6-8.noarch.rpm           check;        fi     fi } function download_nginx {    cd $source_dir    echo  "\e[1;32m
 ---download nginx-1.4.7---\e[0m 
"    ls  nginx-1.4.7.tar.gz &> /dev/null     if [ $? -ne 0 ];then           wget -nv  http://www.example.com/nginx-1.4.7.tar.gz           check;     fi } function download_mysql {    cd $source_dir    echo  "\e[1;32m
 ---download MySQL-5.5.39---\e[0m 
"    ls mysql-5.5.39-linux2.6-x86_64.tar.gz &> /dev/null     if [ $? -ne 0 ];then           wget -nv  http://www.example.com/mysql-5.5.39-linux2.6-x86_64.tar.gz           check;     fi } function download_php {    cd $source_dir    echo  "\e[1;32m
 ---download php-5.3.28---\e[0m 
"    ls php-5.3.28.tar.gz &> /dev/null     if [ $? -ne 0 ];then            wget -nv  http://www.example.com/php-5.3.28.tar.gz            check;     fi } function download_jre {     cd $source_dir     echo "\e[1;32m ---download jre-6u33-linux-x64.bin---\e[0m"     sleep 1     ls jre-6u33-linux-x64.bin &> /dev/null     if [ $? -ne 0 ];then        wget -nv  http://www.example.com/jre-6u33-linux-x64.bin        check;     fi }        ### function dependence_install {     download_install_epel;     echo "\e[1;32m ---yum install the Dependencies software--- \e[0m 
"       sleep 1     pgrep yum|xargs kill -9 > /dev/null     rm -f /var/run/yum.pid > /dev/null     echo "yum install gcc zlib cmake libxml2 libxml2-devel bzip2 bzip2-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype-devel pspell-devel libmcrypt libm crypt-devel freetype pcre-devel openssl openssl-devel libaio*"     yum -y install gcc zlib cmake libxml2 libxml2-devel bzip2 bzip2-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype-devel pspell-devel libmcrypt libmcry pt-devel freetype pcre-devel openssl openssl-devel libaio* >/dev/null 2>&1     check; }        ###  mysql ### function mysql_install {             ### mysql, mysql###        ### mysql     echo "\e[1;32m 
 ---check if there is already installed mysql instence---\e[0m
"     ps -ef|grep -w mysqld|grep -v "grep" &> /dev/null     if [ $? -eq 0 ];then        mysqlbasedir=`ps -ef|grep -w "mysqld"|grep -v "grep"|awk '{print $9}'|tr -d '\-\-'`        mysqldatadir=`ps -ef|grep -w "mysqld"|grep -v "grep"|awk '{print $10}'|tr -d '\-\-'`        echo "\e[1;32m your system has run a mysql instance already 
 mysqlbasedir is: "$mysqlbasedir"
 mysqldatadir is: "$mysqldatadir"
 do you still want to install a new mysql-server? \e[0m
"        interact;     fi         ### rpm mysql      echo "MySQL-server-5.5.39-2.el6.x86_64.rpm"|while read line      do          prefix=`echo "$line"|awk -F "-" '{print $1"-"$2}'`                             ##to get like "MySQL-server"          rpm -qa|grep -i "$prefix" &> /tmp/check_mysql.log      if [ $? -eq 0 ];then            already_install=`cat /tmp/check_mysql.log|awk -F "-" '{print $1"-"$2"-"$3}'`   ##to get the already installed mysql version            echo "\e[1;31m ---the $already_install is already installed by rpm!--- 
 ---Do you really want to install a new mysql?--- \e[0m
"            interact;          fi       done         ### chkconfig mysql     chkconfig |grep mysql|awk '{print $5" "$7}'|grep -e " " -e "on" &> /dev/null     if [ $? -eq 0 ];then        echo " there is a bootstart mysql script in the chkconfig,please check"        exit 0     fi                 ### /etc/rc.local mysql     cat /etc/rc.local|grep "mysqld" &> /dev/null     if [ $? -eq 0 ];then        echo " there is a bootstart mysql commond in the /etc/rc.local,please check it"        exit 0     fi            ###### ######          ### mysql-lib-5.1,     rpm -qa|grep -i -e "mysql.*5\.1.*"|xargs rpm -e --nodeps 2> /dev/null         ### mysql     echo  "\e[1;31m where do you want to install mysql(default is /usr/local/mysql)\e[0m"     read mybasedir     if [ "$mybasedir" = "" ];then        mybasedir=/usr/local/mysql     fi        ### data     echo  "\e[1;31m where do you want to storage mysql data(default is /usr/local/mysql/data)\e[0m"     read mydatadir     if [ "$mydatadir" = "" ];then        mydatadir=/usr/local/mysql/data     fi                 ### mysql     echo "\e[1;32m ---now start to install mysql---\e[0m
"     sleep 1     #dependence_install;     echo "\e[1;32m ---add user mysql---\e[0m"     useradd mysql -s /sbin/nologin          echo "\e[1;32m
 ---unpack mysql-5.5.39-linux2.6-x86_64.tar.gz---\e[0m"     cd $source_dir     tar zxf mysql-5.5.39-linux2.6-x86_64.tar.gz     check;     rm -rf $mybasedir     mv mysql-5.5.39-linux2.6-x86_64 $mybasedir             ### /etc my.cnf, , my.cnf.bak     ls /etc/my.cnf &> /dev/null     if [ $? = 0 ];then        \mv /etc/my.cnf /etc/my.cnf.bak        echo "\e[1;32m
 ---detected /etc/my.cnf is already exit,rename it to /etc/my.cnf.bak--- \e[0m 
"     fi     cp $mybasedir/support-files/my-huge.cnf /etc/my.cnf        ### /etc/init.d/     ls /etc/init.d/mysql &> /dev/null     if [ $? = 0 ];then        \mv /etc/init.d/mysql /etc/init.d/mysql.bak        echo "\e[1;32m ---detected /etc/init.d/mysql is already exit,rename it to /etc/init.d/mysql.bak---\e[0m"     fi     cp $mybasedir/support-files/mysql.server /etc/init.d/mysql        ### /etc/init.d/mysql basedir datadir     sed -i -e "/^basedir*=$/i\basedir=$mybasedir" -e "/^datadir*=$/i\datadir=$mydatadir" /etc/init.d/mysql     sed -i -e '/^basedir*=$/d' -e '/^datadir*=$/d' /etc/init.d/mysql           ###     echo "\e[1;32m
 ---initialize mysql database---\e[0m"     sleep 1     chown -R mysql $mydatadir $mybasedir >/dev/null 2>&1     $mybasedir/scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql --basedir=$mybasedir --datadir=$mydatadir     check;        ### basedir/bin/ PATH     echo "PATH=$PATH:$mybasedir/bin" >> /etc/profile     export PATH=$PATH:$mybasedir/bin          echo "\e[1;32m install mysql success,you can run \"service mysql start\" to start the mysql 
 do not forget to set a password for mysql \e[0m"     ### mysql }     ###  nginx function nginx_install {     echo     echo "\e[1;32m ---start installing nginx,it's basedir is /usr/local/nginx--- \e[0m 
"     sleep 1     cd $source_dir     ls -l |grep "^d"|grep nginx|xargs rm -rf &> /dev/null     tar zxf nginx-1.4.7.tar.gz     check;     cd nginx-1.4.7 echo "\e[1;32m ---configure: configure information in /tmp/configure_nginx.log--- \e[0m 
"     sleep 1     ./configure --with-http_stub_status_module  --prefix=/usr/local/nginx &> /tmp/configure_nginx.log     check; echo "\e[1;32m ---make: make information in /tmp/make_nginx.log--- \e[0m 
"     sleep 1     make &> /tmp/configure_nginx.log     check; echo "\e[1;32m ---make install: install into /usr/local/nginx--- \e[0m 
"     sleep 1     make install &> /tmp/make_install.log     check;     echo "\e[1;32m nginx is installed successfully \e[0m 
" }     ###  php function php_install {     dependence_install;     cd $source_dir     ls -l |grep "^d"|grep php|xargs rm -rf &> /dev/null     tar zxvf php-5.3.28.tar.gz &> /dev/null     check;     cd php-5.3.28     echo     echo "\e[1;32m ---configure php: information in /tmp/php_configure.log--- \e[0m 
"     echo "./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql --with-mysqli  --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-iconv-dir=/usr/local --with-zlib --enable-zip --with-curl"     ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql --with-mysqli  --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-iconv-dir=/usr/local --with-zlib --enable-zip --with-curl &> /tmp/php_configure.log     check;          ###make     echo "\e[1;32m ---make php: information in /tmp/php_make.log--- \e[0m 
"     make &> /tmp/php_make.log     check;     ###make install     echo "\e[1;32m ---make install php: install into /usr/local/php--- 
 ---php cofigure file in the /usr/local/php/etc--- \e[0m 
"     make install > /tmp/make_install_php.log     check;          echo "\e[1;32m ---prepare php configure files--- \e[0m 
"     echo "cp $source_dir/php-5.3.28/php.ini-production /usr/local/php/etc/php.ini"     cp php.ini-production /usr/local/php/etc/php.ini     echo "cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf"     cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf     echo "\e[1;32m
 php is installed successfully!
 now,please start php and modification the php.ini \e[0m" }     ### jre function jre_install {     ### java     rpm -qa|grep java|xargs rpm -e --nodeps          cd $source_dir     rm -rf jre1.6.0_33 &> /dev/null     chmod +x jre-6u33-linux-x64.bin &> /dev/null     ./jre-6u33-linux-x64.bin >/dev/null 2>&1     check;     ls -d /usr/java     if [ $? -ne 0 ];then        mkdir /usr/java &> /dev/null     else        echo echo "\e[1;31m /usr/java has already exits,move to /usr/java_bak !\e[0m"        mkdir /usr/java_bak  &> /dev/null        mv /usr/java/* /usr/java_bak/     fi     mv  jre1.6.0_33 /usr/java/     echo "\e[1;32m
 ---add java path to /etc/profile---\e[0m"     sleep 1          echo  >>/etc/profile     echo 'JAVA_HOME=/usr/java/jre1.6.0_33'>>/etc/profile     echo 'CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar'>>/etc/profile     echo 'PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:$JAVA_HOME/jre/bin'>>/etc/profile     echo 'export  PATH JAVA_HOME'>>/etc/profile     source /etc/profile     echo "\e[1;32m
 JRE is installed success !\e[0m"     echo "\e[1;32m
 ---install cronolog---\e[0m"     wget -nv http://www.example.com/cronolog-1.6.2.tar.gz     dependence_install;     tar zxf cronolog-1.6.2.tar.gz     cd cronolog-1.6.2     ./configure &> /tmp/cronolog_configure.log && make > /dev/null && make install > /dev/null     check;     echo "\e[1;32m cronolog is installed success\e[0m
" }     ### echo "\e[1;31m
 --- --- \e[0m 
" echo "\e[1;32m \"Nginx\"      INPUT \"1\" \e[0m 
" echo "\e[1;32m \"Mysql\"      INPUT \"2\" \e[0m 
" echo "\e[1;32m \"Php\"        INPUT \"3\" \e[0m 
" echo "\e[1;32m \"JRE\"        INPUT \"4\" \e[0m 
" #echo "\e[1;32m \"Tomcat\"     INPUT \"5\" \e[0m 
" read -p "please choice which software do you want to install ?" input          if [ $input = 1 ];then            download_nginx;            dependence_install;            nginx_install;     elif [ $input = 2 ];then        download_mysql;            mysql_install;     elif [ $input = 3 ];then            echo "\e[1;32m
 php needs mysqlclient \e[0m"            echo "\e[1;32m so if you had already install a mysqlclient
 please make a softlink for all \"libmysqlclient.so.*\" file to both /var/lib64 and /var/lib \e[0m
"            echo "\e[1;31m Please input your choice
\e[0m \e[1;32m1: go on by default\(install mysql-client-5.5.39\)
 2: I will check my \"libmysqlclient.so.*\" file and redo this script later
 3: I had make the softlinks and I want to going on \e[0m"            read choice            case "$choice" in              1)                cd $sourcedir                echo "\e[1;32m ---download mysql-client rpm files---\e[0m"                wget -nv http://www.example.com/MySQL-client-5.5.39-2.el6.x86_64.rpm                wget -nv http://www.example.com/MySQL-devel-5.5.39-2.el6.x86_64.rpm                wget -nv http://www.example.com/MySQL-shared-5.5.39-2.el6.x86_64.rpm                echo "\e[1;32m
 ---install mysql-client in the way of rpm---\e[0m"                sleep 1                rpm -ivh MySQL-client-5.5.39-2.el6.x86_64.rpm MySQL-devel-5.5.39-2.el6.x86_64.rpm MySQL-shared-5.5.39-2.el6.x86_64.rpm                download_php;                ###make soft link from /usr/lib64/libmysqlclient* to /usr/lib/                ls -l /usr/lib64/libmysqlclient*|grep -v "^l"|awk '{print $NF}'|while read line                  do                    usrlib_fulldir=`ls -l /usr/lib64/libmysqlclient*|grep -v "^l"|awk '{print $NF}'|sed 's/lib64/lib/'`                    ln -s $line $usrlib_fulldir                  done                                php_install;                ;;             2)                exit 0;;             3)                download_php;                php_install;                ;;             *)                echo "Input Errot!" && exit -1;;           esac           elif [ $input = 4 ];then            download_jre;            jre_install;      else        echo "\e[1;31m your input is worng!\e[0m"        sleep 1        exit -1      fi