网上有很多关于编译安装php&&apache的教程,但是个人感觉都不是很好,所以决定干脆自己写一篇.本篇不单单是编译安装php&&apache的教程. 还穿插了一些其他的知识点.

本次安装环境为CentOS6.5,如果是ubuntu/debain发行版,也不必太担心,因为使用源码编译安装并不会因为发行版本的问题而有所不同.

在开始之前,需要准备一下编译环境.执行下面命令来安装好一些库文件,免得编译的时候出现各种各样的问题,很多人会好奇,为什么要安装这么多东西,这些东西有什么用?这里面除了gcc, gcc-c++用来编译C/C++之外, 其他的都是php&&apache扩展用到的一些库.所以不必纠结于此.安装即可.

yum update
yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libpng libpng-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses curl openssl-devel gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel readline-devel libxslt-devel expat-devel xmlrpc-c xmlrpc-c-devel

安装Apache

开始之前先叨叨一下,在很多时候可能会看到httpd或者apache2这个名称,其实不管是httpd, apache还是apache2,都是一个东西.

在安装httpd之前,我们需要先安装如下三个东西

  • Apr(apache portable runtime)

  • Apr-Util

  • pcre

至于这三个是什么东西,这里暂且不表.有兴趣的同学可以自行google.

执行如下命令下载需要的三个源码包,注意如果wget的下载链接失效,只需到官网下载即可.

cd /usr/local/src
wget http://mirrors.cnnic.cn/apache//apr/apr-1.5.2.tar.gz
wget http://mirrors.cnnic.cn/apache//apr/apr-util-1.5.4.tar.gz
wget http://downloads.sourceforge.net/project/pcre/pcre/8.39/pcre-8.39.tar.gz   (注意, 这个网址需要科学上网)
wget http://mirrors.cnnic.cn/apache//httpd/httpd-2.4.23.tar.bz2

下面,解压apr的源码包,并且编译安装.

tar -zxvf apr-1.5.2.tar.gz
cd /apr-1.5.2
./configure --prefix=/usr/local/apr
make && make install

上面是linux平台编译安装软件的典型步骤,./configure, make, make install../configure后面带的是编译参数, --prefix表示这个软件会安装在哪里.你可以自行指定不同的安装目录,但是要注意的是,我们后面会用到这个目录,所以你得记得你安装在了哪里.安装完毕之后,你可以在/usr/local看到apr的目录,这个目录就是apr的安装目录了.

同样,安装apr-util的方式跟上面类似,这是./configure多了一个参数--with-apr指定了apr安装在哪里,因为apr-util的安装依赖apr.如果你有兴趣,可以自行./configure --help查看更多参数.

tar -zxvf apr-util-1.5.4
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make
make install

最后编译安装pcre,这里安装 pcre不指定安装路径,默认会安装在/usr/local/bin下面.(CentOS下)

tar -zxvf pcre-8.39.tar.gz
cd pcre-8.39
./configure
make && make install

至此,我们可以安装apache了.同样,安装apache的步骤跟上面一样.只是可能./configure指定的参数不一样.

tar -zxvf httpd-2.4.23.tar.bz2
cd httpd-2.4.23
./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
make
make install

如上,安装好之后,你就可以在/usr/local/下看到apache目录了,所有有关apache的东西都在这个目录下,包括log,配置文件,web站点.你的apache目录内部可能包含如下信息

drwxr-xr-x  2 root root  4096 Dec  2 19:16 bin
drwxr-xr-x  2 root root  4096 Dec  2 19:16 build
drwxr-xr-x  2 root root  4096 Dec  2 19:16 cgi-bin
drwxr-xr-x  4 root root  4096 Dec  2 20:10 conf
drwxr-xr-x  3 root root  4096 Dec  2 19:16 error
drwxr-xr-x  2 root root  4096 Dec  2 19:39 htdocs
drwxr-xr-x  3 root root  4096 Dec  2 19:16 icons
drwxr-xr-x  2 root root  4096 Dec  2 19:16 include
drwxr-xr-x  2 root root  4096 Dec  2 19:38 logs
drwxr-xr-x  4 root root  4096 Dec  2 19:16 man
drwxr-xr-x 14 root root 12288 Jul  1 01:15 manual
drwxr-xr-x  2 root root  4096 Dec  2 19:31 modules

其中htdocs就是用于放置web页面的,而conf里面存放了所有的配置文件.

如果需要使用service httpd start的方式启动apache服务,需要执行如下的命令 :

cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

至此,执行service httpd start启动服务,访问127.0.0.1(如果是服务器搭建在本机的话)可以看到页面输出It's work.

安装PHP

有了上面安装apache的经验,你应该知道,编译安装php也就是三个步骤,可能不同的是编译安装的选项不大一样.从PHP官网下载你所需要的php版本,任意后缀的压缩包都可以,如同上面解压,进入源码目录.执行编译三步骤,这里要注意的是./configure的参数.

./configure \
--prefix=/usr/local/php/ \
--with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/etc/conf.d \
--enable-soap \
--with-openssl \
--with-mcrypt \
--with-pcre-regex \
--with-sqlite3 \
--with-zlib \
--enable-bcmath \
--with-iconv \
--with-bz2 \
--enable-calendar \
--with-curl \
--with-cdb \
--enable-dom \
--enable-exif \
--enable-fileinfo \
--enable-filter \
--with-pcre-dir \
--enable-ftp \
--with-gd \
--with-openssl-dir \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-gettext \
--with-gmp \
--with-mhash \
--enable-json \
--enable-mbstring \
--disable-mbregex \
--disable-mbregex-backtrack \
--with-libmbfl \
--with-onig \
--enable-pdo \
--with-pdo-mysql \
--with-zlib-dir \
--with-pdo-sqlite \
--with-readline \
--enable-session \
--enable-shmop \
--enable-simplexml \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-libxml-dir \
--with-xsl \
--enable-zip \
--enable-mysqlnd-compression-support \
--with-pear \
--with-mysqli \
--with-apxs2=/usr/local/apache/bin/apxs

./congigure 所携带的额参数有点多,这里主要要注意的是最后一个参数:--with-apxs2,我们这里使用的是模块化的方式安装php,并没有使用fpm的方式安装,所以最后一个参数的值应该为apache的apxs所在路径.除此之外,--with-config-file-path--with-config-file-scan-dir指定了配置文件的放置路径.

执行上面的命令在CentOS6.5下(可能其他环境下也会)会报一个错误configure: error: mcrypt.h not found. Please reinstall libmcrypt,这个错误四因为服务器没有安装加密使用的mcrypt插件,只要使用yum install libmcrypt libmcrypt-devel安装即可,当然你也可以自行选择使用源码编译的方式安装.

安装好mrycpt之后,重新自行上面的命令既可,成功之后自行make && make install即可完成安装.

最后,拷贝源码包中的php.ini到php的配置文件中,这个是因为我们编译安装的时候不会生成php.ini的配置文件,我们需要自己拷贝一份.你可能注意到php源码包中有php.ini-productionphp.ini.development两个文件,这两个文件是代表生产环境跟开发环境使用的配置文件, 这里不纠结这些,拷贝任意一个.

cp /usr/local/src/php-5.6.28/php.ini-production /usr/local/php/etc/php.ini

但是,这个时候apache是没有办法执行以php结尾的文件,要想让apache能够执行以php结尾的文件, 还需要做一件事情:找到apache的主配置文件/usr/local/apache/conf/httpd.conf,在AddType application/x-compress .Z的后面添加两行:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps 

再找到DirectoryIndex index.html这一行,在index.html前面添加index.php,这里index.html跟index.ph的先后顺序表明了如果同时存在index.html跟inde.php的时候.访问主页优先选择index.php.

执行service httpd restart,然后执行echo "<?php phpinfo();" >> /usr/local/apache/htdocs/index.php生成index.php文件,访问主页,应该可以看到有关php的信息.

至此php跟apache安装完毕.

Other

好了,php跟apache是安装成功了,但是如果想要添加php扩展,应该如何安装呢.这里介绍两个安装php扩展的方式

编译源码安装

同上,我们可以下载扩展的源码包,然后自己编译安装,一样,安装唯一不同的是./configure的参数不一样,这里以安装redis扩展演示一下,其他的扩展大同小异

git clone https://github.com/phpredis/phpredis (如果没有使用git的经验,可以google redis扩展的源码包下载)

cd phpredis
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

说明一下上面命令中的两点 :

  • /usr/local/php/bin/phpize:在编译扩展之前,一般要先执行这个命令,如果你的安装路径跟我的一样的话, 你应该可以在/usr/local/php/bin中找到.至于phpize的作用 : phpize 命令是用来准备 PHP 扩展库的编译环境的,更多信息访问php官网关于phpize的介绍

  • ./configure后面携带的参数,如果环境中有多个php版本,可以使用--with-php-config来指定使用哪一个版本编译,更多信息访问php官网关于php-config的介绍

编译完成之后redis的扩展会被安装在/usr/local/php/lib/php/extensions/no-debug-zts-20131226/下.你可以在这个目录下找到redis.so的信息.接下来,我们在/usr/local/php/etcphp.ini中添加一行extension=redis.so,刷新phpinfo等页面,可以找到redi扩展的信息.

pecl

这个东西你可能会有点眼熟,还有pear,可能你都见过这两个东西,但是你并没有用过他们,这两个东西的作用都差不多,都是用来安装php扩展的.至于这两个东西有什么不同,这里不展开,只要知道PEAR跟PECL都可以用来安装php扩展.下面演示下如果使用pecl如何安装redis扩展.

PECL这个网站包含了所有的php扩展,你可以访问这个网站,查找你要安装的扩展的信息.比如这里搜索redis扩展可以看到如下信息 :

图片描述

找到redis,然后执行命令

/usr/local/php/bin/pecl install redis-2.2.8

可以看到,pecl会自动帮我们下载redis扩展的源码包,然后自动编译安装,安装好之后,扩展也是放在/usr/local/php/lib/php/extensions/no-debug-zts-20131226/下,我们只要在php.ini中添加extension=redis.so就可以了.pecl安装php扩展的简单语法如下 : pecl install 扩展名-版本号


JayChen
1k 声望104 粉丝

哒哒哒...我有一个漂亮的女票