企业级LNMP环境面试必备

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
全局流量管理 GTM,标准版 1个月
简介:

(1)

LNMP的工作流程:

当LNMP工作的时候,首先是用户通过浏览器输入域名请求Nginx Web服务,如果是请求的是静态的资源,则由Nginx解析返回给用户。

如果是动态的资源,那么久通过Fast CGI接口发送给PHP引擎服务(Fast CGI进程php-fpm)进行解析。

如果这个动态的请求要读取数据库,那么PHP就会继续向后请求MySQL数据库,读取需要的数据。

最终通过Nginx服务把获取的数据返回给用户,这就是LNMP的基本流程。


(2)企业选用MySQL作为数据库的优点:

1.性能卓越,服务稳定,很少出现异常宕机。

2.开放源代码并且没有版权的限制,自主传播,使用成本低。

3.历史悠久,社区及用户非常活跃,遇到问题很快可以获取帮助。

4.软件体积小安装简单,并且易于维护,安装及维护的成本低。

5.支持多种操作系统,提供API接口。

6.品牌效应,使得企业无需考虑就直接使用。


(3)LNMP环境搭建问题:

当安装LNMP一体化环境的时候MySQL数据库要装在Nginx所在的服务器上,

如果MySQL和Nginx不在同一台机器上,那么Nginx服务器上的MySQL数据库软件只要解压移动安装目录中就行。

不需要对MySQL进行初始化配置。

在PHP5.3以上的版本中,Nginx服务器上安装了MySQL软件,只需要在编译PHP的时候指定相关参数即可。

编译参数:--with-mysql=mysqlnd

表示在编译的时候会调用内置的MySQL的库。


(4)什么是FCGI:

FastCGI是一个可伸缩的、高速的在HTTP服务器的动态脚本语言间通信的接口(在Linux下,FastCGI就是socket,这个socket可以是文件socket或IPsocket)。

FastCGI采用C/S架构,它可以将HTTP服务器和脚本服务器分开,同时还可以在脚本解析服务器上启动一个或多个服务器来解析守护进程。

当HTTP服务器遇到动态程序的时候,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一的处理静态的请求。

这会很高的提高整个应用系统的性能。


(5)FastCGI的重要特点:

1.HTTP服务器和动态脚本语言间通信的接口或工具。

2.可以把动态语言解析或HTTP服务器分离开。

3.Nginx、Apache、Lighttpd,以及多数动态语言都支持FastCGI。

4.PHP动态语言方式采用C/S结构,分为客户端(HTTP服务器)和服务器端(动态语言解析服务器)。

5.PHP动态语言服务器端可以启动多个FastCGI的守护进程。

6.HTTP服务器通过FastCGI客户端和动态语言FastCGI服务器端通信。


(6)Nginx FCGI运行原理:

Nginx不支持对外部动态程序的直接调用或者解析。所有的外部程序(包括PHP)必须通过FastCGI接口来调用。

FastCGI接口在Linux下是一个socket,为了调用CGI程序,还需要一个FastCGI的wrapper(可以理解为用户启动另一个程序的程序),这个wrapper绑定在某个固定的socket上。

当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接受到请求,然后派生出一个新的线程,这个线程调用解释器或外部的程序处理脚本来读取返回的数据。

然后wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx,最后Nginx将返回的数据发送给客户端。

FastCGI的主要优点就是把动态的语言和HTTP服务器分离开来,使Nginx专门处理静态的请求,动态的请求直接使用PHP/PHP-FPM服务器专门处理。



 本文转自 棋帅小七 51CTO博客,原文链接:http://blog.51cto.com/xvjunjie/1962285

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
设计模式 安全 Java
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
19 1
|
6天前
|
设计模式 安全 Java
Java面试题:如何实现一个线程安全的单例模式,并确保其在高并发环境下的内存管理效率?如何使用CyclicBarrier来实现一个多阶段的数据处理任务,确保所有阶段的数据一致性?
Java面试题:如何实现一个线程安全的单例模式,并确保其在高并发环境下的内存管理效率?如何使用CyclicBarrier来实现一个多阶段的数据处理任务,确保所有阶段的数据一致性?
10 0
|
6天前
|
设计模式 并行计算 安全
Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
12 0
|
6天前
|
存储 安全 Java
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
13 0
|
6天前
|
存储 安全 Java
Java面试题:请解释Java内存模型,并说明如何在多线程环境下使用synchronized关键字实现同步,阐述ConcurrentHashMap与HashMap的区别,以及它如何在并发环境中提高性能
Java面试题:请解释Java内存模型,并说明如何在多线程环境下使用synchronized关键字实现同步,阐述ConcurrentHashMap与HashMap的区别,以及它如何在并发环境中提高性能
10 0
|
6天前
|
存储 安全 Java
Java面试题:如何在Java应用中实现有效的内存优化?在多线程环境下,如何确保数据的线程安全?如何设计并实现一个基于ExecutorService的任务处理流程?
Java面试题:如何在Java应用中实现有效的内存优化?在多线程环境下,如何确保数据的线程安全?如何设计并实现一个基于ExecutorService的任务处理流程?
10 0
|
6天前
|
安全 Java 调度
Java面试题:Java内存优化、多线程安全与并发框架实战,如何在Java应用中实现内存优化?在多线程环境下,如何保证数据的线程安全?使用Java并发工具包中的哪些工具可以帮助解决并发问题?
Java面试题:Java内存优化、多线程安全与并发框架实战,如何在Java应用中实现内存优化?在多线程环境下,如何保证数据的线程安全?使用Java并发工具包中的哪些工具可以帮助解决并发问题?
8 0
|
2月前
|
存储 自然语言处理 编译器
<大厂面试高频考点>程序环境和预处理
<大厂面试高频考点>程序环境和预处理
31 1
|
2月前
|
运维 Linux Docker
ChatGLM3在Docker环境部署(1),Linux运维电话面试技巧
ChatGLM3在Docker环境部署(1),Linux运维电话面试技巧
|
2月前
|
缓存 运维 NoSQL
面试分享:Redis在大数据环境下的缓存策略与实践
【4月更文挑战第10天】探索Redis在大数据缓存的关键作用,本文分享面试经验及必备知识点。聚焦Redis数据结构(String、List、Set、Hash、Sorted Set)及其适用场景,缓存策略(LRU、LFU、TTL)与过期机制,集群和数据分片,以及性能优化和运维技巧。通过代码示例深入理解,助你面试成功,构建高效缓存服务。
90 4