菜单

linux下php源码安装,缓存插件之

2019年8月6日 - 4166m金沙
linux下php源码安装,缓存插件之

简介:

安装PHP依赖:
# sudo -s

Zend Opcache 、APC 这都是 PHP 代码加速器,将 PHP
源代码的编译结果缓存起来,再次调用时对比时间标记,如果没有改变则使用缓存数据,免去再次解析代码的开销。

# LANG=C

APC 止步于 PHP 5.4 ,Zend Opcache 从 PHP 5.5 开始集成,取代 APC 。

# yum -y install gcc automake autoconflibtool make

一、安装 Zend Opcache

# yum -y install gccgcc-c++glibc

1、源码编译 PHP 时,加入 –enable-opcache
即可开启该扩展,之后稍做配置即可

# yum -y install libmcrypt-devel mhash-devel libxslt-devel \ libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \ zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel \ ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \ krb5 krb5-devel libidn libidn-devel openssl openssl-devel  

yum install -y libpng*  

yum install -y libjpeg*

yum install -y libXpm*

yum install -y freetype*

yum install -y zlib*  安装PHP  # wget http://cn2.php.net/distributions/php-5.4.7.tar.gz tar zvxf php-5.4.7.tar.gz cd php-5.4.7 # ./configure --prefix=/usr/local/php  --enable-fpm --with-mcrypt \ --enable-mbstring  --with-curl  --with-mysql --with-mysqli --enable-pdo=shared    --with-pdo-mysql=shared, /usr/local/mysql     \ --enable-inline-optimization --with-bz2   --enable-sockets \ --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \ --with-mhash --enable-zip --with-pcre-regex\ --with-gd  --enable-gd-native-ttf --with-png-dir=/usr/lib64/ --with-zlib-dir=/lib64/ --with-ttf  \

--with-jpeg-dir=/usr/lib64/ --with-freetype-dir=/usr/lib64/ --with-xpm-dir=/usr/lib64/    \

# make  # make install   php配置文件(php解压包源码目录中进行复制)  # cp php.ini-development /usr/local/php/lib/php.ini  打开 php.ini:   vim /usr/local/php/lib/php.ini     修改为如下所示:      cgi.fix_pathinfo=0 date.timezone = Asia/Shanghai mysql.default_socket = /tmp/mysqld.sock pdo_mysql.default_socket= /tmp/mysqld.sock mysqli.default_socket =/tmp/mysqld.sock      注意修改了php配置文件后,php-fpm进程需要重新加载配置文件或者重启一下。   /tmp/mysqld.sock是mysql启动后的sock文件路径. 

2、手动添加 Zend Opcache 扩展。

 
如果www用户不存在,创建www用户。
[root@iZ286pkhut4Z src]# groupadd www
[root@iZ286pkhut4Z src]# useradd -g www www

shell > cd /usr/local/src/php-5.6.17/ext/opcache # 进去 PHP
源码目录下的插件目录
shell > /usr/local/php/bin/phpize # 生成 configure
shell > ./configure –with-php-config=/usr/local/php/bin/php-config
shell > make; make install # 完成安装
Installing shared extensions:
/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/

创建php-fpm配置文件(php-fpm是fastcgi主进程,可以启动和管理多个php-cgi子进程)

二、配置 Zend Opcache

(fastcgi模型是由一个主进程和多个子进程构成,这个主进程进行管理这些子进程)

 

[root@iZ286pkhut4Z src]# cd /usr/local/php

shell > vim /usr/local/php/php.ini

[root@iZ286pkhut4Z php]# cp etc/php-fpm.conf.default etc/php-fpm.conf [root@iZ286pkhut4Z php]# vi etc/php-fpm.conf user = www group = www listen = 127.0.0.1:9000 编辑配置文件php-fpm.conf,只需修改上述三个指令,然后保存。

[opcache] # 找到该模块

把php安装目录的权限设置成www用户和用户组

zend_extension=’/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/opcache.so’
# 指定库文件

# chmod u+w  /usr/local/php
# chown -R www:www /usr/local/php

opcache.enable=1 # 开启 Zend Opcache

php-fpm 如何关闭 重启?

opcache.enable_cli=1 # 开启在命令行使用 Opcache

php-fpm 启动: [root@iZ286pkhut4Z php]# ./sbin/php-fpm [root@iZ286pkhut4Z php]# ps -ef | grep php-fpm root     21100     1  0 13:04 ?        00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf) www      21101 21100  0 13:04 ?        00:00:00 php-fpm: pool www www      21102 21100  0 13:04 ?        00:00:00 php-fpm: pool www php-fpm 关闭:kill -INT   21100 php-fpm 重启:kill -USR2 21100

