源码编译安装LAMP平台
系统:Linux xfzhou 2.6.18-238.el5 #1 SMP Sun Dec 19 14:24:47 EST 2010 i686 athlon i386 GNU/Linux
我把这次所需要的软件都放到/home/zhou这个目录下面(下载的话一般都是去www.chinaunix.net或官网):
[root@xfzhou zhou]# ll
总计 49928
-rwxr--r-- 1 zhou zhou   785724 07-27 09:52 apr-1.4.6.tar.bz2
-rwxr--r-- 1 zhou zhou   774770 07-27 09:55 apr-util-1.4.1.tar.gz
-rwxr--r-- 1 zhou zhou  1278340 2012-02-18 fontconfig-2.4.2.tar.gz
-rwxr--r-- 1 zhou zhou  1487579 08-30 13:52 freetype-2.4.6.tar.bz2
-rwxr--r-- 1 zhou zhou   258133 2011-10-06 GD-2.0.33.tar.gz
-rwxr--r-- 1 zhou zhou  6137268 08-30 13:36 httpd-2.4.3.tar.gz
-rwxr--r-- 1 zhou zhou   960379 08-30 13:46 jpegsrc.v7.tar.gz
-rwxr--r-- 1 zhou zhou   658335 08-30 14:51 libpng-1.4.3.tar.bz2
-rwxr--r-- 1 zhou zhou 24475686 05-22 14:53 mysql-5.5.22.tar.gz
-rwxr--r-- 1 zhou zhou 13964954 08-30 13:41 php-5.3.6.tar.gz
-rwxr--r-- 1 zhou zhou   560351 08-30 13:48 zlib-1.2.7.tar.gz
-rwxr--r-- 1 zhou zhou  5583905 08-30 15:54 cmake-2.8.6.tar.gz
[root@xfzhou zhou]#
 
接着把这些软件都解压到/usr/src/这个目录里:
[root@xfzhou zhou]# tar jxf apr-1.4.6.tar.bz2 -C /usr/src/
[root@xfzhou zhou]# tar zxf apr-util-1.4.1.tar.gz -C /usr/src/
[root@xfzhou zhou]# tar zxf fontconfig-2.4.2.tar.gz -C /usr/src/
[root@xfzhou zhou]# tar jxf freetype-2.4.6.tar.bz2 -C /usr/src/
[root@xfzhou zhou]# tar zxf GD-2.0.33.tar.gz -C /usr/src/
[root@xfzhou zhou]# tar zxf httpd-2.4.3.tar.gz -C /usr/src/
[root@xfzhou zhou]# tar zxf jpegsrc.v7.tar.gz -C /usr/src/
[root@xfzhou zhou]# tar zxf php-5.3.6.tar.gz -C /usr/src/
[root@xfzhou zhou]# tar zxf zlib-1.2.7.tar.gz -C /usr/src/
[root@xfzhou zhou]# tar jxf libpng-1.4.3.tar.bz2 -C /usr/src/
[root@xfzhou zhou]# tar zxf mysql-5.5.22.tar.gz -C /usr/src/
[root@xfzhou zhou]# tar zxf cmake-2.8.6.tar.gz -C /usr/src/
[root@xfzhou zhou]#
 
一、安装Apache:
         在安装apache之前要先安装aprapr-util这两个软件,所以要先把系统中自带的aprapr-util
 
这两个给卸载掉。
         [root@xfzhou apr-1.4.6]# rpm -e apr apr-util --nodeps
 
         安装apr:
         [root@xfzhou apr-1.4.6]# ./configure --prefix=/usr/local/apr   //这个地方在编译的时候会报一个错,可以不理会的。
         [root@xfzhou apr-1.4.6]# make && make install
        
         安装apr-util:
         [root@xfzhou apr-util-1.4.1]# ./configure --prefix=/usr/local/apr-util --with-
 
