首页 > 代码库 > 第十一周作业

第十一周作业

1、源码编译安装LNMP架构环境;

2、编写一个脚本完成以下功能:

(1)、一键搭建LNMP源码编译环境;

(2)、可通过在脚本后面跟上一些参数来自定义安装目录等其他选项。

#!/bin/bash
read -p ‘Please enter the installation path:‘ dataPath
read -p ‘Please enter your package path:‘ packagePath
installPath=$packagePath/lamp-server
serverCount=(apr apr-util httpd mysql php xcache)
log=$installPath/install.log
mysqlData=http://www.mamicode.com/mydata/data"Unpack the $1 success"  ||  echo "Unpack the $1 failed" 
}


serviceInstall(){
    if [ $1 == ‘apr‘  -a ! -e $dataPath/$1 ]
    then
        echo "Began to extract the $1 installation" 
        cd $installPath/$1*
        sed -i "s/\(\<RM=..RM\)./\1 -f‘/g" configure 
        ./configure --prefix=$dataPath/$1 &>> $log
        make &>> $log && make install &>> $log  && echo "$1 installed successfully"  ||  echo "$1 installed failed" 
    elif [ $1 == ‘apr-util‘  -a ! -e $dataPath/$1 ]
    then
         echo "Began to extract the $1 installation" 
         cd $installPath/$1*
   	 ./configure --prefix=$dataPath/$1 --with-apr=$dataPath/apr  &>> $log
   	 make &>> $log && make install  &>> $log  && echo "$1 installed successfully"  ||  echo "$1 installed failed" 
    elif [ $1 == ‘httpd‘  -a ! -e $dataPath/$1 ]
    then
        echo "Began to extract the $1 installation" 
        cd $installPath/$1*
        ./configure --prefix=$dataPath/$1 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=$dataPath/apr --with-apr-util=$dataPath/apr-util --enable-modules=most --enable-mpms-shared=all  &>> $log
        make &>> $log && make install  &>> $log  && echo "$1 installed successfully"  ||  echo "$1 installed failed" 
    elif [ $1 == ‘mysql‘  -a ! -e $dataPath/$1 ]
    then
        echo "Began to extract the $1 installation" 
        cd $installPath/$1*
        cmake . -DCMAKE_INSTALL_PREFIX=$dataPath/mysql -DMYSQL_DATADIR=/mydata/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR==$dataPath/mysql/mysql.sock -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci &>> $log
        make &>> $log && make install  &>> $log  && echo "$1 installed successfully"  ||  echo "$1 installed failed" 
    elif [ $1 == ‘php‘  -a ! -e $dataPath/$1 ]
    then
        echo "Began to extract the $1 installation" 
        cd $installPath/$1*
        ./configure --prefix=$dataPath/php --with-mysql=$dataPath/mysql --with-openssl --with-mysqli=$dataPath/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --with-apxs2=$dataPath/httpd/bin/apxs --with-mcrypt  --with-bz2  --enable-maintainer-zts &>> $log
        make &>> $log && make install &>> $log  && echo "$1 installed successfully"   ||  echo "$1 installed failed" 
    elif [ $1 == ‘xcache‘  -a ! -e $dataPath/php/lib/php/extensions/no-debug-zts-20100525/xcache.so ]
    then
        echo "Began to extract the $1 installation" 
        cd $installPath/$1*
        $dataPath/php/bin/phpize &>> $log
        ./configure --enable-xcache --with-php-config=$dataPath/php/bin/php-config &>> $log
        make &>> $log  && make install  &>> $log  && echo "$1 installed successfully"  ||  echo "$1 installed failed" 
    fi
}

serviceDrop(){
     cd $dataPath
     rm -rf $1  && echo "Delete the $1 service success"   || echo "Delete the $1 service failed" 
}

serviceConfig(){
    if [ $1 == ‘httpd‘ ]
    then
        cd $dataPath/httpd
  	sed -i ‘s/DirectoryIndex.*index.html/DirectoryIndex index.php index.html/g‘ conf/httpd.conf && sed -i ‘381,382cAddType application/x-httpd-php \.php\nAddType application/x-httpd-php-source  .phps‘ conf/httpd.conf && echo "$1 configuration success" || echo "$1 configuration failed"
    elif [ $1 == ‘xcache‘ ]
    then
        cd $installPath/php*
        cp -a  php.ini-production $dataPath/php/lib/php.ini
        cd $installPath/xcache*
        cp -a  xcache.ini  $dataPath/php/lib
        cd  $dataPath/php
        sed -i ‘380aextension_dir =  /usr/local/php/lib/php/extensions/no-debug-zts-20100525\nextension = xcache.so‘ lib/php.ini && echo "$1 configuration success" || echo "$1 configuration failed"
        echo ‘<?php phpinfo(); ?>‘ > $dataPath/httpd/htdocs/index.php
    elif [ $1 == ‘mysql‘ ]
    then
        mkdir -p /mydata/data &>> $log
        groupadd -r mysql &>> $log
        useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql  &>> $log
        chown -R mysql:mysql /mydata/data &>> $log
        chown -R mysql:mysql /usr/local/mysql   &>> $log
        cd  $dataPath/mysql
        ./scripts/mysql_install_db --basedir=$dataPath/mysql/ --datadir=$mysqlData --user=mysql &>> $log   && echo "$1 configuration success" || echo "$1 configuration failed"
 	ln -sv $dataPath/mysql/include  /usr/include/mysql
 	echo "$dataPath/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
	ldconfig
    fi
}

