zoukankan      html  css  js  c++  java
  • centos6.5为tengine安装php 5.6支持

    1、到php官网下载最新的php版本

    http://php.net/

    我下载的是php-5.6.28.tar.bz2

    2、编译安装

    2.1安装依赖

    2.1.1 解决libxml2和xml2-config依赖

    configure: error: xml2-config not found. Please check your libxml2 installation

    yum install libxml2
    yum install libxml2-devel -y
    

    2.1.2 解决libcurl依赖

    error: Please reinstall the libcurl distribution

    yum install curl curl-devel
    

    2.1.3解决mcrypt依赖

    configure: error: mcrypt.h not found. Please reinstall libmcrypt

    yum  install  php-mcrypt  libmcrypt  libmcrypt-devel
    

    2.1.4解决cannot get uid for user 'www-data'

    启动报错:

    Starting php-fpm [25-Nov-2016 13:28:27] ERROR: [pool www] cannot get uid for user 'www-data'

     

    解决:

    groupadd www-data
    
    useradd www-data -g www-data -s /sbin/nologin
    

    -g:指定新用户所属的用户组(group)
    -M:不建立根目录
    -s:定义其使用的shell,/sbin/nologin代表用户不能登录系统。

     2.1.5解决nginx php-fpm.socket Permission denied

    connect() to unix:/var/run/php-fpm.socket failed (13: Permission denied)

    chmod 777 /var/run/php-fpm.socket
    

    2.2编译php

    ./configure --prefix=/usr/local/php 
    --with-config-file-path=/usr/local/php/etc 
    --with-config-file-scan-dir=/usr/local/php/etc/extends 
    --enable-fpm 
    --with-fpm-user=www-data 
    --with-fpm-group=www-data 
    --with-mysql=shared,mysqlnd 
    --enable-sockets 
    --with-mcrypt 
    --with-curl 
    --with-openssl 
    --with-mysql 
    --enable-mbstring
    

    编译参数带上了--enable-fpm,这样编译时就会自动为我们编译php-fpm
    --with-config-file-path 指定php的配置文件目录
    --with-config-file-scan-dir 指定php的其它配置文件放到哪个目录下
    同样,执行configure的时候会出现各种依赖库未找到的错误,还是可以通过apt-get install libxxx的方式添加这些库,或者自己下载源码编译安装这些库。

    make
    make test
    make install
    

    2.3配置php

    把php的一些二进制执行文件软链接到系统执行目录中

    ln -s /usr/local/php/bin/php /usr/local/bin/php
    
    ln -s /usr/local/php/bin/phpize /usr/local/bin/phpize
    

    进入php的配置文件

    cd /usr/local/php/etc
    

    从源码包中复制php.ini-development或者php.ini-production文件到此目录下,并修改名字为php.ini
    其中

    php.ini-development 适合开发环境下的php配置文件
    php.ini-production 适合生产环境下的php配置文件
    打开php-fpm的配置文件,做如下修改:
    vim php-fpm.conf
    //php-fpm程序运行的pid记录文件
    pid = /var/run/php-fpm.pid
    
    //在[www]区域的配置
    user = www-data
    group = www-data
    //这样设置的目的是让tengine与php-fpm通过这个socket地址进行通信
    listen = /var/run/php-fpm.socket
    //创建socket地址时的用户、组、权限,
    //最好以tengine运行的用户一致,这样tengine才有权限与php-fpm进行通信
    listen.owner = www-data
    listen.group = www-data
    listen.mode = 0660
    

    另外建议sock文件放在/dev/shm目录下 此目录下将sock文件放在内存里面,有助于性能提升

    编译php扩展及配置

    进入php源码包中的ext目录
    cd php-5.6.8/ext
    

    举个例子吧,假如说我们要编译一个mcrypt扩展
    进入mcrypt模块的源码目录

    cd mcrypt

    执行phpize来动态添加php扩展

    phpize

    编译安装

    ./configure
    make
    make install
    

    安装好后,我们之前编译php时设置的--with-config-file-scan-dir就派上用场了,
    进入设置的/usr/local/php/etc/extends目录,如果没有extends目录可以mkdir一个。
    新建一个mcrypt.conf文件

    vim mcrypt.conf

    extension=mcrypt.so
    这样的话,如果以后我们不需要mcrypt扩展时,可以直接删除/usr/local/php/etc/extends/mcrypt.conf配置文件即可。

    php-fpm的启动脚本

    php源码包中已自带php-fpm的启动脚本,我们将它复制到/etc/init.d/:
    cp php-5.6.8/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    

    修改php-fpm文件

    vim /etc/init.d/php-fpm
    
    prefix=/usr/local/php
    //这里的pid文件路径就是上面(php-fpm.conf)配置文件中所设置的pid
    php_fpm_PID=/var/run/php-fpm.pid
    

    赋予可执行的权限:

    chmod +x /etc/init.d/php-fpm
    

    启动php-fpm:

    /etc/init.d/php-fpm start
    

    这样php和php-fpm的配置基本就完成了

      Tengine代理PHP-FPM

    进入先前设置好的Tengine的vhost配置目录:
    cd /usr/local/nginx/conf/vhost
    

    假设我们的web目录是在/opt/www,域名为t.com
    新建一个t.com.conf配置文件

    server {
        #访问端口
        listen       80;
        #所绑定的域名
        server_name t.com;
        access_log  logs/host.access.log;
    
        location / {
            root /opt/www;
            index index.php index.html;
        }
        #设置php文件的代理转发
        location ~ .php$ {
            root /opt/www;
            #转发至php-fpm配置文件中设置的socket通信地址
            fastcgi_pass   unix:/var/run/php-fpm.socket;
            fastcgi_index  index.php;
            #所访问的php文件路径地址
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    

    配置文件创建成功后执行

    /etc/init.d/nginx reload

     参考文献:
    http://www.php-z.com/thread-1128-1-1.html
    

      

     

  • 相关阅读:
    Python中的编码
    编译gcc
    内存的非法读写操作的检查
    Git合并特定commits 到另一个分支
    局部静态变量是如何做到只初始化一次的?
    how-to-redirect-cin-and-cout-to-files
    Time series database
    Linux System Calls Hooking Method Summary
    tomcat 创建虚拟主机
    oracle查锁表SQL
  • 原文地址:https://www.cnblogs.com/jifeng/p/6101122.html
Copyright © 2011-2022 走看看