apr=/usr/local/apr/
         [root@xfzhou apr-util-1.4.1]# make && make install
        
         安装Apache:
         [root@xfzhou httpd-2.4.3]# ./configure --prefix=/usr/local/apache --enable-rewrite --enable-modules=most --enable-mods-shared=all --enable-cache --enable-file-cache --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/
         [root@xfzhou httpd-2.4.3]# make && make install
 
         调整apachePATH变量:
         [root@xfzhou httpd-2.4.3]# echo "export PATH=$PATH:/usr/local/apache/bin/" >> /etc/profile
         [root@xfzhou httpd-2.4.3]# source /etc/profile                        //使其马上生效
         启动| 停止Apache
         #apachectl start | stop
 
最后,让apache开机自启动:
# echo “/usr/local/apache/bin/apachectl start” >> /etc/rc.local
 
测试下看看apache是否安装成功:http://192.168.0.222
 
 
二、安装MYSQL:
1、安装cmake:
由于使用的是MYSQL-5.5的版本的,这个版本在安装的时候要使用cmake来编译安装,故要先安装cmake:
[root@xfzhou cmake-2.8.6]# ./configure –prefix=/usr/local/cmake
[root@xfzhou cmake-2.8.6]# make && make install
[root@xfzhou cmake-2.8.6]# echo “export PATH=$PATH:/usr/local/cmake/bin/” >> /etc/profile
 
2、添加MYSQL的程序用户mysql:
[root@xfzhou src]# useradd -M -s /sbin/nologin mysql
-M  是不创建家目录
-s   是指定登陆shell/sbin/nologin不让mysql用户登陆系统。
 
3、编译安装MYSQL:
[root@xfzhou mysql-5.5.22]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_USER=mysql -DSYSCONFDIR=/usr/local/mysql/data -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLE_LOCAL_INFILE=1
注意:到今天为止最新的版本是5.5.27,要是按以上的编译是有问题的。
support-files中的my-large.cnf 复制到/etc下面命名为my.cnf,其实这个support-files目录下面有多个mysql的配置文件样版,可以根据你的数据库的负载来选择。
[root@xfzhou mysql-5.5.22]# cp support-files/my-large.cnf /etc/my.cnf
 
再把mysql添加为系统服务,并设置其开机自启动:
[root@xfzhou mysql-5.5.22]# cp support-files/mysql.server /etc/init.d/mysqld
[root@xfzhou mysql-5.5.22]# chkconfig --add mysqld
[root@xfzhou mysql-5.5.22]# chkconfig --level 35 mysqld on
[root@xfzhou mysql-5.5.22]# chmod 755 /etc/init.d/mysqld (如果不执行这一步,那么在用service mysqld start|stop|status的时候会提示无法识别的mysqld服务)
 
修改/etc/my.cnf配置文件:
datadir=/usr/local/mysql/data   //还要把data目录的宿主改为mysql
log-error=/usr/local/mysql/data/error.log  
pid-file=/usr/local/mysql/data/mysql.pid
user=mysql
tmpdir=/tmp
 
[root@xfzhou mysql-5.5.22]# chown -R mysql:mysql /usr/local/mysql/data  //更改data目录的宿主为mysql
[root@xfzhou mysql-5.5.22]#
[root@xfzhou mysql-5.5.22]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/ --basedir=/usr/local/mysql/    ---初始化mysql数据库
 
调整mysql的命令执行路径:
#echo "export PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile
 
调整mysqllib库路径
#echo "/usr/local/mysql/lib/" >> /etc/ld.so.conf
#ldconfig  重新加载,使其生效
 
启动mysqld服务:
service mysqld start /usr/local/mysql/bin/mysqld_safe --user=mysql &
 
通常为了安全性还要执行一下/usr/local/mysql/bin/mysql_secure_installation这个脚本:用来给root设定密码,删除匿名用户,不让root从远程登陆mysql等一些安全选项,建议执行下。
 
 
三、安装fontconfigfreetypejpeglibpnggd,注意要先安装其它的再来安装GD,因为在编译GD的时候要指定PNG,JPEG等的路径。下面来说下这几个软件的作用:
 
fontconfig:在安装php时,为了需求,可能需要GD库的支持,而fontconfig-2.4.2.tar.gzcacti绘图时,图片上的字体支持就会用到它
 
