高性能Web服务器Nginx使用指南(5)

其中,Nginx作为web服务器,响应客户端发来的http请求,和Apache一样,本身只能处理静态请求,而对于动态请求,则需要Nginx与专门的语言解释器进行交互,例如PHP解释器,然后PHP解释器执行php脚本,其中会涉及到一些数据的操作,因此就需要到后端的数据库服务器中存取数据。最后php的执行结果交给nginx,nginx继而将结果返回给客户端。

fastcgi:

nginx收到的请求不能直接转发给php,因为php不认识,反过来,php处理后的结果也不能直接返回给nginx,因此需要在他们两者中间加入公共接口,即fastcgi,使得nginx和php都能够支持fastcgi,当nginx和php交互的时候,都需要通过fastcgi协议的处理。

PHP和php-fpm的关系:

php-fpm是php和fastcgi的管理器,它其实php的一个补丁,是为了将fastcgi的管理器整合到php中,这样一来,仅可以通过php-fpm服务,既可以管理fastcgi进程,也可以reload重新加载php(在修改php的配置文件php.ini后无需重新启动php)。

因此LNMP详细的工作流程是,Nginx收到浏览器的web请求后,Nginx 自身处理其中的静态请求,例如图片、视频等,对于动态请求,Nginx将其通过fastcgi处理后转发给php-fpm进程,php-fpm调用php解析器执行fastcgi处理后的php脚本,期间php再连接数据库进行数据的操作,php解析器处理完毕后,将结果转发给php-fpm进程,php-fpm将结果通过fastcgi交付给Nginx,最后Nginx将最终的结果返回给浏览器。

LNMP搭建过程:

① 安装Nginx,为了方便我这里使用yum安装,当然也可以使用源码编译安装,我使用的阿里云的epel源,直接在Linux中输入如下命令,就可以成功配置yum仓库。

[root@CentOS6 ~]# wget -O /etc/yum.repos.d/epel.repo
[root@CentOS6 ~]# yum makecache
[root@CentOS6 ~]# yum -y install nginx

我这里安装的nginx版本是1.10.2

高性能Web服务器Nginx使用指南

② 安装数据库mysql,直接使用本地base源即可。

[root@CentOS6 ~]# yum -y install mysql-server

安装成功之后会发现也会为我们安装mysql客户端工具,用于连接mysql服务端。

然后创建用于存放数据的数据库wordpress,赋予用户wordpress使用该数据库的所有权限,并设置连接数据库的秘密centos,

[root@CentOS6 ~]# mysql
mysql> create database wordpress;
mysql> grant all on wordpress.* to wordpress@'%' identified by 'centos';
mysql> flush privileges;

③ 接下来就是php和及其扩展包的安装,同样使用base源即可

[root@CentOS6 ~]# yum -y install php php-mysql

④ 安装统一管理php解释器和fastcgi进程的工具php-fpm。

[root@CentOS6 ~]# yum -y install php-fpm

修改php-fpm的工作进程的用户和用户组为nobody.nobody(需要同Nginx工作进程的用户/用户组一致,我这里设置的是nobody.nobody),这样做的目的是限制php-fpm和Nginx的权限。php-fpm的配置文件是/etc/nginx/php-fpm.d/www.conf

修改后的内容如下,其他的指令保持默认。

高性能Web服务器Nginx使用指南

⑤ 修改Nginx的配置,使其能将动态请求转发给php-fpm。

Nginx主配置文件的内容如下:

[root@CentOS6 nginx]# cat /etc/nginx/nginx.conf
user nobody nobody;   
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
 
events {
    use epoll;
    worker_connections  1024;
}
http {
    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  /var/log/nginx/access.log  main;
    keepalive_timeout  65;
    charset            utf-8;
    include          /etc/nginx/mime.types;
    default_type        application/octet-stream;
 
    include /etc/nginx/conf.d/*.conf;    # 引用server块的扩展配置文件
}

Nginx的server块的扩展配置文件内容如下,

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/609fc2f5a92e09977537b71632533576.html