服务器架构之性能扩展-第十二章(13)
十二章、LAMP环境搭建的自动化搭建 所谓自动化搭建当然是实现一定的自动化部署了,并且可以承受一定的大型的网站点击量,LAMP环境的部署完全可以使用自动化脚本实现,这样便达到了无人值守的安装方式。 1、准备下列软件 httpd-2.2.14.tar.gz mysql-5.1.41.tar.gz gd-2.0.35.tar.gz php-5.2.11.tar.gz freetype-2.3.10.tar.gz jpegsrc.v7.tar.gz libpng-1.2.41.tar.gz 下载好,上传到/root/apmg_install. 2、编写一个安装指南install放在/root/apmg_install 下载后,tar zxvf apmg_install.tar.gz ; cd apmg_install; ./setup.sh自动完成安装,时间大概10多分钟 3、编写httpd.sed文件放在/root/apmg_install 目的是为了在apache的httpd.conf中加入相关的行。 文件httpd.sed内容:/application\/x-compress .Z/a\ \ AddType application/x-httpd-php .php 4、编写test.php放在/root/apmg_install <?php phpinfo(); ?> 5、编写测试脚本放在/root/apmg_install/setup.sh 这个脚本基于linux和freebsd,可能要经过多次测试才成功。 #!/bin/sh #this is a script about *nix installing apache,php with gd2.write by sery(sery@163.com),in 2009-12-03 #define some variables http_prefix=/usr/local/apache2 php_prefix=/usr/local/php #need root install is_root=`id |awk ‘{print $1}’|awk -F’[=(]‘ ‘{print $2}’` if [ $is_root != 0 ] then echo“please use root install this program!!!” exit 1 fi #Os is ? Os_is=`uname` if [ "$Os_is" = "FreeBSD" ] then ## install apache if [ ! -d "$http_prefix" ] then tar zxvf httpd-2.2.14.tar.gz cd httpd-2.2.14 ./configure --prefix=$http_prefix --enable-so --enable-write --with-mpm=worker make make install cd .. if [ ! -f "$http_prefix/htdocs/test.php" ] then cp test.php $http_prefix/htdocs fi rm -rf httpd-2.2.14 echo“apache install is ok!” sleep 2 fi #install mysql client is_inst_mysql=`find /usr/local/bin -name mysql | wc -l` if [ "$is_inst_mysql" = 0 ] then tar zxvf mysql-5.0.41.tar.gz cd mysql-5.0.41 ./configure --without-server --with-extra-charsets=gbk,gb2312,utf8 --enable-thread-safe-client make make install cd .. echo“/usr/local/lib”>>/etc/ld.so.conf ldconfig rm -rf mysql-5.0.41 echo“mysql client install ok!” sleep 2 fi #install gd2 if [ ! -d /usr/local/gd2 ] then tar zxvf gd-2.0.35.tar.gz cd gd-2.0.35 ./configure --prefix=/usr/local/gd2 make make install cd .. rm -rf gd-2.0.35 echo“gd2 install is ok!” sleep 2 fi #install php.apache must be installed in /usr/local/apache2 if [ ! -d /usr/local/php ] then tar zxvf php-5.3.6.tar.gz cd php-5.3.6 ./configure --prefix=$php_prefix --with-gd=/usr/local/gd2 --with-apxs2=$http_prefix/bin/apxs --enable-mbregex --enable-bcmath --with-mysql --with-zlib-dir --enable-mbstring=all --with-freetype-dir --with-pdo-mysql make make install cp php.ini-dist $php_prefix/lib/php.ini cd .. rm -rf php-5.3.6 echo“php with gd2 install is ok!” sleep 2 fi # setting apache configuration file sed -f httpd.sed $http_prefix/conf/httpd.conf>$http_prefix/conf/httpd.conf.temp cd $http_prefix/conf mv httpd.conf httpd.conf.old cat httpd.conf.temp>httpd.conf $http_prefix/bin/apachectl -t cd echo“It is very ok!” elif [ "$Os_is" = "Linux" ] then echo“this linux” ## install apache if [ ! -d "$http_prefix" ] then tar zxvf httpd-2.2.14.tar.gz cd httpd-2.2.14 ./configure --prefix=$http_prefix --enable-so–enable-write --with-mpm=worker make make install cd .. if [ ! -f "$http_prefix/htdocs/test.php" ] then cp test.php $http_prefix/htdocs fi rm -rf httpd-2.2.14 echo“apache install is ok!” sleep 2 fi #install mysql client is_inst_mysql=`find /usr/local/bin -name mysql | wc -l` if [ "$is_inst_mysql" = 0 ] then tar zxvf mysql-5.0.41.tar.gz cd mysql-5.0.41 ./configure --without-server --with-extra-charsets=gbk,gb2312,utf8 --enable-thread-safe-client make make install cd .. echo“/usr/local/lib”>>/etc/ld.so.conf ldconfig rm -rf mysql-5.0.41 echo“mysql client install ok!” sleep 2 fi #install freetype if [ ! -d /usr/local/freetype ] then tar zxvf freetype-2.3.5.tar.gz cd freetype-2.3.5 ./configure --prefix=/usr/local/freetype make make install cd .. rm -rf freetype-2.3.5 echo“freetype install is ok!” sleep 2 fi #install jpeg if [ ! -d /usr/local/jpeg ] then tar zxvf jpegsrc.v6.tar.gz cd jpeg-6 ./configure --prefix=/usr/local/jpeg make make install cd .. rm -rf jpeg-6 echo“gpeg install is ok!” fi #install libpng if [ ! -d /usr/local/libpng ] then tar zxvf libpng-1.2.31.tar.gz cd libpng-1.2.31 ./configure --prefix=/usr/local/libpng make make install cd .. rm -rf libpng-1.2.31 echo“libpng install is ok!” sleep 5 fi #link header file if [ ! -f /usr/include/pngconf.h ] then ln -s /usr/local/libpng/include/pngconf.h /usr/include fi if [ ! -f /usr/include/png.h ] then ln -s /usr/local/libpng/include/png.h /usr/include fi #install gd2 if [ ! -d /usr/local/gd2 ] then tar zxvf gd-2.0.35.tar.gz cd gd-2.0.35 ./configure --prefix=/usr/local/gd2 --with-freetype=/usr/local/freetype --with-png=/usr/local/libpng --with-jpeg=/usr/local/ jpeg make make install cd .. rm -rf gd-2.0.35 echo“gd2 install is ok!” sleep 2 fi #install php.apache must be installed in /usr/local/apache2 if [ ! -d /usr/local/php ] then tar zxvf php-5.3.6.tar.gz cd php-5.3.6 ./configure --prefix=$php_prefix --with-gd=/usr/local/gd2 --with-apxs2=$http_prefix/bin/apxs --enable-mbregex --enable-bcmath --with-mysql --with-zlib-dir --enable-mbstring=all --with-pdo-mysql --with-freetype=/usr/local/freetype make make install cp php.ini-dist $php_prefix/lib/php.ini cd .. rm -rf php-5.3.6 echo“php with gd2 install is ok!” sleep 2 fi # setting apache configuration file sed -f httpd.sed $http_prefix/conf/httpd.conf>$http_prefix/conf/httpd.conf.temp cd $http_prefix/conf mv httpd.conf httpd.conf.old cat httpd.conf.temp>httpd.conf $http_prefix/bin/apachectl -t cd echo“It is very ok!” else echo“this is other os,please modify the script” exit 1 fi 6、以上准备工作做好以后,执行setup.sh 执行完毕后,启动apache,然后运行test.php测试 然后执行,setup权限不够赋予权限。 遇到下面的错误提示,如果sh目录存在且脚本无误,最可能是原因是在windows下写的脚本是dos格式的,放在Linux下编码不识别,解决方法是使用dos2unix命令转一下,即输入:dos2unix文件名 我们可以看到,飞快的执行程序呢?结果我们拭目以待。 还有一点特别提醒,我们编写脚本文件的时候是在window条件下,虽然执行了转换,但难免会有乱码,所以一定要vi setup.sh文件查看,还要留心标点符号也要符合linux环境才行。如windows下的‘’“”要转换为linux下的' '和" "。 编译遇到了php5模块没加载正确。查文档需要关闭selinux。 Vi /etc/sysconfig/selinux 把SELINUX=enforcing注释掉:#SELINUX=enforcing,然后新加一行为: SELINUX=disabled然后重启从新编译。 我们然后在编译这次出现 几乎都是ok啦,我们执行/usr/local/apache2/bin/apachectl start 编译完毕我们测试一下:http://192.168.22.132/test.php 7、打包归档 cd /root切换到root tar zcvf apmg_install.tar.gz apmg_install 这样将打包好保存起来,下次可以解包直接使用 本文转自zsaisai 51CTO博客,原文链接:http://blog.51cto.com/3402313/1036233