17.1、FastCGI介绍:

1、什么是CGI:

CGI的全称为“通用网关接口”,为http服务器与其他机器上的程序服务通信交流的一种工具,CGI程序

必须运行在网络服务器上;传统CGI接口方式的主要缺点是性能较差,接口方式安全性也很差,因为每次http

服务遇到动态程序时都需要通过重新启动解释器来执行解析,之后结果才会返回给http服务器,在这里处理高

并发访问时几乎是不可用的,因此诞生了FASTCGI。

2、什么是FastCGI:

FastCGI是一个可伸缩的、高速的在http服务器和动态脚本语言之间通信的接口,在linux下FastCGI即是

socket,这个socket可以是文件socket,也可以是ip socket,主要优点是将动态语言和http服务器分离开来

,多数流行的http服务器都支持FastCGI,比如apache、nginx、lightppd等;同时FastCGI也被多种脚本语言

支持,比较流行的是php,FastCGI接口采用的是C/S架构;当http服务器遇到动态程序时,可以将期直接交给

FastCGI进程来执行,然后将得到的结果返回给浏览器,这种方式可以让http服务器专一的处理静态请求,很大

成度上提高了整个应用系统的性能;

17.2、LNMP运行过程和解析原理:

nginx不支持对外部动态程序的直接调用或者解析,所有的外部程序(包括php)必须通过FASTCGI接口来调用,fastCGI接口在linux下是socket,为了调用

cgi程序,还需有一个fastcgi的wrapper(可以理解为用于启动另一个程序的u程序),这个wrapper绑定在某个固定的scoket上,如端口或文件socket。当

nginx将cgi请求发送给这个socket的时候,通过fastcgi接口,wrapper接收到的请求,然后派生出一个新的线程,这个线程调用解释器或外部程序处理脚本来读取

返回的数据;接着,wrapper再将返回的数据通过fastcgi接口,沿者固定的socket传递给nginx;最后nginx将返回的数据发送给客户端,这就是nginx+fastcgi的

整个运作过程。

17.3、php的安装:

1、检查mysql和nginx是否为启动状态:

[root@web01 nginx]# netstat -tunlp| egrep "nginx|mysqld"

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1662/mysqld

tcp 0 0 10.0.0.8:80 0.0.0.0:* LISTEN 2393/nginx

tcp 0 0 172.16.1.8:80 0.0.0.0:* LISTEN 2393/nginx

2、安装软件库:

(1)php程序运行时会调用一些诸如zlib,gd等函数库,这些lib库也不是必须安装的,默认情况下系统是没有安装的,

目前的企业环境下一般都需要安装。否则,PHP程序运行有问题,例如验证码无法显示等。

[root@web01 nginx]#yum install -y zlib-devel libxml2-devel libjpeg-turbo-devel

[root@web01 nginx]#yum install -y freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

[root@web01 nginx]#rpm -qa zlib-devel libxml2-devel libjpeg-turbo-devel

zlib-devel-1.2.3-29.el6.x86_64

libjpeg-turbo-devel-1.2.1-3.el6_5.x86_64

libxml2-devel-2.7.6-21.el6_8.1.x86_64

[root@web01 nginx]#rpm -qa freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

libxslt-devel-1.1.26-2.el6_3.1.x86_64

libpng-devel-1.2.49-2.el6_7.x86_64

freetype-devel-2.3.11-17.el6.x86_64

gd-devel-2.0.35-11.el6.x86_64

libcurl-devel-7.19.7-53.el6_9.x86_64

(2)其中libiconv-devle包用yum安装不了(手工安装):

[root@web01 tools]# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz # (源码包)

[root@web01 tools]# tar -xzvf libiconv-1.14.tar.gz

[root@web01 libiconv-1.14]# ./configure --prefix=/usr/local/libiconv/

[root@web01 libiconv-1.14]# make

[root@web01 libiconv-1.14]# make install

(3)安装动态加载模块库(需要第三方的epel源):

[root@web01 tools]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

[root@web01 application]# yum install -y libmcrypt-devel #这是一个使用动态加载的模块化的库,这个不是必须的库,在开发的时候需要用到;

