#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin exportPATH #INFO函数定义输出字体颜色,echo -e 表示保持字符串的特殊含义,$1表示字体颜色编号,$2表示等待程序执行时间,$3表示echo输出内容。 functionINFO() { 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." exit1 fi #USAGE函数定义脚本用法,可反复调用,basename其实就是脚本名,\n表示换行。 functionUSAGE() { 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./$basenameapache (start|stop|restart) \n./$basenamemysql (start|stop|restart)\n")" } #YUM_INSTALL函数安装依赖包,可反复调用,$@表示所有参数都分别被双引号引住"$1","$2",而$*表示所有这些参数都被双引号引住"$1$2" functionYUM_INSTALL() { fora in$@; do INFO 32 1 "Install depend on the [ $a ]" yum -y install$a || exit1 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表示程序源码包。 functionINSTALL() { YUM_INSTALL "$2"&& cd$SOURCE_PATH [ -d $3 ] && rm-r $3; INFO 31 4 "Unpack the $4 installation package......" tarzxvf $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 || exit1 elif[ $1 = mysql ]; then cmake $5 || exit1 elif[ $1 = openssl ]; then ./config$5 || exit1 elif[ $1 = libpng ]; then cpscripts/makefile.linux makefile elif[ $1 = jpegsrc.v6b.tar.gz ]; then cp/usr/share/libtool/config.guess ./ cp/usr/share/libtool/config.sub ./ ./configure$5 || exit1 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 || exit1 fi INFO 36 3 "Compile $1......" make|| exit1 && INFO 34 4 "Install $1......"; makeinstall&& 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函数定义程序启动,关闭,重启。 functionSERVICE() { 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 ; sleep2 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的配置。 functionCONFIG_MYSQL() { INFO 32 3 "Configure the mysql......" groupsmysql || groupadd mysql && idmysql || 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""; sleep3 cp$(dirname$SOURCE_PATH)/conf/my.cnf ./ INFO 35 2 "Mysql configuration is complete......" } #CONFIG_HTTPD函数用来配置apache。 functionCONFIG_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。 functionCONFIG_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表示包名+版本后,即解压后的目录名。 functionINSTALL_BRANCH() { fori 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定义选择安装程序。 functionMOD_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......" exportLD_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 exit1 fi #下载安装脚本和源码包 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) 本文出自 “朴实的追梦者” 博客,请务必保留此出处http://sfzhang88.blog.51cto.com/4995876/1281640 (责任编辑:IT) |