十二章、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(),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
编译完毕我们测试一下:
7、打包归档
cd /root切换到root
tar zcvf apmg_install.tar.gz apmg_install
这样将打包好保存起来,下次可以解包直接使用