[root@web01 application]# rpm -qa libmcrypt-devel

libmcrypt-devel-2.5.8-9.el6.x86_64

(4)安装加密扩展库:

[root@web01 application]# yum install -y mhash mcrypt

[root@web01 application]# rpm -qa mhash mcrypt

mcrypt-2.6.8-10.el6.x86_64

mhash-0.9.9.9-3.el6.x86_64

(5)安装openssl(安全套接层协议,安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上):

[root@web02 php-5.5.32]# yum install openssl openssl-devel

[root@web02 php-5.5.32]# rpm -qa openssl openssl-devel

openssl-devel-1.0.1e-57.el6.x86_64

openssl-1.0.1e-57.el6.x86_64

3、获取php软件:

搜狐镜像站下载

[root@web01 tools]# rz -y #上传下载的软件;

[root@web01 tools]# tar -xzvf php-5.5.32.tar.gz

4、php安装配置参数介绍:

在php解压目录下使用./configure --help 查看相关的参数

--prefix=/application/php5.5.32 #指定php的安装路径为/application/php5.5.32

--with-mysql=/application/mysql/#指定MySQL的安装路径,安装php需要的mysql相关内容。当然,如果没有

mysql软件包,也可以不单独安装,这样的情况可以使用---enable-mysqlnd、--with-pdo-mysql=mysqlnd、

--with-mysqli=mysqlnd代替--with-mysql=/application/mysql/ ,因为php软件里已经自带了连接mysql软件;

--with-fpm-user=nginx:nginx #指定php-fpm进程管理的用户为nginx, 此用户必须要和nginx属主一致,防止有权限的限制问题出现;

--with-fpm-user=nginx:nginx #指定php-fpm进程管理组为nginx ,此组必须要和nginx的主组一致,防止有权限的限制问题出现;

--enable-fpm#表示激活php-fpm方式服务,即fastCGI方式运行php服务;

[root@web01 php-5.5.32]#./configure \

--prefix=/application/php5.5.32 \

--with-mysql=/application/mysql/ \

--with-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 \

--with-openssl \

--with-mhash \

--enable-gd-native-ttf \

--enable-pcntl \

--enable-sockets \

--with-xmlrpc \

--enable-soap \

--enable-short-tags \

--enable-static \

--with-xsl \

--with-fpm-user=nginx \

--with-fpm-group=nginx \

--enable-ftp \

--enable-opcache=no

[root@web01 php-5.5.32]# echo $?

0

5、在make install之前需要先做以下操作:

[root@web01 php-5.5.32]# ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/

#在/usr/lib64/中创建‘libmysqlclient.so.18’软连接并指向/application/mysql/lib/libmysqlclient.so.18,软连接要写全路径;

[root@web01 php-5.5.32]# touch ext/phar/phar.phar

[root@web01 php-5.5.32]# echo '/application/mysql/lib/' >>/etc/ld.so.conf

[root@web01 php-5.5.32]# tail -1 /etc/ld.so.conf

/application/mysql/lib/

[root@web01 php-5.5.32]# ldconfig

6、编译并安装:

[root@web01 php-5.5.32] make #make -j可以指定多颗CPU,在CPU颗数多的情况下,时间较长;

[root@web01 php-5.5.32] make install

。。。

ln -s -f phar.phar /application/php5.5.32/bin/phar

Installing PDO headers: /application/php5.5.32/include/php/ext/pdo/

7、创建软连接:

[root@web01 application]# ln -s php5.5.32/ /application/php

[root@web01 application]# ls -l

lrwxrwxrwx 1 root root 10 11月 20 16:38 php -> php5.5.32/

drwxr-xr-x 9 root root 4096 11月 20 16:37 php5.5.32

8、配置生产环境:

[root@web01 application]# cd /root/tools/php-5.5.32

[root@web01 php-5.5.32]# ls -l php.ini*

-rw-r--r-- 1 1001 1001 69236 2月 2 2016 php.ini-development #开发环境的配置文件

-rw-r--r-- 1 1001 1001 69266 2月 2 2016 php.ini-production #生产环境的配置文件

