美文网首页
LNMP环境

LNMP环境

作者: Zhang21 | 来源:发表于2017-08-28 15:45 被阅读206次

    《老男孩Linux运维》笔记


    LNMP已经逐渐取代LAMP成为国内大中型互联网公司网站的主流组合环境!

    LNMP,即Linux + Nginx + MySQL|MongoDB + PHP/Python。

    当LNMP组合工作时,首先是用户通过浏览器输入域名请求Nginx Web服务。

    如果请求时静态资源,则由Nginx解析返回给用户;

    如果是动态请求(.php或.py),那么Nginx就会把它通过FastCGI(Uwsgi)接口发送给PHP引擎服务(FastCGI进程php-fpm)进行解析;

    如果这个动态请求尧都区数据库数据,那么PHP就会继续向后请求MySQL(MongoDB)数据库,以读取需要的数据,并最终通过Nginx服务把获取的数据返回给用户,这就是LNMP环境的基本请求顺序流程。

    LNMP组合调用关系逻辑图

    MySQL

    MySQL是一款广受用户欢迎的开源关系型数据库,由瑞典MySQL AB公司开发与维护。2006年被SUN公司收购,2008年SUN公司又被传统数据库领域老大甲骨文(Oracle)收购。因此,MySQL数据库软件目前属于Oracle公司,但仍开源。

    Oracle数据库服务于传统型大中型企业,而MySQL用于抢占互联网领域的数据库份额。

    MySQL是一种关系型数据库管理软件,关系型数据库的特点是将数据保存在不同的二维表中,并且讲这些表放入不同的数据库中,而不是把所有数据统一放在一个大仓库里,这样的设计增加了MySQL的读取速度、灵活性和可管理性也得到了很大提高。

    访问及管理MySQL数据库的最常用的标准化语言为SQL结构化查询语言。

    MySQL优点:

    性能卓越、服务稳定,很少出现异常宕机;

    开放源码且无版权制约,自主性强、使用成本低;

    历史悠久、社区及用户非常活跃,遇到问题可以很快获得帮助;

    软件体积小、安装简单、易于维护;

    支持多种操作系统、提供多种API接口、支持多种开发语言;

    MySQL安装:

    MySQL安装方式

    重视MySQL安装过程中的报错输出;

    useradd -s /sbin/nologin -g mysql -M mysql

    获取MySQL软件包:https://dev.mysql.com/downloads/

    MySQL配置文件: /etc/my.cnf

    记得给MySQL的用户设置密码:

    mysqladmin -u root password 'xxxxxxx'

    清理无用的MySQL用户和库:

    select user,host from mysql.user;

    drop user "username"@"host";

    FastCGI

    CGI的全称是“通用网关接口”(Common Gateway Interface),为HTTP服务器与其他机器上的程序服务通信交流的一种工具,CGI程序必须运行在网络服务器上。

    传统的CGI接口方式的主要缺点是性能较差,因为每次HTTP服务器遇到动态程序时都需要重新启动解析器来执行解析,之后结果才会被返回给HTTP服务器。这在处理并发访问时几乎是不可用的,安全性也很差,因此就诞生了FastCGI。

    FastCGI是一个可伸缩地、高速地在HTTP服务器和动态脚本语言间通信的接口(在Linux下,FastCGI接口即为socket),主要优点是把动态语言和HTTP服务器分离开。

    FastCGI接口采用C/S架构,它可以将HTTP服务器和脚本解析服务器分开,同时还能在脚本服务器上启动一个或多个脚本来解析守护进程。当HTTP服务器遇到动态程序时,可以将其直接交给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求,或者将动态脚本服务器的结果返回给客户端,提高了整个应用系统的性能。

    FastCGI特点:

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

    可把动态语言解析和HTTP服务器分离开;

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

    FastCGI接口方式采用C/S结构,分为客户端(HTTP服务器)和服务器端(动态语言解析服务器);

    PHP语言服务器端可以启动多个FastCGI的守护进程(如php-fpm);

    HTTP服务器通过FastCGI客户端(如Nginx fastcgi_pass)和动态语言FastCGI服务器端通信(如php-fpm);

    Nginx不支持对外部动态程序的直接调用或解析,所有的外部程序必须通过FastCGI接口来调用。FastCGI接口在Linux下socket,为了调用CGI程序,还需要一个FastCGI的wrapper(可理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定的socket上。当nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接收到请求,然后派生出一个新的线程,这个线程调用解释器或外部程序处理脚本来读取返回的数据,接着wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx,最后,nginx将返回的数据发送给客户端。

    Nginx结合PHP FastCGI

    FastCGI的主要优点是把动态语言和HTTP服务器分离开来,是Nginx专门处理静态请求及向后转发动态请求,而PHP/PHP-FPM服务器则专门解析PHP动态请求。

    相关文章

      网友评论

          本文标题:LNMP环境

          本文链接:https://www.haomeiwen.com/subject/lroudxtx.html