team470 发表于 2015-8-19 12:41:54

【运维网】自动化之LAMP部署


[*]###################################auto_lamp.sh##########################################
[*]
[*]#!/bin/bash
[*]# -*- coding: utf-8 -*-
[*]#-------------------------------------------------------------------------------
[*]# Name:      auto_lamp.sh
[*]# Purpose:
[*]#
[*]# Author:      hjjie2006.cublog.cn
[*]# Mail:      hjjie2006@126.com
[*]# Created:   01/10/2011
[*]# Copyright:(c) hjjie 2011
[*]#
[*]#-------------------------------------------------------------------------------
[*]# -*- coding: utf-8 -*-
[*]#设定所需的安装包
[*]#安装前请准备以下源码包对于GD库的安装则调用另一个脚本 因此将gdsetup.sh与包放同一目录当中
[*]MYSQL_PKG='mysql-5.1.36.tar.gz'
[*]HTTPD_PKG='httpd-2.2.11.tar.gz'
[*]PHP_PKG='php-5.2.10.tar.gz'
[*]
[*]##下面这部分是GD库所需的源码包
[*]##ZLIB_PKG='zlib-1.2.3.tar.gz'
[*]##PNG_PKG='libpng-1.2.26.tar.gz'
[*]##FREETYPE_PKG='freetype-2.3.5.tar.gz'
[*]##JPEG_PKG='jpegsrc.v6b.tar.gz'
[*]##FRONTCONF_PKG='fontconfig-2.4.2.tar.gz'
[*]##GD_PKG='gd-2.0.35.tar.gz'
[*]###对于GD安装时报错时安装
[*]##GETTEXT_PKG='gettext-0.17.tar.gz'
[*]##LIBXML='libxml2-2.6.31.tar.gz'
[*]
[*]##提供的http 地址 用于下载源码包
[*]##HTTP_DOWNLOAD=192.168.166.173/install
[*]#-------------------------------------------------------------------------------
[*]#源码包存放在当前脚本所在位置
[*]PKG_PATH=$(pwd)
[*]#GD库安装脚本
[*]GDLIB_SETUP=$PKG_PATH/gdsetup.sh
[*]
[*]#defined Installation path
[*]#mysql Installation path
[*]MYSQL_PATH=/usr/local/mysql
[*]#mysql data Installation path
[*]MYSQL_DATADIR=${MYSQL_PATH}/var
[*]#apache Installation path
[*]HTTPD_PATH=/usr/local/apache2
[*]#gdlibInstallation path
[*]GDLIB_PATH=/usr/local/libgd #此处如果时需要将GD库安装脚本也一并修改
[*]#phpInstallation path
[*]PHP_PATH=/usr/local/php #如果GD库中各相关库路径有改动 需要将php编译参数中也一并修改
[*]#mysql 运行用户
[*]MYSQL_USER=mysql
[*]MYSQL_GROUP=mysql
[*]#-------------------------------------------------------------------------------
[*]
[*]#去除tar.gz
[*]MYSQL_PKG_=$(echo $MYSQL_PKG |sed 's/.tar.gz//')
[*]HTTPD_PKG_=$(echo $HTTPD_PKG |sed 's/.tar.gz//')
[*]PHP_PKG_=$(echo $PHP_PKG |sed 's/.tar.gz//')
[*]
[*]cat << EOF
[*]#############################################
[*]1.$MYSQL_PKG_ install
[*]2.$HTTPD_PKG_ install
[*]3.GD-lib install
[*]4.$PHP_PKG_ install
[*]5.LAMP Environment install
[*]#############################################
[*]EOF
[*]
[*]#Color select
[*]result_output(){
[*]
[*]
[*]    if [ $1 = failed   ];then#红色 失败#
[*]      if [ -z "$2" ];then
[*]            echo -e "[$1]\033] \033[39;49;0m"
[*]      else
[*]            echo -e "[$1]\033] \033[39;49;0m"
[*]      fi
[*]    elif    [ $1 = ok ];then      #绿色 成功#
[*]      if [ -z "$2" ];then
[*]            echo -e "[$1]\033] \033[39;49;0m"
[*]      else
[*]            echo -e "[$1]\033] \033[39;49;0m"
[*]      fi
[*]    elif    [ $1 = warn ];then      #蓝色背景 红色前景 用于警告
[*]      if [ -z "$2" ];then
[*]            echo -e "[$1]\033] \033[0m"
[*]      else
[*]            echo -e "[$1]\033] \033[0m"
[*]      fi
[*]    fi
[*]}
[*]
[*]#退出状态检查
[*]exec_check(){
[*]    if [ $? != 0 ];then
[*]      result_output failed
[*]      exit 1
[*]    else
[*]      result_output ok
[*]      sleep 1
[*]    fi
[*]}
[*]
[*]#检查相关RPM是否安装 remove
[*]rpm_exist_check(){
[*]rpm_is_exist=$(rpm -qa | grep $rpm_info)
[*]    if [ ! -z "$rpm_is_exist" ];then
[*]      yum -y removemysql-server
[*]    fi
[*]}
[*]
[*]#检查文件是否存在/不存在进行下载
[*]file_exist_check(){
[*]
[*]    if [ -f $file_name ];then
[*]      result_output ok "$file_nameis already exist"
[*]    else
[*]      result_output failed "$file_name is notexist"
[*]      result_output warn "Please Download $file_name ..."
[*]      exit 1
[*]    fi
[*]}
[*]
[*]#检查是否已经安装
[*]installpath_exist_check(){
[*]    if [ -d $install_path ];then
[*]      result_output warn "$install_path already exists!!!!"
[*]      if [ "$select_name" == "LAMP environment" ];then
[*]      cat << EOF
[*]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[*]
[*] will be removed $install_path; and continue this
[*] will be quit this install and continue Next-install !!
[*]Do not select everying,installation program will
[*]
[*]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[*]EOF
[*]      else
[*]      cat << EOF
[*]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[*]
[*] will be removed $install_path; and continue this
[*]Do not select everying,installation program will
[*]
[*]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[*]EOF
[*]      fi
[*]      read -p "Please enter your select:" s
[*]      if ["$s" == "r" -o"$s" == "R" ];then
[*]            echo "Remove $install_path"
[*]            sleep 1
[*]            rm -rf $install_path
[*]      elif [ "$s" == "c" -o "$s" == "C" ];then
[*]            result_output ok "Conntinue next install ...."
[*]            echo
[*]            return_set=1 #if the return_setvalue is not null ; the install function whill break
[*]      else
[*]            echo "Do not select everying,installation program quit!\n"
[*]            exit 0
[*]      fi
[*]    fi
[*]}
[*]#Mysql安装
[*]mysql_install(){
[*]    install_path="$MYSQL_PATH"
[*]    installpath_exist_check
[*]    if [ ! -z $return_set ];then
[*]      return_set='' #设置变量 return_set='' 初始化为空
[*]      return 1    #break
[*]    fi
[*]    rpm_info="mysql-server"
[*]    rpm_exist_check
[*]    #用户检查/添加
[*]    group_mysql_exist=$(grep mysql /etc/passwd)
[*]    user_mysql_exist=$(cat /etc/passwd | grep mysql)
[*]    if [ -z "$group_mysql_exist" ];then
[*]      groupadd $MYSQL_USER
[*]      else
[*]      result_output warn "group $MYSQL_GROUP is already exist"
[*]    fi
[*]
[*]    if [ -z "$user_mysql_exist" ];then
[*]      useradd $MYSQL_USER -c "start mysqld's account" -d /dev/null -g $MYSQL_GROUP -s /sbin/nologin
[*]    else
[*]      result_output warn "user $MYSQL_USER is already exist"
[*]    fi
[*]
[*]    file_name=$MYSQL_PKG
[*]    file_exist_check
[*]
[*]    tar zxvf $PKG_PATH/$MYSQL_PKG
[*]    cd $PKG_PATH/$MYSQL_PKG_
[*]
[*]    cd $PKG_PATH/$MYSQL_PKG_
[*]    exec_check
[*]
[*]
[*]    ./configure\
[*]    --prefix=$MYSQL_PATH \
[*]    --enable-thread-safe-client \
[*]    --with-charset=utf8 \
[*]    --with-extra-charsets=all \
[*]    --enable-assembler
[*]    exec_check
[*]
[*]    make&& make install
[*]    exec_check
[*]
[*]    rm -f /etc/my.cnf
[*]    cp support-files/my-medium.cnf /etc/my.cnf
[*]    $MYSQL_PATH/bin/mysql_install_db --user=$MYSQL_USER
[*]    chown -R root:$MYSQL_GROUP$MYSQL_PATH
[*]    chown -R $MYSQL_USER:$MYSQL_GROU$MYSQL_DATADIR
[*]    result_output ok "$MYSQL_PKG is complete install"
[*]}
[*]
[*]#apache 安装
[*]apache_install(){
[*]
[*]    install_path="$HTTPD_PATH"
[*]    installpath_exist_check
[*]    if [ ! -z $return_set ];then
[*]      return_set=''
[*]      return 1
[*]    fi
[*]
[*]    rpm_info="http"
[*]    rpm_exist_check
[*]
[*]    file_name=$HTTPD_PKG
[*]    file_exist_check
[*]
[*]    tar zxvf $HTTPD_PKG
[*]    cd $PKG_PATH/$HTTPD_PKG_
[*]
[*]
[*]    ./configure --prefix=$HTTPD_PATH \
[*]    --enable-so \
[*]    --enable-rewrite
[*]
[*]    exec_check
[*]    make&& make install
[*]    exec_check
[*]
[*]    result_output ok "$HTTPD_PKG_ is complete install"
[*]}
[*]
[*]#GD 库安装
[*]gdlib_install(){
[*]
[*]    exec_check(){
[*]      if [ $? != 0 ];then
[*]            result_output failed "Num:$num   命令:$cmd   执行结果:FAILED"
[*]            exit 1
[*]      else
[*]            result_output ok "Num:$num   命令:$cmd   执行结果:OK"
[*]            sleep 2
[*]      fi
[*]    }
[*]    install_path="$GDLIB_PATH"
[*]    installpath_exist_check
[*]    if [ ! -z $return_set ];then
[*]      return_set=''
[*]      return 1
[*]    fi
[*]    #安装GD库时产生的临时文件- 记录执行的单条命令
[*]    GDLIB_CMD=${PKG_PATH}/gdlib_cmd
[*]    #安装GD库时中间如果报错然后去再次执行时 就从报错的那断
[*]    GDLIB_LABLE=${PKG_PATH}/gdlib_lable
[*]    #对执行到的命令行数进行记录
[*]    GDLIB_NUM=${PKG_PATH}/gdlib_num
[*]    #记录执行过程中最近一次的cd目录
[*]    GDLIB_PWD=${PKG_PATH}/gdlib_pwd
[*]    #将GD安装脚本清理注释
[*]    GDLIB_SETUP_TEMP=${PKG_PATH}/gdlib_setup_temp
[*]    grep -v '^$' $GDLIB_SETUP | grep -v '^#' > $GDLIB_SETUP_TEMP
[*]
[*]    IFS=$'\n'
[*]    error_info=''
[*]    num=0
[*]    if [ -s $GDLIB_LABLE ];then
[*]      GDLIB_SETUP=$GDLIB_LABLE
[*]      num=$(expr $(cat $GDLIB_NUM) - 1)
[*]      cd $(cat $GDLIB_PWD)
[*]    fi
[*]    for cmd in $(grep -v '^$' $GDLIB_SETUP | grep -v '^#');do
[*]      sleep 0.5
[*]
[*]      echo "$cmd" > $GDLIB_CMD
[*]      num=$(expr $num + 1)
[*]      echo $num > $GDLIB_NUM
[*]      #echo -n "$num"
[*]      sed -n"$num",'$p' $GDLIB_SETUP_TEMP > $GDLIB_LABLE
[*]      #exec_check
[*]      if grep 'cd' $GDLIB_CMD >/dev/null;then
[*]            source $GDLIB_CMD
[*]            tem_dir=$(pwd)
[*]            echo $tem_dir > $GDLIB_PWD
[*]            #echo "tem_dir==$tem_dir"
[*]            cd $tem_dir
[*]            exec_check
[*]            continue
[*]      elif grep 'tar' $GDLIB_CMD >/dev/null;then
[*]            cd $PKG_PATH
[*]      fi
[*]      sh $GDLIB_CMD
[*]      exec_check
[*]    done
[*]    rm -rf $GDLIB_LABLE
[*]    rm -rf $GDLIB_NUM
[*]    rm -rf $GDLIB_CMD
[*]    rm -rf $GDLIB_SETUP_TEMP
[*]    rm -rf $GDLIB_PWD
[*]    cmd=''
[*]    result_output ok "GD Install Successful!!!"
[*]    IFS=$' \t\n'
[*]}
[*]
[*]#PHP安装
[*]php_install(){
[*]    install_path="$PHP_PATH"
[*]    installpath_exist_check
[*]    if [ ! -z $return_set ];then
[*]      return_set=''
[*]      return 1
[*]    fi
[*]    error_info=''
[*]    if ! $GDLIB_PATH/bin/gdlib-config--version >/dev/null;then
[*]      result_output failed "GD_LIBerror or not installed"
[*]      exit 1
[*]    fi
[*]    if ! $MYSQL_PATH/bin/mysql -V>/dev/null;then
[*]      result_output failed "$MYSQL_PKG_error or not installed"
[*]      exit 1
[*]    fi
[*]    if ! $HTTPD_PATH/bin/apachectl -v>/dev/null;then
[*]      result_output failed "$HTTPD_PKG_error or not installed"
[*]      exit 1
[*]    fi
[*]
[*]    install_path="$PHP_PATH"
[*]    installpath_exist_check
[*]
[*]    tar -xzvf $PKG_PATCH/$PHP_PKG
[*]    cd $PKG_PATH/$PHP_PKG_
[*]    ./configure--prefix=$PHP_PATH \
[*]    --with-apxs2=$HTTPD_PATH/bin/apxs\
[*]    --with-mysql=$MYSQL_PATH\
[*]    --with-gd=/usr/local/libgd\
[*]    --enable-gd-native-ttf\
[*]    --with-ttf\
[*]    --enable-ftp    \
[*]    --enable-gd-jis-conv\
[*]    --with-freetype-dir=/usr/local/freetype\
[*]    --with-jpeg-dir=/usr/local/libjpeg\
[*]    --with-png-dir=/usr   \
[*]    --with-zlib-dir=/usr/local/zlib   \
[*]    --enable-xml\
[*]    --enable-mbstring\
[*]    --enable-sockets
[*]    exec_check
[*]    make && make install
[*]    exec_check
[*]    cp php.ini-dist /usr/local/php/lib/php.ini
[*]    exec_check
[*]}
[*]#LAMP
[*]lamp_install(){
[*]    #如果已安装则跳过 继续安装下面部分
[*]    mysql_install
[*]    apache_install
[*]    gdlib_install
[*]    php_install
[*]}
[*]
[*]case_select(){
[*]    read -p "Are you sure install the $select_name ?" s
[*]    if [ "$s" == "y" -o "$s" == "Y" ];then
[*]            $select_install
[*]    else
[*]            echo "Do not select ,installation program quit!\n"
[*]            exit 1
[*]    fi
[*]    }
[*]read -p "Please enter the installation program number:" n
[*]
[*]case $n in
[*]    1)
[*]      select_name=$MYSQL_PKG_
[*]      select_install=mysql_install
[*]      case_select
[*]      ;;
[*]    2)
[*]      select_name=$HTTPD_PKG_
[*]      select_install=apache_install
[*]      case_select
[*]      ;;
[*]    3)
[*]      select_name=gdlib
[*]      select_install=gdlib_install
[*]      case_select
[*]      ;;
[*]    4)
[*]      select_name=$PHP_PKG_
[*]      select_install=php_install
[*]      case_select
[*]      ;;
[*]    5)
[*]      select_name="LAMP environment"
[*]      select_install=lamp_install
[*]      case_select
[*]      ;;
[*]    *)
[*]      echo "Do not select ,installation program quit!\n"
[*]      exit 1
[*]esac
[*]
[*]
[*]
[*]####这里是另一个脚本##这里是另一个脚本###gdsetup.sh###这里是另一个脚本#####这里是另一个脚本###
[*]#!/bin/bash
[*]# -*- coding: utf-8 -*-
[*]#-------------------------------------------------------------------------------
[*]# Name:      gdsetup.sh
[*]# Purpose:
[*]# Author:      hjjie.cublog.cn
[*]# Mail:      hjjie2006@126.com
[*]#
[*]# Created:   28/09/2011
[*]# Copyright:(c) Jerome 2011
[*]#
[*]#-------------------------------------------------------------------------------
[*]#(1).安装zlib
[*]tar-xzvf zlib-1.2.3.tar.gz
[*]cdzlib-1.2.3
[*]./configure --prefix=/usr/local/zlib
[*]make&&make install
[*]
[*]#(2).安装libpng
[*]tar zxvf libpng-1.2.26.tar.gz
[*]cd libpng-1.2.26/scripts/
[*]mv makefile.linux ../makefile
[*]cd ..
[*]make && make install
[*]#注意,这里的makefile不是用./configure生成,而是直接从scripts/里拷一个
[*]
[*]#3).安装freetype
[*]tar -xzvf freetype-2.3.5.tar.gz
[*]cd freetype-2.3.5
[*]./configure --prefix=/usr/local/freetype
[*]make && make install
[*]
[*]#4).安装Jpeg
[*]tar -zxvf jpegsrc.v6b.tar.gz
[*]cd jpeg-6b/
[*]mkdir -p /usr/local/libjpeg
[*]mkdir -p /usr/local/libjpeg/include
[*]mkdir -p /usr/local/libjpeg/bin
[*]mkdir -p /usr/local/libjpeg/lib
[*]mkdir -p /usr/local/libjpeg/man
[*]mkdir -p /usr/local/libjpeg/man/man1
[*]./configure --prefix=/usr/local/libjpeg--enable-shared--enable-static
[*]make && make install
[*]#注意,这里configure一定要带--enable-shared参数,不然,不会生成共享库
[*]
[*]#5).安装Fontconfig
[*]tar -zxvf fontconfig-2.4.2.tar.gz
[*]cd fontconfig-2.4.2
[*]./configure --with-freetype-config=/usr/local/freetype/bin/freetype-config
[*]make && make install
[*]
[*]#6).安装gettext
[*]#cp /usr/lib/libattr.* /lib/
[*]tar -vxzf gettext-0.17.tar.gz
[*]cd gettext-0.17
[*]./configure
[*]make && make install
[*]
[*]#7).安装GD
[*]tar -zxvf gd-2.0.35.tar.gz
[*]cd gd-2.0.35
[*]./configure --prefix=/usr/local/libgd--with-png--with-freetype=/usr/local/freetype--with-jpeg=/usr/local/libjpeg--enable-m4_pattern_allow
[*]make && make install
[*]
[*]#8).编辑/etc/ld.so.conf,添加以下几行到此文件中
[*]if ! grep '/usr/local/zlib/lib' /etc/ld.so.conf >/dev/null; then echo '/usr/local/zlib/lib' >>/etc/ld.so.conf ;fi
[*]if ! grep '/usr/local/freetype/lib' /etc/ld.so.conf >/dev/null; then echo '/usr/local/freetype/lib' >>/etc/ld.so.conf ;fi
[*]if ! grep '/usr/local/libjpeg/lib' /etc/ld.so.conf >/dev/null; then echo '/usr/local/libjpeg/lib' >>/etc/ld.so.conf ;fi
[*]if ! grep '/usr/local/libgd/lib' /etc/ld.so.conf >/dev/null; then echo '/usr/local/libgd/lib' >>/etc/ld.so.conf ;fi
[*]ldconfig
[*]
[*]#9).安装libxml
[*]tar -xzvf libxml2-2.6.31.tar.gz
[*]cd libxml2-2.6.31
[*]./configure
[*]make&& make install

页: [1]
查看完整版本: 【转载】自动化之LAMP部署