[root@web01 php-5.5.32]# cp php.ini-production /application/php/lib/php.ini #php配置文件默认路径

[root@web01 php-5.5.32]# cd /application/php/etc/

[root@web01 etc]# cp php-fpm.conf.default php-fpm.conf

9、启动php:

[root@web01 etc]# ../sbin/php-fpm

[root@web01 etc]# lsof -i :9000

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

php-fpm 19635 root 7u IPv4 241402 0t0 TCP localhost:cslistener (LISTEN)

php-fpm 19636 nginx 0u IPv4 241402 0t0 TCP localhost:cslistener (LISTEN)

php-fpm 19637 nginx 0u IPv4 241402 0t0 TCP localhost:cslistener (LISTEN)

[root@web01 etc]# ps -ef |grep php-fpm

root 19635 1 0 16:56 ? 00:00:00 php-fpm: master process (/application/php5.5.32/etc/php-fpm.conf)

nginx 19636 19635 0 16:56 ? 00:00:00 php-fpm: pool www

nginx 19637 19635 0 16:56 ? 00:00:00 php-fpm: pool www

root 19640 24320 0 16:57 pts/0 00:00:00 grep php-fpm

17.4、修改nginx的配置参数:

[root@web01 php]# cd /application/nginx

[root@web01 nginx]# vim conf/extra/php.conf

