linux中lamp安装shell脚本,Centos 上面用Shell脚本一键安装LAMP环境

1)系统环境介绍Centos 5.8 64位     Apache:httpd-2.4.4.tar.gz     PHP:   php-5.4.17.tar.gz      Mysql: mysql-5.6.12.tar.gz

2)安装脚本#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

export PATH

#INFO函数定义输出字体颜色,echo -e 表示保持字符串的特殊含义,$1表示字体颜色编号,$2表示等待程序执行时间,$3表示echo输出内容。

function INFO()

{

echo -e "\e[$1;49;1m: $3 \033[39;49;0m"

sleep "$2"

echo ""

}

#非root用户不能执行该脚本

if  [ "$UID" != 0 ];

then

echo " "

INFO 35 "0" "Must be root ro run this script."

exit 1

fi

#USAGE函数定义脚本用法,可反复调用,basename其实就是脚本名,\n表示换行。

function USAGE()

{

INFO 35 "0.1" "Please see the script of the usage:"

basename=$(basename "$0")

INFO \

36 "0" \

"$(echo -e "Usage: \n\n./$basename (apache|mysql|php) install \n./$basename apache (start|stop|restart) \n./$basename mysql (start|stop|restart)\n")"

}

#YUM_INSTALL函数安装依赖包,可反复调用,$@表示所有参数都分别被双引号引住"$1","$2",而$*表示所有这些参数都被双引号引住"$1$2"

function YUM_INSTALL()

{

for a in $@; do

INFO 32 1 "Install depend on the [ $a ]"

yum -y install $a || exit 1

if [ $a = "libXpm-devel" ]; then

ln -s /usr/lib/x86_64-linux-gnu/libXpm.so /usr/lib/libXpm.so

#elif [ $a = "libsasl2-dev" ]; then

#     cp /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/

fi

done

}

#INSTALL函数定义安装程序,可一反复调用,安装apache程序的时候要先安装3个依赖包,在安装mysql的时候要用cmake编译。$1表示要安装的程序,$2表示yum安装对应的依赖包,$3表示程序解压后的目录,$4表示程序源码包。

function INSTALL()

{

YUM_INSTALL "$2" && cd $SOURCE_PATH

[ -d $3 ] && rm -r $3; INFO 31 4 "Unpack the $4 installation package......"

tar zxvf $4; cd $3 ; pwd ; INFO 32 4 "Configure the $1......"

if [ $1 = apache ];

then

cp -rf ../apr-1.4.8 srclib/apr

cp -rf ../apr-util-1.5.2 srclib/apr-util

./configure $5 || exit 1

elif [ $1 = mysql ];

then

cmake $5 || exit 1

elif [ $1 = openssl ];

then

./config $5 || exit 1

elif [ $1 = libpng ];

then

cp scripts/makefile.linux makefile

elif [ $1 = jpegsrc.v6b.tar.gz ];

then

cp /usr/share/libtool/config.guess  ./

cp /usr/share/libtool/config.sub ./

./configure $5 || exit 1

mkdir -p  /usr/local/env/jpeg/bin

mkdir -p  /usr/local/env/jpeg/lib

mkdir -p  /usr/local/env/jpeg/include

mkdir -p /usr/local/env/jpeg/man/man1

else

./configure $5 || exit 1

fi

INFO 36 3 "Compile $1......"

make || exit 1 && INFO 34 4 "Install $1......" ; make install && INFO 33 4 "$1 installation is successful......"

if [ $1 = mysql ];

then

echo $INSTALL_PATH/mysql/lib/mysql >> /etc/ld.so.conf

/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"

fi

if [ $1 = libiconv ];

then

echo "/usr/local/env/libiconv/lib" >> /etc/ld.so.conf

/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"

fi

if [ $1 = libxml2 ];

then

echo "/usr/local/env/libxml2/lib" >> /etc/ld.so.conf

/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"

fi

if [ $1 = libmcrypt ];

then

echo "/usr/local/env/libmcrypt/lib" >> /etc/ld.so.conf

/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"

fi

if [ $1 = mhash ];

then

echo "/usr/local/lib" >> /etc/ld.so.conf

echo "/usr/local/lib64" >> /etc/ld.so.conf

/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"

fi

if [ $1 = gettext ];

then

echo "/usr/local/env/gettext/lib" >> /etc/ld.so.conf

/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"

fi

if [ $1 = gd ];

then

sed -i '27 a void (*data);' /usr/local/env/gd/include/gd_io.h

echo "/usr/local/env/gd/lib" >> /etc/ld.so.conf

/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"

fi

if [ $1 = freetype ];

then

echo "/usr/local/env/freetype/lib" >> /etc/ld.so.conf

/sbin/ldconfig && INFO 33 4 "Add $1 library file to ld.so.conf......"

fi

if [ $1 = jpegsrc.v6b.tar.gz ];

then

echo "/usr/local/env/jpeg/lib" >> /etc/ld.so.conf

/sbin/ldconfig && INFO 33 4 "Add jpeg library file to ld.so.conf......"

fi

}

