Linux网络服务

1.http协议版本

 2.http请求

请求头

  • HTTP: 用户的请求与响应被后格式与定义
  • HTTP请求豹纹
 请求起始行: GET / (uri) HTTP/1.1
 请求头(head):
User-Agent: 客户端代理(浏览器)
Host: 域名
空行
请求豹纹主体(body): POST
  • HTTP响应报文
响应报文的起始行: HTTP/1.1 状态码
响应头: Server(web服务器)
空行
响应豹纹的主体(body): 文件内容
  • 状态码 

 3.web服务

  • WEB服务:网站服务,部署并启动了这个服务,你就可以搭建一个网站.
  • WEB中间件: 等同于WEB服务
  • 中间件:范围更加广泛,指的负载均衡之后的服务.
  • 数据库中间件:数据库缓存,消息对列

4.Ngx处理用户请求流程

目录结构

主配置文件详解

 子配置文件

 Nginx处理用户请求流程

使用域名访问网站流程:
(1)DNS解析:域名-->IP地址
(2) 连接80端口: tcp3次握手与网站的80端口建立连接
(3)http请求豹纹:请求方法,URI,HOST等信息
  • GET /index.html
  • HOST: cxk.oldboylinux.cn
  • User-Agent: Chrome/xxx

(4)ngx处理:

  • http请求,http区域处理
  • 不同的server{} 区域(子配置文件)处理.
  • 端口
  • 域名:用户请求的域名与子配置文件server_name进行匹配.
  • 匹配成功,就让对应的子配置文件(server{})处理
  • 根据子配置文件的,root,location规则,index进行处理查找文件.
  • 把找到的文件发回给用户.
(5)http响应豹纹:
  • 状态码:200 ok
  • server信息
  • 其他信息
  • 文件内容
(6)客户收到文件内容,浏览器解析,进行展示.

 5.虚拟主机

 12。访问格式

 13.负载均衡选择

 13.LNMP

LNMP原理(动态,静态)
LNMP搭建流程
MariaDB
(查看所有的库,查看所有的用户;)
(创建库,创建用户;)
PHP(会修改PHP运行的用户)
Ngx(配置转发规则)
LNMP排错流程.
testinfo.php 检查ngx能否把动态请求转发给php,php能否解析.
testmysql.php 检查php代码是否能够以指定的用户,密码,连接指定的库.
代理:
proxy_pass指令:把用户的请求转发到指定的节点.
proxy_set_header 指令:用于修改代理向后端节点发出请求的时候 请求头 .
14.负载均衡 vs 反向代理

 15.轮询算法

 16.HA高可用服务

  •  keepalived是基于VRRP协议实现高可用.
  • VRRP虚拟路由器冗余协议,最开始是给网络设备实现高可用.目前keepalive实现vrrp协议,通过vrrp实现高可用.
  • 分为主,备一般是2个节点.主备之间通过vrrp协议发送数据包沟通.
  • 主给备定期发送数据包,备收到数据包表示主还活着,备无法收到数据包,表示主挂了,备胎转正了,接管用户请求流量.
  • vrrp协议使用组播的ip. 224.xx.xx.xx
keepalived配置文件分类

 17.脑裂故障

现象:主备都有vip.
原因:
  • 备认为主挂了,接管资源生成VIP.实际上主并没有挂,仍有VIP.
  • 有很多原因可以导致脑裂,开启防火墙,selinux,keepalived配置,物理线路.
解决:
  • 监控(备节点监控),只要备节点有vip就告警.
  • 更狠一点监控备节点只要有vip,远程控制主节点,只要备节点认为主挂了,那就让他真的挂了.
 18.案例-keepalived基于主机高可用软件
  • keepalived只会在主机挂了,网络断开后,才会进行主备切换.
  • 默认情况下keepalived不会监控某个服务.
  • 项目目标: 某个服务关闭了,keepalived就进行主备切换.
项目步骤:
  1. 老男孩教育-王牌VIP班书写脚本,过滤服务进程数,端口数量,检查是否运行.
  2. 然后进行判断如果服务没有运行,则关闭keepalived.
  3. 修改keepalived配置文件,通过keepalived调用这个脚本.
小结
  1. 书写脚本: 获取服务端口数/进程数,通过if进行判断,如果端口或进程数为0,则关闭keepalived.
  2. 修改keepalived配置:
  • 定义脚本 vrrp_script 名字 { script 脚本路径与名字 ....}
  • 调用脚本 vrrp_instance中通过track_script
  1. 调试 

19.非抢占模式

  • keepalived 主备默认是抢占式,主挂了,备接管.主恢复,不希望主重新抢回资源.
  • 配置非抢占式模式即可.

 使用流程

  1. 1. 2个节点状态是备
  2. 2. 配置nopreempt选项

 20.双主模式

应对高并发的时候设置的双主模式.

 21.Java容器

  • JVM: java 虚拟机中,运行java代码的地方.
  • JRE: java Runtime Enviroment java运行环境 . 提供jvm环境,java命令.
  • JDK: Java Development Kit java开发环境 , jvm+jre+额外功能

 22.Java应用负载高排查方法

 

 23.Java会话共享方案

 

 24.

