LAMP(4)之源码编译安装php5并使用xCache缓存器

LAMP(4)之源码编译安装php5并使用xCache缓存器

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:

php安装

微信扫描文章首部二维码或搜索 zze_coding 关注我的微信公众号发送 #php_package 即可获取 php-5.4.26.tar.bz2 源码包。

1、解压 php 压缩包并编译安装:

$ tar xf php-5.4.26.tar.bz2
$ cd php-5.4.26
$ ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --with-apxs2=/usr/local/httpd24/bin/apxs --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2  --enable-maintainer-zts
$ make && make install

说明:

  • 这里为了支持 apache 的 worker 或 event 这两个 MPM,编译时使用了 --enable-maintainer-zts 选项。
  • 如果使用 PHP 5.3 以上版本,为了链接 MySQL 数据库,可以指定 mysqlnd,这样在本机就不需要先安装 MySQL 或 MySQL 开发包了。mysqlnd 从 php 5.3 开始可用,可以编译时绑定到它(而不用和具体的 MySQL 客户端库绑定形成依赖),但从 PHP 5.4 开始它就是默认设置了,启用命令为 ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
  • 上述 --with-apxs2=/usr/local/httpd24/bin/apxs 配置是让 php 编译成为 apache 的模块,如果把这项改为 --enable-fpm 则表示启动 FPM 功能即使用 FastCGI 模式。

2、为 php 提供配置文件:

$ mkdir /etc/php.d
$ cp php.ini-production /etc/php.ini

3、 编辑 apache 配置文件 httpd.conf,让 apache 支持 php。

$ vim /etc/httpd/httpd.conf
...
AddType application/x-httpd-php  .php
AddType application/x-httpd-php-source  .phps
...
# 修改默认主页可为 index.php
DirectoryIndex  index.php  index.html
...

4、修改文档目录 /usr/local/httpd24/htdocs 下的 index.html 重命名为 index.php,且内容如下:

<?php
// 123456 是数据库的密码,默认不设定时为空
$link = mysql_connect('127.0.0.1','root','123456');
if ($link)
echo "Success...";
else
echo "Failure...";

mysql_close();
phpinfo();
?>

5、执行 service httpd24 restart 重启 httpd 服务,浏览器访问主机 80 端口,结果如下:

image.png

6、测试虚拟主机配置:

$ vim /etc/httpd24/httpd.conf
...
# 取消监听 80 端口
# Listen 80
# 注释原有的 DocumentRoot
#DocumentRoot "/usr/local/httpd24/htdocs"
...
# 开启虚拟主机的分文件配置
Include /etc/httpd24/extra/httpd-vhosts.conf
...

7、配置虚拟主机:

$ mkdir /www/web{1,2} -pv
$ vim /etc/httpd24/extra/httpd-vhosts.conf
# 监听 8081、8082 端口
Listen 8081
Listen 8082
<VirtualHost *:8081>
    DocumentRoot "/www/web1"
    ErrorLog "/var/log/httpd24_web1_error_log"
    CustomLog "/var/log/httpd24_web1_access_log" common
    <Directory "/www/web1">
        AllowOverride none
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:8082>
    DocumentRoot "/www/web2"
    ErrorLog "/var/log/httpd24_web2_error_log"
    CustomLog "/var/log/httpd24_web2_access_log" common
    <Directory "/www/web2">
        AllowOverride none
        Require all granted
    </Directory>
</VirtualHost>

8、在 /www/web{1,2} 目录下各创建 index.php 文件,内容分别如下:

<?php echo "from web1"; ?>
<?php echo "from web2"; ?>

9、重启 httpd 服务,浏览器分别访问 8081、8082 端口:

image.png

image.png

10、还可使用 httpd 自带的命令 ab 进行压力测试:

image.png

该命令的含义是每次并发 100 个请求,一共发送 5000 个请求。

php代码的执行流程

1、zend 引擎进行语法分析并编译为 opcode;
2、将 opcode 加载到内存执行 opcode;

为了避免 php 解释器自身去清除 opcode,并且实现在多个 php 进程间共享 opcode 的功能,引入了缓存器的功能。
常见的缓存器有:

  1. APC;
  2. eAccelerator;
  3. xCache;

缓存器xCache的安装

php 5.4 以上的版本需要 xCache 版本在 2.0 以上。
扫描文章首部二维码或搜索 zze_coding 关注我的微信公众号发送 #xcache 获取源码包。

1、解压并编译安装:

$ tar xf xcache-3.1.0.tar.bz2
$ cd xcache-3.1.0
$ /usr/local/php/bin/phpize
$ ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
$ make && make install
...
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

xCache 是 php 的扩展功能,几乎所有的 php 扩展功能在编译安装前都需要执行一下 phpize 命令以准备编译;
php-config 程序能够获取到 php 程序编译时设定的配置信息,xCache 在编译时会通过 php-config 程序获取这些配置信息;
编译成功后最后输出的 Installing shared extensions 信息需要保留;

2、为 php 提供 xCache 的配置文件:

$ cp xcache.ini /etc/php.d

3、编辑 xCache 的配置文件并配置:

$ vim /etc/php.d/xcache.ini
...
extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
...

/usr/local/php/lib/php/extensions/no-debug-zts-20100525/ 为 xCache 编译完成后输出的路径。

4、重启 httpd 服务,浏览器访问主机 80 端口,在页面中查找到如下 xCache 相关组件信息即表示 xCache 扩展安装成功:

image.png

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.zze.xyz/archives/lamp4.html

Buy me a cup of coffee ☕.