#SERVICE函数定义程序启动,关闭,重启。

function SERVICE()

{

if [ $1 = apache -a $2 = start ]; then

$INSTALL_PATH/$1/bin/apachectl -k start && \

INFO 33 "2.5" "Apache startup success......"

exit

elif [ $1 = apache -a $2 = stop ]; then

$INSTALL_PATH/$1/bin/apachectl -k stop && \

INFO 31 "2.5" "Apache has stopped......"

exit

elif [ $1 = apache -a $2 = restart ]; then

$INSTALL_PATH/$1/bin/apachectl -k stop ; sleep 2

INFO 31 "2.5" "Apache has stopped......"

$INSTALL_PATH/$1/bin/apachectl -k start && \

INFO 34 "2.5" "Apache has restarted......"

exit

elif [ $1 = mysql -a $2 = start ]; then

/bin/bash $INSTALL_PATH/$1/bin/mysqld_safe --defaults-file=$INSTALL_PATH/$1/my.cnf 2>&1 > /dev/null &

INFO 33 "2.5" "Mysql startup success......"

echo -e "$(netstat -ntpl|grep "/:::3306")"

exit

elif [ $1 = mysql -a $2 = stop ]; then

kill $(netstat -ntpl|awk '/:::3306/{print $NF}'|awk -F '/' '{print $1}') && \

INFO 31 "2.5" "Mysql has stopped......"

exit

elif [ $1 = mysql -a $2 = restart ]; then

kill $(netstat -ntpl|awk '/:::3306/{print $NF}'|awk -F '/' '{print $1}') && \

INFO 31 "3" "Mysql has stopped......"

/bin/bash $INSTALL_PATH/$1/bin/mysqld_safe --defaults-file=$INSTALL_PATH/$1/my.cnf 2>&1 > /dev/null &

INFO 34 "2.5" "Mysql has restarted......"

exit

fi

}

#CONFIG_MYSQL函数用来定义mysql的配置。

function CONFIG_MYSQL()

{

INFO 32 3 "Configure the mysql......"

groups mysql || groupadd mysql && id mysql || useradd -g mysql mysql

cd $INSTALL_PATH/mysql ; pwd

./scripts/mysql_install_db \

--user=mysql \

--basedir=$INSTALL_PATH/mysql/ \

--datadir=$INSTALL_PATH/mysql/data/ \

--defaults-file=$INSTALL_PATH/mysql/my.cnf

echo ""; sleep 3

cp $(dirname $SOURCE_PATH)/conf/my.cnf ./

INFO 35 2 "Mysql configuration is complete......"

}

#CONFIG_HTTPD函数用来配置apache。

function CONFIG_HTTPD()

{

INFO 32 3 "Configure the apache......"

echo -e "<?php \nphpinfo();\n?>" > $INSTALL_PATH/apache/htdocs/phpinfo.php

sed -i 's/^\ \ \ \ AddType application\/x-gzip .gz .tgz$/&\n\ \ \ \ AddType application\/x-httpd-php .php/' \

$INSTALL_PATH/apache/conf/httpd.conf

sed -i 's/^#ServerName www.example.com:80$/&\nServerName 127.0.0.1:80/' $INSTALL_PATH/apache/conf/httpd.conf

INFO 35 2 "Apache configuration is complete......"

}