while true
do
read -p "Please enter the | config | unpack | install | drop | quit | to complete the configuration: " met
case $met in
unpack)
    echo `date ‘+%F %T‘` 
    echo ‘Began to unzip the installation services‘ 
    for i in  $packagePath/*
    do
        serviceUnpack   $i
    done
    echo -e ‘\n\n‘ 
;;
install)
    yum groupinstall  ‘Development tools‘ ‘Desktop Platform Development‘ -y &>> $log
    yum install  pcre-devel openssl-devel cmake ncurses-devel bzip2-devel libmcrypt-devel libxml2-devel libmcrypt-devel  -y &>> $log
    echo `date ‘+%F %T‘` 
    for i in  ${serverCount[@]}
    do
        serviceInstall   $i
    done
    echo -e ‘\n\n‘ 
;;
drop)
    $dataPath/mysql/support-files/mysql.server stop &>> $log  && echo "mysql stop successfully" || echo "mysql stop failed"
    $dataPath/httpd/bin/apachectl stop &>> $log  && echo "mysql stop successfully" || echo "mysql stop failed"
    groupdel  mysql  &>> $log
    userdel -r mysql &>> $log
    echo `date ‘+%F %T‘` 
    for i in  ${serverCount[@]}
    do
        serviceDrop   $i
    done
    echo -e ‘\n\n‘ 
    rm -f  $log
;;
config)
    echo `date ‘+%F %T‘` 
    for i in  ${serverCount[@]}
    do
        serviceConfig   $i
    done
    echo -e ‘\n\n‘ 
    $dataPath/mysql/support-files/mysql.server restart &>>  $log   && echo "mysql start successfully" || echo "mysql start failed"
    $dataPath/httpd/bin/apachectl restart &>> $log  && echo "mysql start successfully" || echo "mysql start failed"
;;
quit)
    exit 0
;;
esac
done


测试
[root@localhost ~]# ./test.sh 
Please enter the installation path:/usr/local
Please enter your package path:/opt
Please enter the | config | unpack | install | drop | quit | to complete the configuration: unpack
2017-02-28 10:45:10
Began to unzip the installation services
Unpack the /opt/apr-1.5.0.tar.bz2 success
Unpack the /opt/apr-util-1.5.3.tar.bz2 success
Unpack the /opt/httpd-2.4.9.tar.bz2 success
Unpack the /opt/lamp-server failed
Unpack the /opt/mysql-5.5.33.tar.bz2 success
Unpack the /opt/php-5.4.26.tar.bz2 success
Unpack the /opt/xcache-3.1.0.tar.bz2 success


Please enter the | config | unpack | install | drop | quit | to complete the configuration: install
2017-02-28 10:47:30
Began to extract the apr installation
apr installed successfully
Began to extract the apr-util installation
apr-util installed successfully
Began to extract the httpd installation
httpd installed successfully
Began to extract the mysql installation
mysql installed successfully
Began to extract the php installation
php installed successfully
Began to extract the xcache installation
xcache installed successfully


Please enter the | config | unpack | install | drop | quit | to complete the configuration: config
2017-02-28 11:00:44
httpd configuration success
mysql configuration success
xcache configuration success

mysql start successfully
httpd start successfully


[root@localhost ~]# curl -I 172.20.100.101
HTTP/1.1 200 OK
Date: Tue, 28 Feb 2017 03:05:11 GMT
Server: Apache/2.4.9 (Unix) PHP/5.4.26
X-Powered-By: PHP/5.4.26
Content-Type: text/html



Please enter the | config | unpack | install | drop | quit | to complete the configuration: drop
mysql stop successfully
httpd stop successfully
2017-02-28 11:14:52
Delete the apr service success
Delete the apr-util service success
Delete the httpd service success
Delete the mysql service success
Delete the php service success
Delete the xcache service success

3、结合图形描述LVS的工作原理;

4、阐述varnish的功能及其应用场景,并通过实际的应用案例来描述配置、测试、调试过程。

5、搭建一套LVS-DR模型的高性能集群,并用Keepalived实现nginx与lvs的高可用集群,同时实现以下功能:

(1)、wordpress程序通过nfs共享给各个realserver;

(2)、后端realserver中的nginx和php分离

代码语言



第十一周作业