server {

listen :80;

server_name www.php.com;

#匹配输入www.php.com(/,/任意字符(网页需要存在,否则会报404错))时打开的网页,其中不输入"/任意字符"时显示的是index中配置的首页

location / {

root html/php/;

index index.php index.html index.htm ;

}

#输入带有以php字符结尾的网址时显示的网页,根据输入的php网页选择

location ~ .*\.(php|php5)?$ {

root html/php/; #安装php软件的目录;

fastcgi_pass 127.0.0.1:9000;

#此index页面可以不写,因为在上面的location中已经设置过了对应的首页文件,这里只需要输入相应的php页面就可以了 ,起到了说明的作用;

fastcgi_index index.php;

include fastcgi.conf;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

[root@web01 nginx]# mkdir html/php/

[root@web01 nginx]# echo '<?php phpinfo(); ?>' >index.php

[root@web01 nginx]# sbin/nginx -t

nginx: the configuration file /application/nginx-1.8.1/conf/nginx.conf syntax is ok

nginx: configuration file /application/nginx-1.8.1/conf/nginx.conf test is successful

[root@web01 nginx]# sbin/nginx -s reload

17.5、在浏览器中进行测试:

1、在本地主机的hosts文件中加入 “172.16.1.8 www.php.com”域名解析记录;

2、在浏览器中输入www.php.com/test_info.php进行测试;

17.6、测试连接数据库是否正确:

[root@web01 nginx]# vim html/php/test_mysql.php

<?php

$link_id=mysql_connect('localhost','root','123456') or mysql_error();

if($link_id){

echo "mysql successful by root";

}

else{

echo mysql_error();

}

?>

1、在网页中进行测试:

在浏览其中输入www.php.com/test_mysql.php

17、lnmp_php编译安装的更多相关文章

  1. CentOS6.3 编译安装LAMP(4):编译安装 PHP5.2.17

    所需源码包: /usr/local/src/PHP-5.2.17/libmcrypt-2.5.8.tar.gz /usr/local/src/PHP-5.2.17/mhash-0.9.9.9.tar. ...

  2. linux-i386(ubuntu)下编译安装gsoap_2.8.17过程记录

    过程记录 :  1.下载gsoap_2.8.17.zip 并 解压 : $unzip gsoap_2.8.17.zip     2.进入解压后的目录gsoap-2.8   3.自动配置编译环境:  $ ...

  3. centos6.7编译安装mysql5.7.17

    centos6.7编译安装mysql5.7.17 2017-03-24 09:57:15 提示:mysql5.7.17和之前5.56以前的版本安装不一样,需要用cmake 另外,看本文档的mysql编 ...

  4. centos编译安装php5.6.20+nginx1.8.1+mysql5.6.17

    LNMP 代表的就是:Linux系统下Nginx+MySQL+PHP这样的站点服务器架构. 本次实践需求: 实践centos6.5编译安装 LNMP生产环境 架构 web生产环境 使用 xcache ...

  5. Ubuntu 17.04版本下,opencv进行源码编译安装

    本文主要针对Ubuntu 17.04版本下,opencv进行源码编译安装.开发环境主要针对python 对 openCV库的调用. 安装 gcc cmake 编译环境 sudo apt-get ins ...

  6. CentOS6.5编译安装Nginx1.8.1+MySQL5.5.48+PHP5.2.17+xcache3.2+ZendOptimizer-3.3.9

    一.安装Nginx: 1.解决依赖关系 编译安装nginx需要事先需要安装开发包组"Development Tools"和 "Development Libraries& ...

  7. mysql-5.6.17编译安装和常见问题

    mysql-5.6.17编译安装和常见问题 以前用的是MySQL的5.1版本,且使用的是免编译的包,安装简单.最近换了5.6版本的MySQL,安装过程出现了不少问题. 1. 卸载原来版本的MySQL ...

  8. centos 7编译安装mysql 5.7.17

    1.进入MySQL官网下载MySQL源代码 依次点击Downloads -> Community -> MySQL Community Server 源代码1.Select Operati ...

  9. Centos6.4_X64编译安装php-5.4.17、nginx-1.4.2、mysql-5.6.13

    安装参考: CentOS 6.3编译安装Nginx1.2.2+MySQL5.5.25a+PHP5.4.5 http://www.dedecms.com/knowledge/servers/linux- ...

随机推荐

  1. WIN10 分区 C盘 至少250-300G E盘至少700G

    win10 就2个分区 C盘 至少250-300G  E盘至少700G

  2. Java 关键字详解

    Java 关键字是 Java 语言中被赋予特殊意义的一些单词(每个关键字都代表着不同场景下的不同含义),不可以把它当作标识符来使用(不能用作变量名.方法名.类名.包名和参数名等).Java 中的关键字 ...

  3. MQTT简介-(转自cacard)

    MQTT - MQ Telemetry Transport   轻量级的 machine-to-machine 通信协议. publish/subscribe模式. 基于TCP/IP. 支持QoS. ...

  4. 痞子衡嵌入式:快速定位i.MXRT600板级设计ISP[2:0]启动模式引脚上电时序问题的方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是一种快速定位i.MXRT600板级设计ISP[2-0]启动模式引脚上电时序问题的方法. 我们知道恩智浦i.MXRT600是主打音频市场的 ...

  5. 【ArcGIS遇上Python】ArcGIS Python批处理入门到精通实用教程目录

    目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 Python语言是目前很火热的语言,极大的促进了人工智能发展.你知道在ArcGIS中也会有python的身影吗?事实上,在ArcG ...

  6. GO汇编-函数

    GO汇编-函数 终于到函数了!因为Go汇编语言中,可以也建议通过Go语言来定义全局变量,那么剩下的也就是函数了.只有掌握了汇编函数的基本用法,才能真正算是Go汇编语言入门.本章将简单讨论Go汇编中函数 ...

  7. IP子网如何划分?so easy!

    IP地址与子网掩码 1. IP地址划分 1.1 IP地址 1.2 由两部分组成 1.3 IP地址的分类 1.4 IP地址的规划原则 2.子网掩码划分 2.1 32个二进制位 2.2IP地址和子网掩码作 ...

  8. python解析ua

    一个非常神奇的包可以帮助我们优雅的解析浏览器的UA,他的名字叫做user_agents pip install pyyaml ua-parser user-agents >>>ua_ ...

  9. 面试侃集合 | SynchronousQueue非公平模式篇

    面试官:好了,你也休息了十分钟了,咱们接着往下聊聊SynchronousQueue的非公平模式吧. Hydra:好的,有了前面公平模式的基础,非公平模式理解起来就非常简单了.公平模式下,Synchro ...

  10. TVM如何训练TinyML

    TVM如何训练TinyML 机器学习研究人员和从业人员对"裸机"(低功耗,通常没有操作系统)设备产生了广泛的兴趣.尽管专家已经有可能在某些裸机设备上运行某些模型,但是为各种设备优化 ...