zlib:数据压缩库 zlibZlib 软件包包含 zlib 库,很多程序中的压缩或者解压缩函数都会用到这个库
 
libpng:libpng 软件包包含 libpng .这些库被其他程式用于读写png文件.
 
jpeg:用来让PHP支持jpeg的图片的。
 
FreeType:是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF
 
GD:是一个开源的图像处理库,支持 PNG/JPEG/GIF以及其他格式的图像。GD一般被用来创建图表、图形、缩略图以及其他图像相关的处理操作
1freetype
         ./configure --prefix=/usr/local/freetype
         make && make install
 
2fontconfig
         ./configure --prefix=/usr/local/fontconfig --with-freetype-config=/usr/local/freetype/bin/freetype-config
         make && make install
 
3libpng
         ./configure --prefix=/usr/local/png
         make && make install
 
4jpeg
         mkdir /usr/local/jpeg
         mkdir /usr/local/jpeg/bin
         mkdir /usr/local/jpeg/lib
         mkdir /usr/local/jpeg/man
         mkdir /usr/local/jpeg/man/man1
         mkdir /usr/local/jpeg/include
 
         ./cofnigure --prefix=/usr/local/jpeg --enable-shared --enable-static
         make && make install
 
5zlib
         ./configure --prefix=/usr/local/zlib
         make && make install
 
6gd
          ./configure --prefix=/usr/local/gd --with-png=/usr/local/png/ --with-jpeg=/usr/local/jpeg/ --with-freetype=/usr/local/freetype/ --with-fontconfig=/usr/local/fontconfig/
 
 
四、安装php-5.3.6
./configure --prefix=/usr/local/php --with-config-file-path=/etc --enable-sockets --enable-mbstring=all --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql/ --with-png-dir=/usr/local/png/ --with-jpeg-dir=/usr/local/jpeg/ --with-freetype-dir=/usr/local/freetype/ --with-zlib-dir=/usr/local/zlib/ --with-gd=/usr/local/gd/
make && make install
在编译PHP的时候,注意一定要把—enable-sockets给加上。
 
php的配置文件复制到/etc/目录下面,注意生产环境的话,就要复制php.ini-production这个。
[root@xfzhou zhou]# cp /usr/src/php-5.3.6/php.ini-production /etc/php.ini
如果在安装PHP的过程中,没有指定PHP的配置文件的路径,那么默认的位置就是/usr/local/php/lib/这个目录,可以用php -i来查看。 
 
最后来修改apache的配置文件,使apache能够和PHP协同工作:
vi /usr/local/apache/conf/httpd.conf
LoadModule php5_module        modules/libphp5.so  //这一行是PHP安装好后,就自动生成的。
AddType application/x-httpd-php .php   //手工添加
 
DirectoryIndex index.html index.php  //手工在index.html后面添加一个index.php
:wq
 
五、测试PHP
/usr/local/apache/htdocs/目录下面分别创建test.php testdb.php
#vi test.php
<?php
Phpinfo();
?>
:wq
 
#vi testdb.php
<?php
$Link=mysql_connect('localhost','test','');
if (!$Link) echo "Fail!!";
else echo "Success!!";
mysql_close();
?>
:wq
再来用浏览器来验证:
 
说明PHP能与APACHE协同工作了。同时在这个页面你还可以了解到PHP支持的功能。如GD
 
 
 
这说是明PHP能够和mysql协同工作了。
 
 
六、给apache添加gzip压缩功能:
         #vi /usr/local/apache/conf/httpd.conf
LoadModule deflate_module modules/mod_deflate.so          //取消注意,就是启用这个deflate压缩模块。
然后在文件尾部手工添加如下内容:
<ifmodule mod_deflate.c>
DeflateCompressionLevel 6
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE p_w_picpath/svg+xml
</ifmodule>
 
保存退出,后重启下apache服务器,用互联网上的网站来检测就可以看到网站有压缩的功能了。比如查看www.sina.com网站 是否有gzip压缩功能。测试结果如下: