centos6.5源码编译安装apache2.4.20和php5.6.21以及安装pdo_mysql和GD库等扩展库

不懂linux,折腾了好久,终于算是搞定了,只包含apache和php,没包含mysql的安装,将安装的过程记录了下来

用gcc -v 命令检查安装时使用的编译工作是否存在
如系统未安装,在系统联网的情况下使用yum install gcc和yum install gcc-c++安装
没安装会导致配置./configure失败

卸载默认的低版本环境
在安装之前,先应检查一下系统中是否已经安装了低版本的环境,如果已经安装过了,停止原来的服务运行,或者把原来的环境卸载掉,我自己安装的centos只有mysql 我顺带就把它卸载了

a. 卸载Apache (注意对应的版本号)
# rpm -qa | grep httpd
说明:检查是否安装了httpd软件包
# rpm -e httpd-2.2.3-63.el5.centos –nodeps
说明:卸载软件包, –nodeps 如果有连带关系,也强制卸载
# cd /etc/httpd/
# rm -rf *
说明:到原来的apache安装目录下,将其所有的安装目录和文件都删掉

b. 卸载Mysql
# rpm -qa | grep mysql
# rpm -e mysql-5.0.77-4.el5_4.2 –nodeps
说明:卸载mysql

c. 卸载Php
# rpm -qa | grep php
# rpm -e php-common-5.1.6-27.el5 –nodeps
# rpm -e php-ldap-5.1.6-27.el5 –nodeps
# rpm -e php-cli-5.1.6-27.el5 –nodeps
# rpm -e php-5.1.6-27.el5 –nodeps
说明:卸载PHP

然后在系统盘下建立 一个文件夹用于放下载的源码包,我建的叫 webscd
打开终端
cd /
mkdir webscd

然后开始下载源码包并且安装,先打开存放的目录,我下的都是gz包
cd /webscd
1.下载 apr 安装
下载命令
wget http://apache.fayea.com//apr/apr-1.5.2.tar.gz
解压命令
tar zxf apr-1.5.2.tar.gz
cd apr-1.5.2/
配置选项
./configure –prefix=/usr/local/apr
make
make install

2. 安装 apr-util
wget http://apache.fayea.com//apr/apr-util-1.5.4.tar.gz
tar zxf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4/
./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr
make
make install

3.安装pcre 不能下载pcre2 否则apache configure会报错configure: error: Did not find pcre-config script at /usr/local/pcre
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
tar zxf pcre-8.38.tar.gz
cd pcre-8.38/
./configure –prefix=/usr/local/pcre
make
make install

4.安装apache 这里动态和静态编译 很有可能影响到模块
wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.20.tar.gz
tar zxf httpd-2.4.20.tar.gz
cd httpd-2.4.20/

./configure –prefix=/usr/local/apache2 –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util –with-pcre=/usr/local/pcre –enable-so –enable-rewrite
make
make install

5.将apache设置为系统服务
cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd

