余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

Linux基础17-linux之企业级架构LNMP原理介绍(连载中)

xiyangw 2023-05-14 11:18 14 浏览 0 评论

lnmp最常见的架构

Linux基础17-linux之企业级架构LNMP原理介绍(连载中)

L linux --系统平台

N nginx --网站的前端程序,发布静态页面和调用外部程序解析动态页面

M mysql --网站的后台数据库

P PHP --网页的变成语言(也可以用python)

工作原理

  1. 客户端的所有的页面请求先到达lnmp结构中的nginx

  2. nginx根据自己的判断哪些是静态页面,哪些是动态页面

  3. 如果是静态页面直接由nginx自己处理就可以返回结果给客户端了

  4. 如果*.php动态页面nginx需要调用php中间件服务器来处理

  5. 在处理PHP页面的过程中可能需要调用mysql数据库中的数据完成页面编译

  6. 编译完成后的页面返回给nginx,nginx再返回给客户端

nginx

ngin是http服务器软件,nginx的特点是处理速度非常快,占用的资源很少。功能上nginx模块全部是静态编译的,也就是说如果需要处理动态的编译需要安装其他软件来完成动态的编译

nginx的的优势

作为web服务器处理静态文件,索引文件,自动索引的效率非常高

作为代理服务器,可以实现无缓存的反向代理,提高网站运行速度

作为负载均衡服务器,可以在内部直接支持rails和php等

性能方面,采用epoll模型,可以支持多并发并且占用低内存

稳定方面,采取分段资源分配技术,CPU和内存占用率非常低,少量的dos攻击对nginx基本无作用,

高可用方面,支持热部署,启动迅速,可以在不间断服务的情况下,直接升级7x24小时不间容灾

nginx的模块和工作原理

nginx由内核和模块组成,模块结构分为核心模块,基础模块,第三方模块

核心模块: http模块,event模块,mail模块

基础模块: http fastCGI模块,http proxy模块,http rewrite模块

第三方模块: http upstream request hash 模块,notice模块,htttp access key 模块

模块从功能上分为如下三类:

Handlers(处理器模块):直接处理请求,并进行输出内容和修改headers信息操作只有一个

Filters(过滤模块):主要对其他处理器模块输出的内容进行修改操作,最后由nginx输出案例故障汇总

Proxies(代理类模块):主要与后端一些服务比如FastCGI进行交互,实现代理和负载均衡

在工作方式上:

单工作进程(默认):除主进程外,还有一个工作进程

多工作进程:每个进程包含多个线程

nginx模块之间被编译金nginx,因此属于静态编译方式,然后将模块编译为一个so文件,在配置文件中指定是否加载

nginx模块的HTTP请求和响应过程图如下:

nginx进程理解 分发

nginx进程

nginx启动后。在linux系统中以Daemon的方式在后台运行,后台进程包含一个master进程和多个work进程,默认以多进程方式

master管理work 外界的信号都是发给master,再由master分配给work进程

master进程

  1. 管理work进程

  2. 外界的信号都是发给master,再由它分配给work进程

  3. 监控work的运行状态,如发生异常,重新启动新的进程

work进程

  1. work之间是对等的

  2. 基本的网络请求都是在work中进行

  3. 一个请求只能在一个work进程中进行

  4. 一个work进程也不能处理其他进程的请求

  5. work进程的个数是可设置的,一般跟CPU核数相同

master进程主要用来管理worker进程,具体包括如下4个主要功能

  1. 接收来自外界的信号

  2. 向各worker进程发送信号

  3. 监控woker进程的运行状态

  4. 当woker进程退出后(异常情况下),会自动重启新的woker进程

    woker进程主要用来处理网络时间,各个woker进场之间是对等且相互独立的,他们同等竞争来自客户端的请求,一个请求只可能在一个worker进程中处理,woker进程个数一般设置为机器CPU核数

nginx安装 一种是源码安装 一种是rpm包安装

首先看看源码安装 http://nginx.org

yum -y install pcre-devel zlib-devel <pcre可以使nginx支持http-rewrite模块> 
tar xvf nginx-1.11.0.tar.gz 
cd nginx-1.11.0 
./configure --with-http_stub_status_module --prefix=/usr/local/service/nginx --with-http_gzip_static_module make && make install --with-http_stub_status_module 
可以启动nginxstatus功能,以监控nginx当前状态

利用TCMalloc优化nginx的性能 扩张知识

TCMalloc是谷歌的开源工具google-perftools的成员,它可以在内存分配效率和速度上高很多,可以很大程度提高服务器在高并发情况下的性能,从而降低系统的负载

1.安装libunwind库,libunwind-0.99-alpha.tar.gz

