本人刚接触运维不久,水平有限,以下博文为记录自己LAMP的安装编译过程,以及出现的问题、解决方法。若有问题,还望大侠们指出,不胜感激!

系统平台为CentOS5.6

1.所需要包
httpd-2.2.19.tar.gz 
mysql-5.1.58-linux-i686-glibc23.tar.gz 
php-5.3.6.tar.gz
jpegsrc.v6b.tar.gz
libpng-1.2.12.tar.gz
freetype-2.2.1.tar.gz
gd-2.0.35.tar.gz


安装前需要检查是否有Gcc编译器 ,libxml2编译php时需要

2 安装apache
找到软件包/tmp/downsoft/
解压缩 tar zxvf httpd-2.2.19.tar.gz
cd httpd-2.2.19
开始编译apache
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-expires --enable-cache --enable-mem-cache

--prefix是按照目录。enable后面模块选项。这里选择一些常用的模块,so是支持动态链接机制上加载DSO模块。后面装PHP时就会创建一个so的php模块。rewrite就是常用到的重写。expires是控制HTTP的"Expires:"和"Cache-Control:"头内容,PHP用header控制缓存时要用到

编译好后,开始安装 make && make install
安装完成后我们启动apache


/usr/local/httpd/bin/apachectl -k start 也可以通过 stop 或者 restart 停止或重启apache


3 安装Mysql
这里用的是5.1.58免编译版的
解压Mysql    tar zxvf mysql-5.1.58-linux-i686-glibc23.tar.gz
做链接 ln -s  /tmp/Softdownload/mysql-5.1.58-linux-i686-glibc23 /usr/local/mysql   这里是绝对路径
创建Mysql用户 
groupadd mysql
useradd -g mysql mysql
修改目录权限
chown -R mysql.mysql /usr/local/mysql/
数据库初始化:
scripts/mysql_install_db --user=mysql
将下面两个文件复制到相应位置
cd /usr/local/mysql
[root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
启动Mysql
bin/mysqld_safe &
测试 bin/mysql 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.01 sec)
正常

4 安装PHP

1)编译安装jpeg6
mkdir -p /usr/local/jpeg6
mkdir -p /usr/local/jpeg6/bin
mkdir -p /usr/local/jpeg6/lib
mkdir -p /usr/local/jpeg6/include
mkdir -p /usr/local/jpeg6/man
mkdir -p /usr/local/jpeg6/man1
mkdir -p /usr/local/jpeg6/man/man1
jpeg6编译时不会创建目录,因此需要手动添加

tar zxvf jpegsrc.v6b.tar.gz 解压
cd jpeg-6b/ 编译
./configure --prefix=/usr/local/jpeg --enable-shared --enable=static

编译时出现如下问题
[root@bogon jpeg-6b]# make; make install
./libtool --mode=compile gcc -O2  -I. -c ./jcapimin.c
make: ./libtool:命令未找到
make: *** [jcapimin.lo] 错误 127
解决方法
首先看有没有安装libtool 及 libtool-ltdl-devel
rpm   -qa | grep   libtool

然后进入jpeg-6b的源码目录,然后执行以下步骤,切记!COPY到当前目录注意后面的点(.)

cp   /usr/share/libtool/config.sub  .
cp   /usr/share/libtool/config.guess  .

也就是把 libtool里面的两个配置文件拿来覆盖掉jpeg-6b目录下的对应文件
make clean 再重新configure
没有权限的时候先建立对应的文件夹,再次make install就行了
又出现问题:
/usr/bin/install: cannot create regular file `/usr/local/jpeg/include/jconfig.h': No such file or directory
make: *** [install-headers] Error 1
重新创建目录
mkdir -p /usr/local/jpeg/include  问题解决

2)编译安装libpng
tar zxvf libpng-1.2.12.tar.gz
cd libpng-1.2.12
./configure
make && make install

3)编译freetype
tar zxvf freetype-2.2.1.tar.gz
cd freetype-2.2.1
./configure --prefix=/usr/local/freetype

4)编译GD库
tar -zxvf gd-2.0.35.tar.gz
cd gd-2.0.35
./configure --prefix=/usr/local/gd2 --with-jpeg=/usr/local/jpeg6/ --with-png=/usr/local/lib/  --with-freetype=/usr/local/freetype/

make && make install
5)安装编译PHP


解压 tar zxvf php-5.3.6.tar.gz
cd php-5.3.6
开始编译
[root@localhost php-5.3.6]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs   --with-mysql-dir=/usr/local/mysql/ --with-gd=/usr/local/gd2/ --with-png --with-jpeg-dir=/usr/local/jpeg6/ --with-zlib-dir=/usr/lib --with-freetype-dir=/usr/local/freetype/
--prefix是安装目录。--with-config-file-path是指定php配置文档php.ini所在的目录。--with-mysql,安装mysql扩展。--with-zlib安装zlib扩展,前提是linux已经安装了zlib,未安装可以去掉这个选项。 安装mbstring和xml扩展。这些都是常用的模块。

configure: error: Cannot find MySQL header files under yes.

Note that the MySQL client library is not bundled anymore.
编译时出现这个问题,刚开始被误导了,这样做,没解决问题,出现另一个错误
configure: error: mysql configure failed. Please check config.log for more information.
最后,找到解决方法,实际上是--with-mysql选项有误,应该为--with-config-dir=/usr/local/mysql
OK

configure fails with:
checking for MySQL support... yes
checking for specified location of the MySQL UNIX socket... no
checking for MySQL UNIX socket location... no
configure: error: Cannot find libmysqlclient under /usr/local/mysql.
Note that the MySQL client library is not bundled anymore!
解决方法:
This fixes the problem:
cd /usr/local/mysql
ln -s lib lib64

 


复制php.ini文件
cp php.ini-production /usr/local/lib
重命名 mv php.ini-production php.ini
php编译完成
5配置apache与PHP的关联

编辑文件:vi /var/www/html/test.php
<?php
phpinfo();
?>
在浏览器中打开 http://localhost/test.php 可以看到安装的PHP的一些信息,及其他服务的相应模块