【运维网】自动化之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]