`tar xvf cd ./configure maek make install

2.安装google-perftools

tar xvf gperftools-2.1.tar.gz

cd ./config make && make install

echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf

ldconfig

至此,google-perftools安装完成

nginx启动与关闭

#检查语法

/usr/loacal/service/nginx/sbin/nginx -t

#平滑重启

/usr/local/service/sbin/nginx -s reload

#不间断服务器重启,将pid行程重跑(restart)

kill -HUP cat /opt/nginx/logs/nginx.pid

关闭

kill 进程号

nginx定时切割日志脚本

1.创建脚本 /usr/local/service/nginx/sbin/cut_nginx_log.sh

cd /usr/local/service/nginx/logs 
/bin/mv access.log access_$(date+%F -d -1day).log 
/usr/local/service/nginx -s reload

添加到定时任务

crontab -e #添加以下代码

0 0 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx #每天凌晨定时执行脚本

crontab -e

30 19 * * * /bin/sh cut.nginx.log > /dev/null 2>&1 每天19点30分执行一次

相关推荐

辞旧迎新,新手使用Containerd时的几点须知

相信大家在2020年岁末都被Kubernetes即将抛弃Docker的消息刷屏了。事实上作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使...

分布式日志系统ELK+skywalking分布式链路完整搭建流程

开头在分布式系统中,日志跟踪是一件很令程序员头疼的问题,在遇到生产问题时,如果是多节点需要打开多节点服务器去跟踪问题,如果下游也是多节点且调用多个服务,那就更麻烦,再者,如果没有分布式链路,在生产日志...

Linux用户和用户组管理

1、用户账户概述-AAA介绍AAA指的是Authentication、Authorization、Accounting,即认证、授权和审计。?认证:验证用户是否可以获得权限,是3A的第一步,即验证身份...

linux查看最后N条日志

其实很简单,只需要用到tail这个命令tail-100catalina.out输入以上命令,就能列出catalina.out的最后100行。...

解决linux系统日志时间错误的问题

今天发现一台虚拟机下的系统日志:/var/log/messages,文件时间戳不对,跟正常时间差了12个小时。按网上说的执行了servicersyslogrestart重启syslog服务,还是不...

全程软件测试(六十二):软件测试工作如何运用Linux—读书笔记

从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事,工作时需要用到,面试时会被问到,简历中需要写到。对于软件测试人员来说,不需要你多么熟练使用Linux所有命令,也不需要你对Linux...

Linux运维之为Nginx添加错误日志(error_log)配置

Nginx错误日志信息介绍配置记录Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块(nginx_core_module)的参数,该参数名字为error_log,可以放在不同的虚机主...

Linux使用swatchdog实时监控日志文件的变化

1.前言本教程主要讲解在Linux系统中如何使用swatchdog实时监控日志文件的变化。swatchdog(SimpleWATCHDOG)是一个简单的Perl脚本,用于监视类Unix系统(比如...

syslog服务详解

背景:需求来自于一个客户想将服务器的日志转发到自己的日志服务器上,所以希望我们能提供这个转发的功能,同时还要满足syslog协议。1什么是syslog服务1.1syslog标准协议如下图这里的fa...

linux日志文件的管理、备份及日志服务器的搭建

日志文件存放目录:/var/log[root@xinglog]#cd/var/log[root@xinglog]#lsmessages:系统日志secure:登录日志———————————...

运维之日志管理简介

日志简介在运维过程中,日志是必不可少的东西,通过日志可以快速发现问题所在。日志分类日志分类,对不同的日志进行不同维度的分析。操作系统日志操作系统是基础,应用都是在其之上;操作系统日志的分析,可以反馈出...

Apache Log4j 爆核弹级漏洞,Spring Boot 默认日志框架就能完美躲过

这两天沸沸扬扬的Log4j2漏洞门事件炒得热火朝天:突发!ApacheLog4j2报核弹级漏洞。。赶紧修复!!|Java技术栈|Java|SpringBoot|Spring...

Linux服务器存在大量log日志,如何快速定位错误?

来源:blog.csdn.net/nan1996jiang/articlep/details/109550303针对大量log日志快速定位错误地方tail/head简单命令使用:附加针对大量log日志...

Linux中查看日志文件的正确姿势,求你别tail走天下了!

作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了。尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于我这种小菜鸡来说,第一反应就是cat,tail,vi(或...

分享几款常用的付费日志系统,献给迷茫的你!

概述在前一篇文章中,我们分享了几款免费的日志服务器。他们各有各的特点,但是大家有不同的需求,有时免费的服务器不能满足大家的需要,下面推荐几款付费的日志服务器。1.Nagios日志服务器Nagio...

取消回复欢迎 发表评论: