CentOS6.x 源码编译搭建LAMP环境

澳门新葡亰网址 1

独立的 PHP 扩展可以独立于 PHP
源码之外进行分发。要创建一个这样的扩展,需要准备好两样东西:

源码准备

由于本文搭建LAMP环境使用的是源码安装,在安装过程中需要使用到许多的软件安装包,因此在安装过程中应该首先把需要用到的安装包进行下载,需要使用的软件安装包以及下载地址如下所示:

  • 配置文件 (config.m4)
  • 你的模块源码

核心源码文件

apache源码包 httpd-2.4.9.tar.gz

http://httpd.apache.org/

mysql源码包 mysql-5.7.4.tar.gz

http://dev.mysql.com/downloads/

php源码包 php-5.5.14.tar.gz

http://cn2.php.net/downloads.php

接下来我们来描述一下如果创建这些文件并组合起来。

可选源码文件

Apache编译依赖包

apr-1.5.1.tar.gz (Apache可移植运行库的组件)

http://apr.apache.org/download.cgi

apr-util-1.5.3.tar.gz (Apache可移植运行库的组件)

澳门新葡亰网址,http://apr.apache.org/download.cgi

pcre-8.35.zip (支持正则表达式的函数库)

http://sourceforge.net/projects/pcrehttpd-2.4.9.tar.gz

PHP编译依赖包

libxml2-2.9.0.tar.gz (用于解析XML的跨平台C语言库)

ftp://xmlsoft.org/libxml2/

libmcrypt-2.5.8.tar.gz (用于实现加密算法的库)

ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/

zlib-1.2.8.tar.gz (实现压缩和解压缩的库)

http://www.zlib.net

freetype-2.5.3.tar.gz (开源免费的可移植的字体引擎)

http://download.savannah.gnu.org/releases/freetype/

libpng-1.6.12.tar.gz (用于读写png文件的库)

ftp://ftp.simplesystems.org/pub/libpng/png/src/

jpegsrc.v9a.tar.gz (用于读写jpeg文件的库)

http://www.ijg.org/files/

libgd-2.1.0.tar.gz (开源的图像处理库)

https://bitbucket.org/libgd/gd-libgd/downloads

MySQL编译依赖包

bison-2.5.tar.gz(用于自动生成语法分析器程序)

http://www.gnu.org/software/bison/

ncurses-5.8.tar.gz(管理程序在字符终端显示的函数库)

http://www.gnu.org/software/ncurses

上述软件可以使用源码编译安装,也可以使用yum安装,有些软件可能系统自带。其中和APR相关的内容和Autotools相关的内容会单独写文章进行介绍。另外有关运行库和开发库的区别也将另写文章剖析。

准备好系统工具

想要扩展能够在系统上编译并成功运行,需要准备转以下工具:

  • GNU autoconf
  • GNU automake
  • GNU libtool
  • GNU m4

以上这些都可以从 获取。

注:以上这些都是类 Unix 环境下才能使用的工具。

环境准备

改装一个已经存在的扩展

为了显示出创建一个独立的扩展是很容易的事情,我们先将一个已经内嵌到 PHP
的扩展改成独立扩展。安装 PHP 并且执行以下命令:

$ mkdir /tmp/newext
$ cd /tmp/newext

现在你已经有了一个空目录。我们将 mysql 扩展目录下的文件复制过来:

$ cp -rp php-4.0.X/ext/mysql/* .
# 注:看来这篇 README 真的需要更新一下了
# PHP7 中已经移除了 mysql 扩展部分

到这里扩展就完成了,执行:

$ phpize

现在你可以独立存放这个目录下的文件到任何地方,这个扩展可以完全独立存在了。

用户在编译时需要使用以下命令:

$ ./configure 
       [--with-php-config=/path/to/php-config] 
       [--with-mysql=MYSQL-DIR]
$ make install

这样 MySQL 模块就可以使用内嵌的 MySQL 客户端库或者已安装的位于 MySQL
目录中的 MySQL。

注:意思是说想要编写 PHP 扩展,你既需要已经安装了 PHP,也需要下载一份
PHP 源码。

检测并配置编译环境

1.检查系统中是否存在已安装的LAMP环境,以Apache为例,输入‘rpm -qa | grep
-i httpd’,如果存在已安装的Apache,则应使用‘rpm –e httpd-xxx
-nodeps’卸载Apache(xxx为版本号),MySql与PHP操作与Apache相同。

2.LAMP环境搭建所需要的软件都使用C语言开发的,所以安装源代码文件最少需要配置(configure)、编译(make)、安装(make
install)三个步骤,在虚拟机上输入‘gcc
-v’命令,如果gcc已安装,则如下图所示:

澳门新葡亰网址 1

图片.png

否则应该首先安装编译工具,使用yum安装,输入命令行‘yum -y install make
cmake gcc gcc-c++
’。bison用于生成语法分析器程序,ncurses是字符终端下屏幕控制的基本库,两者被MySQL安装所依赖。

定义一个新扩展

我们给示例扩展命名为 “foobar”。

新扩展包含两个资源文件:foo.c 和
bar.c(还有一些头文件,但这些不只重要)。

示例扩展不引用任何外部的库(这点很重要,因为这样用户就不需要特别指定一些编译选项了)。

LTLIBRARY_SOURCES
选项用于指定资源文件的名字,你可以有任意数量的资源文件。

注:上面说的是 Makefile.in 文件中的配置选项,可以参考
xdebug。

防火墙和SELinux配置

编辑/etc/sysconfig/iptables文件,配置防火墙,添加如下两条规则并保存退出

-A INPUT –m state –state NEW –m tcp –p tcp –dport 80 –j ACCEPT
-A INPUT –m state –state NEW –m tcp –p tcp –dport 3306 –j ACCEPT

由于SELINUX的开启可能会对MySQL造成一定的影响,所以提前关闭SELINUX

编辑/etc/selinux/config文件,修改如下内容:

#SELINUX=enforcing      #将该行注释
#SELINUXTYPE=targeted   #将该行注释
SELINUX=disabled        #增加内容

完成上述操作后,重启系统

修改 m4 后缀的配置文件

m4
配置文件可以指定一些额外的检查。对于一个独立扩展来说,你只需要做一些宏调用即可。

PHP_ARG_ENABLE(foobar,whether to enable foobar,
[  --enable-foobar            Enable foobar])

if test "$PHP_FOOBAR" != "no"; then
  PHP_NEW_EXTENSION(foobar, foo.c bar.c, $ext_shared)
fi

PHP_ARG_ENABLE 会自动设置好正确的变量以保证扩展能够被
PHP_NEW_EXTENSION 以共享模式启动。

PHP_NEW_EXTENSION
的第一个参数是扩展的名称,第二个参数是资源文件。第三个参数 $ext_shared
是由 PHP_ARG_ENABLE/WITHPHP_NEW_EXTENSION 设定的。

请始终使用 PHP_ARG_ENABLEPHP_ARG_WITH
进行设置。即使你不打算发布你的 PHP 模块,这些设置也可以保证让你的模块和
PHP 主模块的接口保持一体。

注:PHP_ARG_ENABLEPHP_ARG_WITH
应该是用于定义模块是动态扩展还是静态编译进 PHP 中,就跟编译 PHP 时使用的
--enable-xxx--with-xxx 一样。

开始编译

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图