#CONFIG_PHP函数用来配置php。

function CONFIG_PHP()

{

INFO 32 3 "Configure the php......"

cp $SOURCE_PATH/$1/php.ini-development $INSTALL_PATH/php5/etc/php.ini

INFO 35 2 "Php configuration is complete......"

}

#INSTALL_BRANCH函数定义程序安装,${TAR_NAME[@]}是shell脚本中数组写法,即取全部元素,即TAR_NAME里面的所有包,SERVER_NAME表示包的名称,COMPILE_DIR表示包名+版本后,即解压后的目录名。

function INSTALL_BRANCH()

{

for i in ${TAR_NAME[@]}; do

SERVER_NAME=$(echo $i|awk -F "-[0-9]" '{print $1}')

COMPILE_DIR=$(echo $i|awk -F ".tar.gz" '{print $1}')

if [ $1 = $SERVER_NAME -a $1 = apr ]; then

INSTALL apr " " "$COMPILE_DIR" "$i" "--prefix=/usr/local/env/apr"

elif [ $1 = $SERVER_NAME -a $1 = apr-util ];then

INSTALL apr-util " " "$COMPILE_DIR" "$i" "--prefix=/usr/local/env/apr-util --with-apr=/usr/local/env/apr"

elif [ $1 = $SERVER_NAME -a $1 = pcre ]; then

INSTALL pcre " " "$COMPILE_DIR" "$i" "--prefix=/usr/local/env/pcre"

elif [ $1 = $SERVER_NAME -a $1 = httpd ]; then

INSTALL apache "$HTTP_YUM" "$COMPILE_DIR" "$i" "$HTTP_PARAMETERS"

CONFIG_HTTPD

elif [ $1 = $SERVER_NAME -a $1 = mysql ]; then

INSTALL mysql "$MYSQL_YUM" "$COMPILE_DIR" "$i" "$MYSQL_PARAMETERS"

CONFIG_MYSQL

elif [ $1 = $SERVER_NAME -a $1 = libiconv ]; then

INSTALL libiconv " " "$COMPILE_DIR" "$i" "--prefix=/usr/local/env/libiconv"

elif  [ $1 = $SERVER_NAME -a $1 = libxml2 ]; then

INSTALL libxml2 " " "$COMPILE_DIR" "$i" "--prefix=/usr/local/env/libxml2 --with-iconv=/usr/local/env/libiconv"

elif  [ $1 = $SERVER_NAME -a $1 = curl ]; then

INSTALL curl " " "$COMPILE_DIR" "$i" "--prefix=/usr/local/env/curl --enable-utf8"

elif  [ $1 = $SERVER_NAME -a $1 = libmcrypt ]; then

INSTALL libmcrypt " " "$COMPILE_DIR" "$i" "--prefix=/usr/local/env/libmcrypt"

elif  [ $1 = $SERVER_NAME -a $1 = mhash ]; then

INSTALL mhash " " "$COMPILE_DIR" "$i" " "

elif  [ $1 = $SERVER_NAME -a $1 = mcrypt ]; then

INSTALL mcrypt " " "$COMPILE_DIR" "$i" "--prefix=/usr/local/env/mcrypt \

--with-libmcrypt-prefix=/usr/local/env/libmcrypt \

--with-libiconv-prefix=/usr/local/env/libiconv"

elif   [ $1 = $SERVER_NAME -a $1 = gettext ]; then

INSTALL gettext " " "$COMPILE_DIR" "$i" "--prefix=/usr/local/env/gettext \

--with-libiconv-prefix=/usr/local/env/libiconv \

--with-libxml2-prefix=/usr/local/env/libxml2"

elif  [ $1 = $SERVER_NAME -a $1 = freetype ]; then

INSTALL freetype " " "$COMPILE_DIR" "$i" "--prefix=/usr/local/env/freetype"

elif  [ $1 = $SERVER_NAME -a $1 = jpegsrc.v6b.tar.gz ]; then

COMPILE_DIR="jpeg-6b"

INSTALL jpegsrc.v6b.tar.gz " " "$COMPILE_DIR" "$i" "--prefix=/usr/local/env/jpeg --enable-shared --enable-static"

elif  [ $1 = $SERVER_NAME -a $1 = libpng ]; then

INSTALL libpng " " "$COMPILE_DIR" "$i" " "

elif  [ $1 = $SERVER_NAME -a $1 = gd ]; then

INSTALL gd " " "$COMPILE_DIR" "$i" "--prefix=/usr/local/env/gd --with-png=/usr \

--with-freetype=/usr/local/env/freetype \

--with-jpeg=/usr/local/env/jpeg  --with-fontconfig=/usr --with-xpm=/usr"

elif  [ $1 = $SERVER_NAME -a $1 = openssl ]; then

INSTALL openssl " " "$COMPILE_DIR" "$i" "-fPIC --prefix=/usr/local/env/openssl shared"

elif  [ $1 = $SERVER_NAME -a $1 = php ]; then

INSTALL php5 "$PHP5_YUM" "$COMPILE_DIR" "$i" "$PHP5_PARAMETERS"

CONFIG_PHP "$COMPILE_DIR"

break

else

continue

fi

done

}

