lnmp

Posted lizhizhi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lnmp相关的知识,希望对你有一定的参考价值。

第一

常见的web框架结构:例如LNMP 与LAMP

LJ就是linux  N =nginx  A=apache  P=php  T =tomcat

Nginx与Apache都是web应用服务器

Nginx支持高并发,对系统资源占用率低,他的模型是epoll所以呢支持异步非堵塞,对静态数据处理的非常好

Apache,处理动态数据快,对系统资源占用高,select模型,同阻塞I/O

2、LNMP的部署方式分为两证种,全都部署在一台上;全都不在一台上(N+P+M);只分离mysqlNP+M)在工作中都是后两种(开发是有可能在一台上部署)

技术分享图片

 

Nginx在前端,PHP在中间,mysql在后端,nginx与PHP5之间的数据传输依靠的是fastcgi这是一种接口规则(快速接口规则),在这块所发的数据包,不在是http数据包了,他叫做fastcgi数据包,这种规则的数据包格式是非常严谨的所以PHP解析的速度非常快,但是越严谨数据包越大,所以呢fastigc数据包大小绝对大于http数据包

3、分离部署的核心是:考虑http数据包根fastcgi数据包的取舍问题,用户请求过来是http协议过来的,用户的请求一定是http格式的数据包(因为浏览器的版本是1.1,若是不分清这个协议,用户是通过浏览器把请求发过来的)http数据包的特点:格式很松散,因此解析的速度慢,但是传过来的数据包比fastcgi格式小

(浏览器的数据包是要人能看的懂,因此计算机需要转换)

双方承认的接口规范

4、fastcgi软件的架构分为C/S与B/S

C/S有两端:一、作为客户端的Client的fastcgi——pass和作为服务端的server的PHP-fpm,随着发展没有人当成一个整体了,而是把他分成两个部分客户端与nginx合并了,另一端以PHP合并了

其实nginx与Apache其实一样的,如果没有PHP支持,那么都处理不了所谓动态的,只是Apache动态的转发的速度快,但是只是单个包的速度快。Apache并发低(Apache为什么还在使用,因为很稳定,各种bug早已经被修改了,不容易出意味)

 

技术分享图片

用户的请求过来的之后,location过滤动态就是静态的,location/{静态} 过滤,那么nginx就去网页目录根据URL或URI的部分就去找网页,URI就返回给用户了(这个过程就看成I/O读写)(图片与视频在存储里面,存储是nfs,所以nfs挂载nginx)

如果是用户来的是动态的,location就过滤到动态了,那么发给fastcgi客户端就要推给服务端,推给socket进程9000端口(发送的数据fastcgi的数据包,因为把用户的请求做了一个数据转化,所以已经转化成fastcgi数据包了为了加快速度)

 

推的过程,先通过location过滤动态(正则location~*.(phplphp5)$)fastcgi_pass(若是本地那么就是fastcgi_pass 127.0.0.1:9000),从这就进入分离部署

PHP解析他要去找数据库(不知道怎么去找数据,因为PHP 是一种动态语言,那么PHP怎么找数据库的,他要激活开发的代码,根据代码写的内容找数据库),但是要知道,知道网页分为静态与动态网页,静态网页有真实的文件实体,动态也是有的,只是动态的实体是代码

技术分享图片

技术分享图片

其实文字代码就是js(js是连通后台的PHP或者Java,)(htmlcss是控制文字图片在页面上怎么显示以及漂亮不漂亮)js会连接php写的代码,他会发一个类似请求(json  xmll)推个后台,那么后台就会根据发过来去那想要看的东西,

动态网页也是有实体文件,只是这个实体文件并不是把里面的内容原封不动的给用户,给用户是看不懂的,它是怎么给用户,js是要从数据库拿数据的,拿过来是写到内存的,(假如PHP先把内容读取到内存里面,然后把代码去执行,js代码的部分就去数据库里面把想抓的文字抓出来了,,在内存里面把他去掉了,变成了取出来的文字了,然后打包给用户)动态也是实体文件的是从数据读出来的数据给用户的网页下面分两部分

技术分享图片

技术分享图片

 

以上是关于lnmp的主要内容,如果未能解决你的问题,请参考以下文章

搭建LNMP架构服务

Ubuntu 18.04服务端搭建nextcloud(免费开源的私有网盘)