很久没写bash了,写这个,主要为自动部署lamp环境。编译时的参数可以在数组里更改。大批量部署时,还是使用编译好的二进制文件就好,方便,快捷。
[root@VM1 bin]# cat install.sh
#!/bin/bash
#auto install LAMP
FILE_DIR=/usr/local/src INSTALL_DIR=/usr/local PACKAGE="tar.gz" VERSION=('2.2.14' '5.3.0' '5.1.42-linux-i686-icc-glibc23') #first is apache version ;2th is php;3th is mysql#
APACHE_a="httpd" APACHE_b="apache" PHP="php" MYSQL="mysql" TAR_ACT="tar -xzvf" APACHE_ARGV=('./configure --prefix=/usr/local/apache' 'hi') PHP_ARGV=('./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config' 'ok') ###############MYSQL################
mysql_install(){ if [[ -d $INSTALL_DIR/${MYSQL} ]] then echo "$MYSQL installed,please move it" exit 255 fi cd $FILE_DIR test -f ${MYSQL}-${VERSION[2]} &&rm -rf ${MYSQL}-${VERSION[2]} $TAR_ACT ${MYSQL}-${VERSION[2]}.${PACKAGE} cp -r ${MYSQL}-${VERSION[2]} $INSTALL_DIR/$MYSQL cp -r ${MYSQL}-${VERSION[2]}/support-files/mysql.server /etc/rc.d/init.d/mysql cp -r ${MYSQL}-${VERSION[2]}/support-files/my-huge.cnf /etc/my.cnf sed -i '/^log-bin=mysql-bin/i\ datadir=/data' /etc/my.cnf mkdir /data #groupadd mysql
#useradd -g mysql mysql
cd $INSTALL_DIR/$MYSQL chown -R mysql:mysql $INSTALL_DIR/$MYSQL chown -R mysql:mysql /data ./scripts/mysql_install_db --user=mysql
} ###############APACHE###############
apache_install(){ if [[ -d $INSTALL_DIR/${APACHE_b} ]] then echo "${APACHE_b} was installed,please move it" exit 255 fi cd $FILE_DIR test -f ${APACHE_a}-${VERSION[0]} &&rm -rf ${APACHE_a}-${VERSION[0]} $TAR_ACT ${APACHE_a}-${VERSION[0]}.${PACKAGE} cd ${APACHE_a}-${VERSION[0]} echo $APACHE_ARGV $1 make &&make install } ##################PHP##############
php_install(){ if [[ -d $INSTALL_DIR/${PHP} ]] then echo "$PHP installed,please move it" exit 255 fi cd $FILE_DIR test -f ${PHP}-${VERSION[1]} &&rm -rf ${PHP}-${VERSION[1]} $TAR_ACT ${PHP}-${VERSION[1]}.${PACKAGE} cd $FILE_DIR/$PHP-${VERSION[1]} $1 make &&make install echo install ok yes |cp -r php.ini-production $INSTALL/$PHP/lib/php.ini
} ##############main##################
cat<<! choose 'A --to install apahce' 'M --to install mysql' 'P --to install php' 'L --to install apache mysql php' 'Q -- to quit current shell' ! read -n1 -t10 -p "Choose one of L-A-M-P-W:::" line echo -e "\nyour input is $line\n" sleep 2 case $line in A) apache_install "${APACHE_ARGV[0]}" ;; Q) exit 0 ;; M) mysql_install ;; P) php_install "$PHP_ARGV{[0]}" ;; L) ##set configure in @APACHE_ARGV and @PHP_ARGV
#lamp_install
apache_install "${APACHE_ARGV[0]}" mysql_install php_install "$PHP_ARGV{[0]}"
;; *) echo 'your input have some mistake' exit ;; esac exit 0
|
阅读(538) | 评论(1) | 转发(0) |