lnmp mysql自动启动脚本_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 \nyour system is 32bit,but this script is only run on 64bit !\n \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\n the last commond exec failed,please check it !\e[0m \n"

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 \n"

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\n ---download nginx-1.4.7---\e[0m \n"

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\n ---download MySQL-5.5.39---\e[0m \n"

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\n ---download php-5.3.28---\e[0m \n"

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 \n"

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 \n ---check if there is already installed mysql instence---\e[0m\n"

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 \n mysqlbasedir is: "$mysqlbasedir"\n mysqldatadir is: "$mysqldatadir"\n do you still want to install a new mysql-server? \e[0m\n"

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!--- \n ---Do you really want to install a new mysql?--- \e[0m\n"

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\n"

sleep 1

#dependence_install;

echo "\e[1;32m ---add user mysql---\e[0m"

useradd mysql -s /sbin/nologin

echo "\e[1;32m\n ---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\n ---detected /etc/my.cnf is already exit,rename it to /etc/my.cnf.bak--- \e[0m \n"

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\n ---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 \n 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 \n"

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 \n"

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 \n"

sleep 1

make &> /tmp/configure_nginx.log

check;

echo "\e[1;32m ---make install: install into /usr/local/nginx--- \e[0m \n"

sleep 1

make install &> /tmp/make_install.log

check;

echo "\e[1;32m nginx is installed successfully \e[0m \n"

}

### 定义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 \n"

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 \n"

make &> /tmp/php_make.log

check;

###make install

echo "\e[1;32m ---make install php: install into /usr/local/php--- \n ---php cofigure file in the /usr/local/php/etc--- \e[0m \n"

make install > /tmp/make_install_php.log

check;

echo "\e[1;32m ---prepare php configure files--- \e[0m \n"

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\n php is installed successfully!\n 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\n ---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\n JRE is installed success !\e[0m"

echo "\e[1;32m\n ---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\n"

}

###下面开始选择那些软件需要安装

echo "\e[1;31m\n ---选择哪些软件需要安装--- \e[0m \n"

echo "\e[1;32m \"Nginx\" INPUT \"1\" \e[0m \n"

echo "\e[1;32m \"Mysql\" INPUT \"2\" \e[0m \n"

echo "\e[1;32m \"Php\" INPUT \"3\" \e[0m \n"

echo "\e[1;32m \"JRE\" INPUT \"4\" \e[0m \n"

#echo "\e[1;32m \"Tomcat\" INPUT \"5\" \e[0m \n"

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\n php needs mysqlclient \e[0m"

echo "\e[1;32m so if you had already install a mysqlclient\n please make a softlink for all \"libmysqlclient.so.*\" file to both /var/lib64 and /var/lib \e[0m\n"

echo "\e[1;31m Please input your choice\n\e[0m \e[1;32m1: go on by default\(install mysql-client-5.5.39\)\n 2: I will check my \"libmysqlclient.so.*\" file and redo this script later\n 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\n ---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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值