#MOD_CASE函数用KASE定义选择安装程序。

function MOD_CASE()

{

if [[ $1 =~ apache|mysql|php ]] && [[ $2 =~ install|start|stop|restart ]]; then

INFO 32 "1.5" "Input the correct,according to the option to perform related operations......"

echo ""

if [ $2 = install ]; then

case "$1 $2" in

"apache install")

INFO 35 "2.5" "Start to $1 the $2......"

INSTALL_BRANCH apr

INSTALL_BRANCH apr-util

INSTALL_BRANCH pcre

INSTALL_BRANCH httpd

;;

"mysql install")

INFO 35 "2.5" "Start to $1 the $2......"

INSTALL_BRANCH mysql

;;

"php install")

INFO 35 "2.5" "Start to $1 the $2......"

export LD_LIBRARY_PATH=/lib/:/usr/lib/:/usr/local/lib:/usr/local/lamp/mysql/lib

INSTALL_BRANCH libiconv

INSTALL_BRANCH libxml2

INSTALL_BRANCH curl

INSTALL_BRANCH libmcrypt

INSTALL_BRANCH mhash

INSTALL_BRANCH mcrypt

INSTALL_BRANCH gettext

INSTALL_BRANCH freetype

INSTALL_BRANCH jpegsrc.v6b.tar.gz

INSTALL_BRANCH libpng

INSTALL_BRANCH gd

INSTALL_BRANCH openssl

#INSTALL_BRANCH httpd && INSTALL_BRANCH mysql && INSTALL_BRANCH php

INSTALL_BRANCH php

;;

esac

else

SERVICE $1 $2

fi

else

INFO 31 1 "Input error, please try again!"

INPUT

fi

}

#LAMP程序安装的目录

INSTALL_PATH="/usr/local/lamp"

#源码包存放目录

SOURCE_PATH="$(cd $(dirname $0); pwd)/install_tar"

#源码包列表

TAR_NAME=(httpd-2.4.4.tar.gz mysql-5.6.12.tar.gz php-5.4.17.tar.gz apr-1.4.8.tar.gz apr-util-1.5.2.tar.gz pcre-8.10.tar.gz freetype-2.4.0.tar.gz jpegsrc.v6b.tar.gz libxml2-2.7.2.tar.gz mhash-0.9.9.9.tar.gz mcrypt-2.6.8.tar.gz gd-2.0.35.tar.gz libiconv-1.14.tar.gz gettext-0.18.tar.gz libmcrypt-2.5.8.tar.gz openssl-0.9.8p.tar.gz curl-7.32.0.tar.gz libpng-1.2.33.tar.gz)

#Apache,Mysql,PHP yum安装依赖包

