目录

  • LNMP理论基础

    • LNMP数据流转分析:
    • Nginx+FastCGi工作流程
    • Nginx架构
    • Nginx和Apache异同
  • LNMP部署
    • 实验环境:
    • 实验过程:
      • Nginx的部署:
      • 数据库的部署:
      • 数据库和nginx连接
    • 实验结果:

注:本篇文章解决的主要问题是将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时,浏览器弹出这样的界面就说明你部署成功了。

LNMP建站分离部署相关推荐

  1. 23.网市场云建站系统部署

    1.安装Tomcat并配置启动 1.yum安装maven和java:[root@web01 ~]# yum install java maven -y2.二进制安装tomcat[root@web01 ...

  2. php7.1 集成php fpm,LNMP建站教程(2):安装 PHP 7.1 与 PHP7.1-FPM以及与Nginx集成

    Nginx 和 PHP 是两个独立的程序,它们之间在正常的情况系是没有任何关系的,但是我们又希望 Nginx 在收到 PHP 的动态请求时,可以将请求发送到 PHP的解析器并将结果返回给用户的浏览器. ...

  3. IIS 动态建站--因权限问题被拒绝访问的解决方案

    很多人遇到,在本地测试时,可以建站,一点问题都没有. 在服务器上面,部署后,就不行了. 其实就是这个权限引起的. 同时需要注意的是服务器上面必须有iis兼容程序. 写了一个类IISAdmin,负责建立 ...

  4. 家庭宽带在有ipv6公网环境下,配置本地tomcat服务器+域名+ssl+ddns,实现ipv6建站、搭建简易的文件服务器、搭建webdav服务器等功能

    必备条件: 宽带运营商提供了ipv6 光猫拨号改为路由器拨号且路由器开启了ipv6 运营商未屏蔽ipv6的80/443端口(如果屏蔽了常用端口,那么可以尝试高一点的端口号.端口号范围:1 - 6553 ...

  5. 视频教程-wordpress建站教程之环境部署详解课程-PHP

    wordpress建站教程之环境部署详解课程 著名的photoshop狂热者,讲课深入浅出,生动风趣.参与编写多部photoshop视频教程,数码照片处理教程等,麒麟设计教程网特聘主讲人. 梁田聪 ¥ ...

  6. centos 7 + LNMP + wordpress基本建站

    还是搞了自己的博客,主要就是记录学习笔记,日常生活用的,接下来介绍centos 7 + LNMP + wordpress基本建站 本文操作借鉴:https://www.cnblogs.com/meds ...

  7. 腾讯云轻量服务器WordPress建站宝塔一键部署

    ​本文介绍如何通过腾讯云轻量服务器Wordpress建站,安装宝塔实现Wordpress一键部署. 第一步:购买腾讯云轻量服务器 推荐购买的配置为1核心2G,如果需要安装Woocommerce,建议使 ...

  8. 云服务器 ECS 建站教程:手工部署Java Web项目

    手工部署Java Web项目 Tomcat 一个开源的且免费的 Java Web 服务器,常用来作为 web 开发的工具.它可以托管由 servlet,JSP 页面(动态内容),HTML 页面,jav ...

  9. python建站部署_SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台...

    SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台 一.概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源 ...

  10. 小皮面板有php环境吗,体验phpStudy小皮面板创建LAMP/LNMP系统和建站图文

    在国庆节后老 左有看到原phpStudy面板新的Linux面板系统更新发布取名小皮面板(phpStudy Linux系统初次体验 – 一键安装phpStudy面板查看功能),初次体验这款面板之后我们肯 ...

最新文章

  1. Python读取PDF内容
  2. 使用Ant将windows下开发的Struts2应用直接部署到Linux上
  3. 创建python2与python3虚拟环境失败的原因
  4. Spark UI的见解
  5. java中字母用什么单词赋值_Java初学
  6. Apsara Stack 技术百科 | 边缘场景智能云化,让云无处不在
  7. 车牌识别EasyPR(5)——文字定位
  8. hb-550s计算机电源,XFX TS 550金牌电源拆解及电路分析
  9. catv系统主要有哪三部分组成_有线电视系统,看完电力工程技术专家分析,顿时学会了,太经典...
  10. 11g表名大小写 oracle_Oracle数据库总结
  11. Application 用法
  12. OpenGL采样贴图显示不出来
  13. 如何使用 DiskGenius 合并分区
  14. matlab中rand函数用法
  15. 全网最全的人类图解析(下)——类型、人生角色、定义等
  16. 释放linux缓存 echo 1 > /proc/sys/vm/drop_caches
  17. html window 网络邻居,解决Windows7系统局域网网上邻居看不到其它同事电脑方法
  18. 谋杀之谜 良辰吉日 人物关系图
  19. java去除图片水印的解决办法
  20. Linux安装Tomcat(非Docker安装、开放端口)

热门文章

  1. 关于XGB.booster()报错TypeError: 'str' object is not callable的解决方法
  2. Django2.0中URL的路由机制
  3. 《linux核心应用命令速查》连载七:bg:后台运行命令
  4. 《我也能做CTO之程序员职业规划》之七:大学生职业规划技巧
  5. 我看《网络营销实战密码:策略 技巧 案例》这本书
  6. vc++之剪贴板通信实例
  7. numpy教程:逻辑函数Logic functions
  8. python实现列表的排列和组合
  9. mysql replicatedodb_MySQL存储引擎MyISAM与InnoDB的区别
  10. 分支限界算法c语言_算法分析