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=/mydata/data
mkdir $installPath &> /dev/null
serviceUnpack(){
tar -xjf $1 -C $installPath &>> $log && echo "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 success3、结合图形描述LVS的工作原理;
4、阐述varnish的功能及其应用场景,并通过实际的应用案例来描述配置、测试、调试过程。
5、搭建一套LVS-DR模型的高性能集群,并用Keepalived实现nginx与lvs的高可用集群,同时实现以下功能:
(1)、wordpress程序通过nfs共享给各个realserver;
(2)、后端realserver中的nginx和php分离
代码语言
原文:http://11884010.blog.51cto.com/11874010/1901926