LNMP建站分离部署

目录

注:本篇文章解决的主要问题是将LNMP中的数据也就是MySQL分离到另一台服务器上,达到LNMP分离部署的目的。

LNMP理论基础

LNMP数据流转分析:

这里写图片描述
LNMP之间的数据流转如图所示:

第一步:浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)返回浏览器。

第二步:将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,进行并发执行。

第三步:PHP脚本通过PHP和数据库的连接,完成对数据库进行增删改查的功能,并从数据库中获取数据。

第四步:将获取到的数据返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx。

第五步:服务器再通过Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。

Nginx+FastCGi工作流程

这里写图片描述
Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过Fast-CGI接口来调用。Fast-CGI接口在Linux下是socket(这个socket可以是文件socket,也可以是ip socket)。

wrapper:为了调用CGI程序,还需要一个Fast-CGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候,通过Fast-CGI接口,wrapper接收到请求,然后Fork(派生)出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过Fast-CGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据(html页面或者图片)发送给客户端。这就是Nginx+Fast-CGI的整个运作过程。

Nginx架构

这里写图片描述
如上图所示:

1、Nginx启动后,会产生一个主进程(master),主进程执行一系列的工作后会产生一个或者多个工作进程;

2、在客户端请求动态站点的过程中,Nginx服务器还涉及和后端服务器的通信。Nginx将接收到的Web请求通过代理转发到后端服务器,由后端服务器进行数据处理和组织;

3、Nginx为了提高对请求的响应效率,降低网络压力,采用了缓存机制,将历史应答数据缓存到本地。保障对缓存文件的快速访问;

Nginx和Apache异同

这里写图片描述
上图是截止到20180426官方发布的WebServer的市场占有率。一个明显的趋势就是Apache的市场占有率逐年下降,Nginx逐年上涨,说明,Nginx在某些方面是要远远强于Apache的。Nginx和Apache主要的区别有以下几点。

  • 核心区别在于Apache是同步多进程模型,一个连接对应一个进程;Nginx是异步的,多个连接(万级别)可以对应一个进程。在大部分场景中,Nginx的epoll模型性能要高于Apache的select模型。
  • Nginx 处理请求是异步非阻塞的,而Apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 。
  • 同样提供web 服务,Nginx比Apache 占用更少的内存及资源。
  • Nginx除了能够提供Web服务以外,还能提供反向代理功能,在一定程度上实现负载均衡。

LNMP部署

实验环境:

  • 两台新装的CentOs7,配置好Yum源,使用桥接连上网络。
  • 小米源码包
  • 给两台机器都配好yum源,https://opsx.alibaba.com/mirror,阿里云里面有无脑部署教程。配置好yum源和epep源即可。

    考虑到某些同学自己不好找代码,我就把源代码分享了,以供大家学习之用。
    源代码传送门
    网络规划:

  • 一台IP为172.25.0.31/16的作为web服务器,上面搭建nginx和php-fpm等模块,主要提供web服务,起名web1。

  • 一台IP为172.25.0.41/16的作为数据库服务器,在其上面主要运行数据库。对该数据库服务器起名mysql1。

    注:大家可以按照自己的需求规划这两台主机的IP地址,保证其能够上网,并且这两台机器在同一个网段就可以了。

实验过程:

Nginx的部署:

1、安装相关软件
[root@web1 /etc/yum.repos.d]# yum -y install php php-mysql php-fpm nginx
2、将php-fpm、nginx等服务开启,并设置为开机自启动。
3、创建/data/web目录,这个目录以后用作web服务的chroot.
4、配置nginx的配置文件。
[root@web1 /data/web]# vim /etc/nginx/nginx.conf

第一步:修改家目录为/data/web
这里写图片描述
第二步:修改nginx和fastcgi的连接配置,如下图所示
这里写图片描述
第三步:优化相关小配置
这里写图片描述
5、配置php相关配置文件
[root@web1 /data/web]# vim /etc/php.ini
注: 打开short_open_tag 如下
这里写图片描述
修改php-fpm配置文件,更改用户名
[root@web1 /data/web]# vim /etc/php-fpm.d/www.conf
这里写图片描述
将原本的apache用户改为nginx用户
5、重启相关服务

数据库的部署:

1、安装mariadb软件
[root@mysql1 ~]# yum -y install mariadb-server
2、创建用户root:
MariaDB [mysql]> create user root identified by 'centos';
3、创建数据库xiaomi.
MariaDB [mysql]> create databases xiaomi;
3、给添加的用户赋予权限:
MariaDB [(none)]> grant all on xiaomi.* to root@'%' identified by 'centos';

数据库和nginx连接

1、上传源代码至/data/web目录下,解压,如图:
这里写图片描述
2、修改php和数据库的连接文件
[root@web1 /data/web]# vim /data/web/data/config.php
修改如下:
这里写图片描述
3、还原数据库
浏览器上输入 172.25.0.31/eabk/index.php,弹出如下界面:
这里写图片描述

username:admin
passwd: 123456

4、数据还原
这里写图片描述
在参数设置页面中,填写自己的数据库服务器地址、部署数据库时远程授权的用户名和密码以及提供的数据库
5、还原数据
首先你需要修改/data/web中的所属人和所属组,都修改为nginx,然后进入数据恢复界面。如图
这里写图片描述
选择将database数据库恢复到xiaomi数据库即可。

实验结果:

当你在浏览器中输入172.25.0.31时,浏览器弹出这样的界面就说明你部署成功了。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/gui951753/article/details/80204325