opcache.memory_consumption=32 # 共享内存大小,单位 MB
,根据实际情况设置

**

opcache.interned_strings_buffer=8

php安装完毕,下面是nginx中的fast-cgi配置**

**nginx安装方式,自己打开链接看看。

在nginx安装完毕后:**

(1) 创建一个供www.domain.com虚拟主机使用的目录:  [root@iZ286pkhut4Z src]# mkdir -p /data0/htdocs/www [root@iZ286pkhut4Z src]# chmod +w /data0/htdocs/www [root@iZ286pkhut4Z src]# chown -R www:www /data0/htdocs/www  (2)在/data0/htdocs/www目录下安装thinkphp3.2.2框架  #cd /data0/htdocs/www # wget https://github.com/liu21st/thinkphp/archive/master.zip 解压缩thinkphp3.2.2 # unzip thinkphp-master.zip # cd thinkphp-master 解压文件全部移动到www目录下 # mv *   ../ # cd .. 删除这个空目录 # rm -rf think-master 更改thinkphp框架文件的user为www用户 # chown -R www:www /data0/htdocs/www/* # ls  Application  composer.json  index.php  Public  README.md  ThinkPHP  这样就安装好thinkphp框架了.   (3)配置thinkphp的URL模式为1pathinfo模式  # vim /data0/htdocs/www/ThinkPHP/Conf/convention.php 修改URL_MODEL  => 1   (4)nginx配置文件修改  # vim /usr/local/nginx/conf/nginx.conf

 
user   www;

worker_processes  2;
error_log  logs/error.log;
pid        logs/nginx.pid;
worker_rlimit_nofile 65535;

events {
    use epoll;
    worker_connections  65535;
}

http {
    include       mime.types;
    default_type  application/octet-stream

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 8m;
    sendfile on;
    log_format  main  ‘$remote_addr – $remote_user [$time_local]
“$request” ‘
                      ‘$status $body_bytes_sent “$http_referer” ‘
                      ‘”$http_user_agent”
“$http_x_forwarded_for”‘;

    access_log  logs/access.log  main;

        keepalive_timeout  65;

    tcp_nopush     on;
    tcp_nodelay on;

    #fastcgi
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;

    #gzip  on;
  server {
        listen 80;
        server_name www.domain.com domain.com;
        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
       #   \.php 只处理动态请求,对于静态资源请求由下面的
location匹配和处理
        location ~ \.php {
                root /data0/htdocs/www;
                fastcgi_pass 127.0.0.1:9000;
               
#包含nginx服务器传递给fastcgi程序的参数,php中通过$_SERVER[‘参数名’]可获取
                include   fastcgi.conf;
               
#定义变量$fastcgi_script_name_new赋值为$fastcgi_script_name变量
                set $path_info “”;
                set $fastcgi_script_name_new
$fastcgi_script_name;
               
#判断url是否是pathinfo形式的,如果是则把这个url分割成两部分,index.php入口文件之后的pathinfo部分存入$path_info变量中,剩下的部分和$document_root根目录定位index.php入口文件在文件系统中的绝对路径
.

              if ($fastcgi_script_name ~*   “^(.+\.php)(/.+)$”  )
{
                        set $fastcgi_script_name_new $1;
                        set $path_info $2;
                }
                   
                       
#对fastcgi.conf中的SCRIPT_FILENAME和SCRIPT_NAME
fastcgi参数进行重写,目的是指定入口文件在文件系统中的绝对路径给script_filename参数,让fastcgi知道index.php文件位置。
                        fastcgi_param   SCRIPT_FILENAME  
$document_root$fastcgi_script_name_new;
                        fastcgi_param   SCRIPT_NAME  
$fastcgi_script_name_new;
                       
#定义一个新的nginx服务器传递给fastcgi的参数PATH_INFO,thinkphp需要这个入口文件index.php后的pathinfo信息
                        fastcgi_param   PATH_INFO $path_info;
        }
#
用来匹配静态资源,如果不是静态资源就重写,然后重新轮训所有的location块,由上面的location块匹配后动态处理这个请求
        location / {
                root /data0/htdocs/www;
                index index.php index.html index.htm;

                if (!-e  $request_filename){
                        rewrite ^(.*)$ /index.php$1 last;
                }
        }
    }
}
上述就是nginx配置文件**,

(4)在/data0/htdocs/www目录下加入404.html文件和50x.html文件,因为在nginx.conf配置文件中配置了这两个文件。

(5)启动php-fpm和nginx

# /usr/local/php/sbin/php-fpm
# /usr/local/nginx/sbin/nginx

(6)测试nginx和thinkphp是否搭配好了。

