zoukankan      html  css  js  c++  java
  • PHP编译安装

    一、fastcgi介绍

    1、简介

    CGI 通用网关接口,用于HTTP服务和其他应用的程序通信交流工具,CGI程序必须运行在网络服务器上,性能差,就产生了FastCGI。
    FastCGI原理和CGI一样不过区别是把动态语言和HTTP服务器分离出来
    C/S架构:客户端服务端
    B/S : 浏览器服务器
    特点:
     FastCGI是HTTP服务器和动态脚本语言间通信的接口或者工具
     FastCGI优点是把动态语言解析和HTTP服务器分离开来
     Nginx、Apache、lighttpd以及多数动态语言都支持FastCGI
     FastCGI接口方法采用C/S结构,分为客户端(HTTP服务器)和服务器(动态语言解析服务器)
     PHP动态语言服务端可以启动多个FastCGI的守护进程
     http服务器通过(Nginx fastcgi_pass)FastCGI客户端和动态语言FastCGI服务端通信(如:php-fpm)

     Nginx 不支持对外部动态程序的直接调用或者解析 ,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在linux下是socket,(这个socket可以是文件socket,也可以是IP  socket)。为了调用CGI程序,还需要wrapper绑定在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,warpper接収到请求,然后派出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据,接着,wrapper再将返回的数据通过FastCGI接口,沿着固定socket传递给Nginx;最后,nginx将返回的数据发送给客户端,这就是Nginx+fastcgi的整个运行过程。

    2、nginx fastcgi访问php流程:

    1、用户发送http请求报文给nginx服务器

    2、nginx会根据文件url和后缀来判断请求

    3、如果请求的是静态内容,nginx会将结果直接返回给用户

    4、如果请求的是动态内容,nginx会将请求交给fastcgi客户端,通过fastcgi_pass将这个请求发送给php-fpm

    5、php-fpm会将请求交给wrapper

    6、wrapper收到请求会生成新的线程调用php动态程序解析服务器

    7、如果用户请求的是博文、或者内容、PHP会请求MySQL查询结果

    8、如果用户请求的是图片、附件、PHP会请求nfs存储查询结果

    9、php会将查询到的结果交给Nginx

    10、nginx会生成一个响应报文返还给用户

    3、FastCGI的重要特点总结:
    1)是HTTP服务器和动态脚本语言间通信的接口或者工具!
    2)优点就是把动态语言解析和HTTP服务器分离了开来!
    3)Nginx、Apache、lighttpd以及多数动态语言都支持FastCGI。
    4)接口方式采用C/S结构,分为HTTP服务器(客户端)和动态语言解析服务器(服务端)
    5)PHP动态语言服务端可以启动多个FastCGI的守护进程例如:php-fpm(fcgi process mangemnt))
    6)http服务器通过例(Nginx fastgi_pass)FastCGI客户端和动态语言FastCGI服务端通信(例如:php-fpm)

    二、编译安装

     1、安装依赖包

    yum –y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libmcrypt-devel mhash mcrypt

    2、安装字符集转换库(默认可以不进行安装)

    mkdir -p /server/tools/
    cd /server/tools/
    wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
    tar zxf libiconv-1.14.tar.gz
    cd libiconv-1.14
    ./configure --prefix=/usr/local/libiconv
    make
    make install 

    说明:此软件在centos6.8之后,系统已经自带此软件功能,可以不进行安装
    #-> 编译好的软件如何卸载,删除安装后的程序目录

    3、php编译安装

    cd /server/tools
    #wget http://cn2.php.net/get/php-5.5.32.tar.gz
    tar xf php-5.5.32.tar.gz
    cd php-5.5.32
    ./configure 
    --prefix=/application/php-5.5.32 
    --with-mysql=/application/mysql          ---mysqlnd:表示数据库服务没有安装在本地服务器上参数
    --with-pdo-mysql=mysqlnd 
    --with-iconv-dir=/usr/local/libiconv 
    --with-freetype-dir 
    --with-jpeg-dir 
    --with-png-dir 
    --with-zlib 
    --with-libxml-dir=/usr 
    --enable-xml 
    --disable-rpath 
    --enable-bcmath 
    --enable-shmop 
    --enable-sysvsem 
    --enable-inline-optimization 
    --with-curl 
    --enable-mbregex 
    --enable-fpm 
    --enable-mbstring 
    --with-mcrypt 
    --with-gd 
    --enable-gd-native-ttf 
    --with-openssl 
    --with-mhash 
    --enable-pcntl 
    --enable-sockets 
    --with-xmlrpc 
    --enable-soap 
    --enable-short-tags 
    --enable-static 
    --with-xsl 
    --with-fpm-user=www 
    --with-fpm-group=www 
    --enable-ftp 
    --enable-opcache=no
    
    #编译安装
    touch ext/phar/phar.phar 
    make && make install

    4、创建软连接

    ln -s /application/php-5.5.32/ /application/php

    5、设置php配置文件

    cd /server/tools/php-5.5.32       
    ll php.ini*
    -rw-r--r--. 1 1001 1001 69236 2016-02-02 21:33 php.ini-development
    -rw-r--r--. 1 1001 1001 69266 2016-02-02 21:33 php.ini-production
    #(php.ini-developments是开发人员调试用配置文件,php.ini-production是生产常见所有配置文件)
    cp php.ini-production /application/php/lib/php.ini
    #php.ini-production 与 php.ini-development 文件区别关系对比
    #生产文件:不会输出过多的日志信息
    #开发文件:会输出大量程序测试日志信息
    cd /application/php/etc/
    cp php-fpm.conf.default php-fpm.conf

    6、启动服务

    /application/php/sbin/php-fpm
    
    #检查服务是否启动
     ps -ef|grep php
     netstat -lntup|grep php
    
    #服务重启
    killall php-fpm  && /application/php/sbin/php-fpm

    7、nginx加载使用

    location ~* .*.(php|php5)?$ {    
                    root html/blog;
                    fastcgi_pass  127.0.0.1:9000;
                    fastcgi_index index.php;
                    include fastcgi.conf;
        }

    拓展:测试数据库连通代码

    <?php
    //$link_id=mysql_connect('主机名','用户','密码');
    //mysql -u用户 -p密码 -h 主机
    $link_id=mysql_connect('localhost','root','oldboy123') or mysql_error();
    if($link_id){
                 echo "mysql successful by root !
    ";
                }else{
                 echo mysql_error();
                }
    ?>
  • 相关阅读:
    Codefores 506A Mr. Kitayuta, the Treasure Hunter( DP && dfs )
    Goals ? Ideals ?
    HDU 5159 Card( 计数 期望 )
    HDU 1387 Team Queue( 单向链表 )
    HDU 1709 The Balance( DP )
    HDU 2152 Fruit( DP )
    HDU 1398 Square Coins(DP)
    HDU 5155 Harry And Magic Box( DP )
    HDU 3571 N-dimensional Sphere( 高斯消元+ 同余 )
    最大连续自序列
  • 原文地址:https://www.cnblogs.com/freeblogs/p/7822094.html
Copyright © 2011-2022 走看看