前端,后端下载的代码是源代码
前端代码需要编译,nodejs环境编译-->静态资源(html,css,js)-->nginx中.
后端代码java, 通过maven/gradle编译-->war包/jar包   运行

25

 26.常见动态网站的架构

  • PHP: LNMP(LEMP), LAMP, WNMP/WAMP (PՎՎʖPHP,WՎՎʖWindows,AՎʔApache)
  • Java: LNMT(Tomcat,Jetty,Weblogic,Jboss)
  • Python: LNMP(Python,uwsgi)
  • Golang: LNMG(Golang)
  • C/CՎҡ: LNM?........ 

27.LNMP处理动态请求流程

 28.LNMP排错

  • 排除法.
  • Linux:防火墙,selinux.
  • Nginx:检查配置,处理流程检查. 测试ngx.
  • PHP:处理动态请求. 测试:ngx+php
  • MySQL: 测试php+数据库
  • 老男孩教育-王牌VIP班背景:ngx部署wordpress(php)站点报错了,说说排查流程.
  • 步骤:
  1.  1. 检查ngx是否正常运行.
检查端口
检查进程
检查配置
站点目录下面创建 test.html 写入内容
curl 访问
  1. 2.ngx是否把动态页面转发php,php是否解析.
站点目录下
testinfo.php
<?php
phpinfo();
?>
测试完成,务必删除,否则网站信息泄漏
  1. 3.检查php连接数据库是否正常(测试数据库用户名和密码)

 29.负载均衡选型

  • upstream模块,upstream指令实现负载均衡.创建分组/池塘,proxy_pass中使用即可.
[root@lb01 /etc/nginx/conf.d]# cat 
lb.oldboylinux.cn.conf 
upstream lb_pools {
 server 10.0.0.7:80;
 server 10.0.0.8:80;
}
server {
 listen 80;
 server_name lb.oldboylinux.cn;
 error_log /var/log/nginx/lb-error.log notice;
 access_log /var/log/nginx/lb-access.log main;
 location / {
   proxy_pass http:Վˌlb_pools;
   proxy_set_header Host $http_host;
   proxy_set_header X-Forwarded-For 
$proxy_add_x_forwarded_for;
 }
}

 30.Nginx处理用户请求流程-静态-无负载

 31.Nginx处理用户请求-含负载均衡

https://www.processon.com/view/link/619d93310e3e74287fe4e3de

 32.Nginx平滑升级

 33.Nginx重定向

(1)return

  • return + 状态码 与 location 或 if.
  • 实现跳转
  • 返回指定的状态码.
  • 域名跳转(新旧域名)
  • httpՎՎʖhttps跳转 

 (2)if判断

  • if用于进行判断,通过ngx中变量.
  • 可以比大小.
  • 也可以进行等于,不等于.
  • 也可以进行匹配(过滤). 

设置网站是否为维护状态:如果维护状态:返回503状态码,否则正常访问.
流程
  • 设置标记$flag 默认是0.
  • 判断如果$flag的值是1则网站返回503

 (3)rewrite

  • rewrite正则用于匹配用户请求的uri.
  • 命令的格式与sed 's###g' 类似,实现替换功能,rewrite替换url内容.(改写)

 rewrite各种标记

 34.https

  • 基于http协议,传输的时候进行加密.
  • 如果不使用https,数据传输都是明文的.
  • 应用场景:
    • 目前大部分的业务都是使用https加密.
    • 企业想使用http 2.0 基于https.
  • 部署https加密的流程
  1. 域名 *.jd.com www.jd.com
  2. 根据域名申请https证书(私钥与公钥(ca证书)),自己创建.
  3. 进行配置web/lb.

 35.网站集群https配置

 36.

 37.tomcat目录结构

 38.书写systemctl管理配置文件进行管理

  • 服务管理指令.
  • 存放在/usr/lib/systemd/system/xxxx.service
  • 分为3个部分.
  • 修改或设置systemctl配置要进行重新加载配置

 39.运行代码

 40.配置文件

 规范tomcat访问日志格式

 41.to'mcat+ngx架构

(1)没有使用动静分离

 (2)动静分离

 42.命令

(1)jps

jps-->java ps 命令,只显示java进程. 类似于 ps -ef |grep java
(2)jstack
jstack查看java进程内部信息,线程信息.
进程: 占空间,占系统资源,厂房.
线程: 厂房里面的工人,处理与用户的请求.
需要代码使用多线程技术. 通过ps aux 查看进程是否支持线程(是否使用多线程技术)
(3)jmap
jmap查看或导出jvm信息
查看jvm使用情况
(4)mat分析工具
jvm内存映像文件,在windows/mac/ubuntu系统下通过MemoryAnalyzer Tool (MA/MAT)
1. 需要jdk环境
2. 软件包解压即可使用
3. MemoryAnalyzer.exe
43.tomcat安全优化

posted @ 2024-05-24 20:46  嘉禾世兴  阅读(22)  评论(0编辑  收藏  举报