**在浏览器中输入 www.domain.com, 会显示如下内容:

opcache.max_accelerated_files=4000 #
最大缓存文件数量,命中率低时,可以提高该限制 ( 4000 并不是整 4000
,会比这个数多一些 )

🙂

欢迎使用 ThinkPHP!

[ 您现在访问的是Home模块的Index控制器 ]**

(7) 让thinkphp能够连接数据库
**

  1.  没有安装PDO扩展时,thinkphp需要这个扩展 。

PDO安装错误:configure: error: Cannot find php_pdo_driver.h.

安装pdo_mysql必须先安装pdo模块,先装pdo模块吧

cd  php5.4/ext/pdo/

/usr/local/webserver/php/bin/phpize

./configure –with-php-config=/usr/local/webserver/php/bin/php-config 
–enable-pdo=shared

make &&make install

cd php5.4/ext/pdo_mysql/

/usr/local/webserver/php/bin/phpize

./configure –with-php-config=/usr/local/webserver/php/bin/php-config
–with-pdo-mysql=/data/mysql/bin/mysql_config

make &&make install

编译成功后会看到php安装目录下出现了扩展模块的目录

交以下几行添加至php/lib/php.ini 文件上

extension_dir =
“/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/”
extension=pdo.so
extension=pdo_mysql.so

  1. 重启php-fpm和nginx一下

opcache.revalidate_freq=60 # 查找文件更新间隔

下面是PHP 加速插件 Zend Opcache安装和配置


======================================================================

以下zend opcache安装和配置转载自:

图片 1

大家知道目前PHP的缓存插件一般有三个:APC、eAccelerator、XCache,但未来它们可能都会消失,因为PHP
5.5已经集成Zend
Opcache,功能和前三者相似但又有少许不同,缓存速度据说比它们更快(注意:只是据说,我没测试过)。

这几个PHP加速插件的主要原理都相同,就是把PHP执行后的数据缓冲到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的代码从而提高速度,降低服务器负载,它们的效率是显而易见的,像drupal这种庞大的CMS,每次打开一个页面要调用数十个PHP文件,执行数万行代码,效率可想而知,在安装APC等加速器后打开页面的速度明显加快。

Zend Opcache 已经集成在了PHP
5.5里面,编译安装PHP5.5的时候加上–enable-opcache就行了。但也支持低版本的
PHP 5.2.*, 5.3.*, 5.4.*,未来会取消对5.2的支持,下面是我在PHP
5.4下的安装方法:

依次执行下面的命令
wget
tar xzf zendopcache-7.0.2.tgz
cd zendopcache-7.0.2
phpize
如果找不到phpize
的话自己找PHP路径,我的在/usr/local/php/bin/phpize,下面这行也要按你的php.ini路径自行修改
./configure –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/
表示安装完成,下面要修改php的配置文件让它生效

在 php.ini 的最后面加入下面几行
zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20100525/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

128意思是给它分配128M内存,
重启nginx服务器和php-fpm 管理器,
然后在nginx服务器根目录下新建test.php文件,
文件内容为:
 <?php echo phpinfo();  ?>

在浏览器输入localhost/test.php 可以看到如下画面:
图片 2

页面的下面可以看到的运行状态
图片 3

如果嫌这个不直观可以装个PHP文件查看,地址在
图片 4

命中率100%。

Zend
Opcache因为最近才出来,现在还是测试版,相信在未来几年会越来越流行,现在真没多少人用。目前测试来看还比较稳定,我已经在
vbulletin论坛下运行了几天,不过没看出和APC、xcache有啥区别,只是最近我的APC老让Apache崩溃(可能是apache和php版本太新的原因),想换个试试,毕竟Zend
Opcache和APC都是php官方的,值得信赖。

版权声明:本文为博主原创文章,未经博主允许不得转载。


opcache.save_comments=0 #
不保存文件、函数的注释,可以提升性能,但是对有些框架会产生问题,建议测试后设置!(
默认为 1 保存 )

opcache.fast_shutdown=1 # 启用内存快速回收

shell > service php-fpm restart # 现在 phpinfo
界面就可以看到成功加载了 Zend Opcache ,或 php -m | grep -i opcache

 

三、监控、管理 Zend Opcache

两个开源项目 ( 第二个貌似好搞一点 ) :

1、
2、

# 可以直观的看到内存使用量、命中率、缓存文件等等信息!
# 第二个项目是单文件部署,很方便。不过要给该 URL 设置好权限。

 

shell > unzip opcache-gui-master.zip
shell > mkdir /data/www/opcache ; cp opcache-gui-master/index.php
/data/www/opcache/

相关文章

发表评论

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

网站地图xml地图