6.修改/etc/rc.d/init.d/httpd
vi /etc/rc.d/init.d/httpd
按I 进入编辑状态
添加(# !/bin/sh下面)
# chkconfig: 2345 50 90
# description: Activates/Deactivates Apache Web Server

然后esc
然后shift+zz保存退出
( cat /etc/rc.d/init.d/httpd可以查看内容)

7. 运行chkconfig把Apache添加到系统的启动服务组里面:
# chkconfig –add httpd
# chkconfig httpd on
然后再service httpd start
这里启动的时候出现
Apache启动出现:
[root@ www.linuxidc.com bin]# service httpd restart
AH00557: httpd: apr_sockaddr_info_get() failed for linux.64.114
AH00558: httpd: Could not reliably determine the server’s fully qualified domain
name, using 127.0.0.1. Set the ‘ServerName’ directive globally to suppress this
message

解决:
[root@linux bin]# vi /usr/local/apache2/conf/httpd.conf (apache配置文件的路径)

修改ServerName www.example.com:80 为 ServerName localhost:80

8.下载php
wget http://cn2.php.net/distributions/php-5.6.21.tar.gz
tar zxf php-5.6.21.tar.gz
cd php-5.6.21
./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/php/lib –with-apxs2=/usr/local/apache2/bin/apxs –with-mysql=shared,mysqlnd –enable-mbstring=all

参数说明:
–prefix=/usr/local/php安装php的位置
–with-config-file-path 配置php.ini文件的位置
–with-iconv-dir iconv扩展的路径 –with-iconv-dir=/usr/local/libiconv
–with-apxs2 为ApacheHTTP服务器编译和安装扩展模块的工具
–enable-mbstring=all mbstring函数库 如 mb_detect_encoding 函数
–with-mysql=shared,mysqlnd 加入这个开启pdo-mysql的时候才能不报错

这里之前忘记设置php.ini的位置了 加入–with-config-file-path
make
make install
复制一份配置文件
cp php.ini-development /usr/local/php/lib/php.ini

这里应该使用 php.ini-production比较好, 实际环境中用这个

vi /usr/local/apache2/conf/httpd.conf
确保以下字符串是否存在
LoadModule php5_module modules/libphp5.so
如果没有就加上
命令状态下使用 /字符串 来查找 用n查找下一个
在DirectoryIndex index.html加上index.php
DirectoryIndex index.php index.html

在AddType application*后面加如下一行 没有这个的话 无法执行php文件
AddType application/x-httpd-php .php .phtml 这里注意,后来看了php官方的手册,现在推荐使用以下方法

官方手册描述:告知 Apache 将特定的扩展名解析成 PHP,例如,让 Apache 将扩展名 .php 解析成 PHP。为了避免潜在的危险,例如上传或者创建类似 exploit.php.jpg 的文件并被当做 PHP 执行,我们不再使用 Apache 的 AddType 指令来设置。参考下面的例子,你可以简单的将需要的扩展名解释为 PHP。我们演示为增加.php。

SetHandler application/x-httpd-php

保存退出

然后重启apache ,有时restart会重启失败,还是用先停止再启动吧
service httpd stop
service httpd start

测试 vi /usr/local/apache2/htdocs/index.php
加入“”,保存退出
访问localhost 成功

编译pdo mysql
cd /webscd/php-5.6.21/ext/pdo_mysql 进入下载的安装包pdo_mysql扩展
执行 phpize 命令
/usr/local/php/bin/phpize

出现错误
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

解决办法
yum install m4
yum install autoconf
执行完 phpize 命令后,在 pdo_mysql 目录中就会出现 configure
执行配置

./configure –with-php-config=/usr/local/php/bin/php-config
因为没有安装mysql所以就不指定–with-pdo-mysql=/usr/local/mysql/ mysql的路径了

make

make的时候出现错误

111

这是一个BUG 需要在编译php的时候加入–with-mysql=shared,mysqlnd,前面已修改
make install
编译完成之后,请注意是否出现类似以下图片所示信息 注意图上的路径

222
然后在php.ini中增加
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20131226/pdo_mysql.so

重启apache去查看是否有pdo_mysql

PHPIZE安装PHP GD扩展 不需要重新编译php
先安装 gd 前置库 : freetype ,jpegsrc,libpng。
安装freetype
wget http://ftp.yzu.edu.tw/nongnu//freetype/freetype-2.6.tar.gz 用这个下载的包有损坏 无法解压 最后直接在本地下好复制进去了
tar zxf freetype-2.6.tar.gz
cd freetype-2.6
./configure –prefix=/usr/local/freetype && make && make install 配置和make 可以一起写

安装 jpegsrc
wget http://www.ijg.org/files/jpegsrc.v9b.tar.gz
tar zxf jpegsrc.v9b.tar.gz
cd jpeg-9b
CFLAGS=”-O3 -fPIC” ./configure –prefix=/usr/local/jpeg && make && make install
mkdir -p /usr/local/jpeg/include
mkdir -p /usr/local/jpeg/lib
mkdir -p /usr/local/jpeg/bin
mkdir -p /usr/local/jpeg/man/man1

安装 libpng
wget http://jaist.dl.sourceforge.net/project/libpng/libpng15/1.5.27rc01/libpng-1.5.27rc01.tar.gz
tar zxf libpng-1.5.27rc01.tar.gz
cd libpng-1.5.27rc01
CFLAGS=”-O3 -fPIC” ./configure –prefix=/usr/local/libpng && make && make install

进入gd扩展包的路径
cd /webscd/php-5.6.21/ext/gd
/usr/local/php/bin/phpize

什么时候需要用到 phpize 呢?当我们需要再加些模块,又不想重新编译php,这些我们就可以用phpize了

./configure –with-php-config=/usr/local/php/bin/php-config –with-jpeg-dir=/usr/local/jpeg –with-png-dir=/usr/local/libpng –with-freetype-dir=/usr/local/freetype

make
make install

然后在php.ini中增加
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20131226/gd.so

安装zip的扩展 可以使用解压缩
cd /webscd/php-5.6.21/ext/zip
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make
make install

然后再php.ini中配置
extension=zip.so 前提是路径已设置

/usr/local/php/bin/php -m 可以查看php有哪些模块
修改extension_dir
extension_dir =
“/usr/local/php/lib/php/extensions/no-debug-zts-20131226/”
后面的扩展就只用写名字不用路径了