HTTP_YUM="build-essential libapr1 libapr1-dev libaprutil1 libaprutil1-dev gettext gettext-devel"

MYSQL_YUM="cmake libncurses5 libncurses5-dev bison"

PHP5_YUM="libxml2 libxml2-devel openssl libjpeg-devel bzip2 libXpm-devel libmcrypt-devel"

#Apache编译参数

HTTP_PARAMETERS="\

--prefix=$INSTALL_PATH/apache \

--enable-module=so \

--enable-module=rewrite \

--enable-shard=rewrite \

--enable-shared=max \

--with-apr=/usr/local/env/apr \

--with-apr-util=/usr/local/env/apr-util \

--with-pcre=/usr/local/env/pcre \

--with-included-apr \

"

#mysql编译参数

MYSQL_PARAMETERS="\

-DCMAKE_INSTALL_PREFIX=$INSTALL_PATH/mysql \

-DYSQL_TCP_PORT=3306 \

-DMYSQL_DATADIR=$INSTALL_PATH/mysql/data \

-DMYSQL_UNIX_ADDR=$INSTALL_PAHT/mysql/mysql.sock \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DEXTRA_CHARSETS=all \

-DWITH_DEBUG=0 \

"

#PHP编译参数

PHP5_PARAMETERS="\

--prefix=$INSTALL_PATH/php5 \

--with-config-file-path=$INSTALL_PATH/php5/etc \

--with-mysql=$INSTALL_PATH/mysql \

--with-apxs2=$INSTALL_PATH/apache/bin/apxs \

--with-mysqli=$INSTALL_PATH/mysql/bin/mysql_config \

--with-iconv=/usr/local/env/libiconv \

--with-jpeg-dir=/usr/local/env/jpeg  \

--with-png-dir=/usr \

--with-libxml-dir=/usr/local/env/libxml2  \

--with-pdo-mysql \

--with-zlib \

--with-curl=/usr/local/env/curl \

--with-curlwrappers \

--with-mcrypt=/usr/local/env/libmcrypt \

--with-gd=/usr/local/env/gd  \

--with-openssl=/usr/local/env/openssl \

--with-mhash=/usr \

--with-xmlrpc \

--with-xpm-dir \

--with-freetype-dir=/usr/local/env/freetype \

--with-zlib-dir \

--with-ldap \

--with-ldap-sasl \

--with-pcre-regex \

--with-gettext=/usr/local/env/gettext \

--with-ncurses \

--enable-shared \

--enable-xml \

--enable-safe-mode \

--enable-track-vars \

--enable-magic-quotes \

--enable-bcmath \

--enable-sysvsem \

--enable-sysshm \

--enable-inline-optimization \

--enable-mbregex \

--enable-mbstring \

--enable-gd-native-ttf \

--enable-pcntl \

--enable-sockets \

--enable-zip \

--enable-soap \

--enable-discard-path \

--enable-force-cgi-redirect \

--enable-pdo \

--enable-calendar \

--enable-exif \

--enable-zend-multibyte \

"

#--disable-rpath

#脚本调用帮助程序

if [ $# = 2 ]

then

INFO 33 "1.5" "please wait......"

echo ""

MOD_CASE "$1" "$2"

else

USAGE

exit 1

fi

3)脚本的用法#下载安装脚本和源码包

wget https://sourceforge.net/projects/opensourcefile/files/

Install_Centos_LAMP_v.0.1.zip/download --no-check-certificate

unzip Install_Centos_LAMP_v.0.1.zip

chmod +x Install_Centos_LAMP_v.0.1.sh

#查看脚本的用法,可通过该脚本安装apache,mysql,php,启动,关闭和重启apache和mysql。

./Install_Centos_LAMP_v.0.1.sh

: Please see the script of the usage:

: Usage:

./Install_Centos_LAMP_v.0.1.sh (apache|mysql|php) install

./Install_Centos_LAMP_v.0.1.sh apache (start|stop|restart)

./Install_Centos_LAMP_v.0.1.sh mysql (start|stop|restart)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值