Linux初学(十一)中间件

一、web服务

1.1 中间件简介

中间件其实就是一类软件,中间件的作用是让用户可以看到一个网页

总结:客户端可以向服务端发送请求,服务器端会通过中间件程序来接收请求,然后处理请求,最后将处理结果返回给客户端

1.2 中间件软件程序:

  • iis:Windows服务器自带的中间件
  • nginx:支持跨平台,可以运行在各种系统,Windows/linux/unix....
  • apache:支持跨平台,可以运行在各种系统,Windows/linux/unix....
  • Tomcat:支持跨平台,可以运行在各种系统,Windows/linux/unix....

注意:一般情况下,中间件程序占用的端口是80

1.3 两种常见的web应用程序架构:

lamp:Linux、apache、mysql、php

lnmp:Linux、nginx、mysql、php

1.4 http协议

http协议:Hyper Text Transfor Protocol

作用:让用户通过浏览器发送请求到服务器端,并且接收客户端返回过来的数据,最后在浏览器展示出来

1.4.1 http请求报文格式:

格式:

第一行: 请求行
第二行~空白行: 请求头
空白行下面: 请求体

案例:

GET /download/a.html HTTP/1.1
Host: www.baidu.com
Connection: close
sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Ap0.0.0 Safari/537.36
Sec-Purpose: prefetch;prerender
Purpose: prefetch
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,i=0.8,application/signedexchange;v=b3;q=0.7
Sec-Fetch-Site: none


注意:这是GET传参,GET传参是没有请求体的,请求体和请求头结合了

请求行的格式:

第一部分:
    请求方法:GET/POST
    
    
第二部分:
    请求的URL

第三部分:
    客户端使用的HTTP协议版本号
        http 0.9
        http 1.0
        http 1.1

请求头的内容:

Host: 指定目标网站的域名或IP地址
Connection: 当前客户端的链接状态
User-Agent: 指定客户端访问网站的时候使用的浏览器
Referer: 表示当前这个请求是直接访问过来的,还是从其他的网站跳转过来的
1.4.2 http响应报文格式:

格式:

第一行: 响应行
第二行~空白行: 响应头
空白行下面: 响应体

案例:

HTTP/1.1 / 200 OK
Content-Security-Policy: frame-ancestors 'self' http
Content-Type: text/html; charset=utf-8
Date: Fri, 29 Mar 2024 00:27:39 GMT
Server: BWS/1.1
Traceid: 1711672059044989722616594963546741901591
X-Ua-Compatible: IE=Edge,chrome=1
X-Xss-Protection: 1;mode=block
Connection: close
Content-Length: 406827
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="Content-Type"
content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible"
content="IE=edge,c

响应行的格式:

第一部分: http协议版本号
第二部分: 客户端这次请求的状态码,这个状态码可以判断这次客户端的请求是成功的还是失败的
第三部分: 状态码对应的消息短语

状态码:

  • 1xx
    • 作用:提示信息
  • 2xx
    • 作用:表示客户端的本次请求是成功的
    • 200
  • 3xx
    • 作用:表示客户端本次请求被重定向到了其他地址
    • 301: 永久重定向
    • 302:临时重定向
    • 304:表示数据来自浏览器缓存
  • 4xx
    • 作用:表示客户端的本次请求是失败的【客户端原因】
      • 403 forbidden
        • 第一种可能:客户端所请求的文件,无权查看
        • 第二种可能:客户端没有指定要访问哪个文件,于此同时服务器默认要展示给用户的文件不存在也会报403
      • 404 not found:客户端所访问的页面不存在
  • 5xx
    • 作用:表示客户端的本次请求是成功的【服务器端原因】
    • 500
    • 501
    • 502

浏览器开发者工具可以看到数据包的三种首部【按F12】

1.5 http协议的格式

http://域名:端口号/路径/文件名

二、部署Apache

第一步:配置yum源

第二步:安装Apache

yum install httpd -y

第三步:启动Apache

systemctl start httpd #启动服务

systemctl enable httpd #设置开机的时候自动启动

systemctl status httpd #查看服务当前状态

第四步:检查端口号

ss -tunal | group 80

lsof -i :80

第五步:关闭selinux

sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config #永久关闭

setenforce 0 #临时关闭

第六步:关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

第七步:同浏览器访问测试

  • 在浏览器中输入Linux的IP就可以看到了
  • 注意:必须保证物理机和虚拟机可以通信才能看到网页

访问失败:排查故障

第一步:检测网络是否通畅 ping

第二步:检查Apache的状态

systemctl status httpd

第三步:在xshell中输入

telnet ip 端口

第四步:换个ip访问

第五步:查看防火墙是否关闭

systemctl status firewalld

第八步:编辑apache的配置文件(修改Apache的网站根目录是/abcd)

vim /etc/httpd/conf/httpd.conf

第一步操作:修改默认DocumentRoot

注释掉原有的内容 #DocumentRoot "/var/www/html"

添加一个新的网站根目录 DocumentRoot "/abcd"

第二个操作:添加授权

第九步:重启Apache

systemctl restart httpd

注意:别忘了创建 /abcd 目录

第十步:安装组件,用于实现文件互传

yum install lrzsz -y

第十一步:上传网页文件

注意:

需要先切换到 /abcd 下,然后再进行拖拽文件

这是在Xshell中进行的

第十二步:通过浏览器访问

http://linuxIP/文件名

http://linuxIP/文件名

例如:http://192.168.63.199/a.html

第十三步:指定网站的默认首页

vim /etc/httpd/conf/httpd.conf

<IfModule dir_module>

DirectoryIndex index.html a.html

</IfModule>

意思默认首页先找index.html ,如果找不到就找a.html

第十四步:重启httpd

systemctl restart httpd

第十五步:指定网站的域名

vim /etc/httpd/conf/httpd.conf

ServerName www.newjb.com

第十六步:重启httpd

systemctl restart httpd

第十七步:修改自己电脑的hosts文件

位置:C:\windows\system32\dirvers\etc\hosts

添加一行: linuxIP www.newjb.com

注意:需要把hosts文件,拖到桌面上,才能修改并保存,然后拖回去

第十八步:测试hosts文件是否正确

ping www.newjb.com

检查解析后的ip是否是Linux的ip

第十九步:在浏览器中输入域名:www.newjb.com

三、Apache的配置文件

apache的配置文件就是控制apache如何进行工作
配置文件位置:/etc/httpd/conf/httpd.conf

配置文件的内容:

  • DocumentRoot:这个参数是用于指定网站根目录
    • 网站根目录就是存储网页文件的目录
  • ServerName:指定网站域名。
  • DirectoryIndex:指定用户访问网站时候的默认首页文件
    • 用户如果不指定要访问的页面,那么这个参数就会返回一个指定的页面给用户
  • Listen:指定端口号

域名解析流程

第一步:先检查自己电脑的缓存

第二步:检查自己电脑的hosts文件

第三步:检查DNS服务器

判断apache是否在运行

思路一:检察服务的状态

systemctl status httpd

思路二:检查服务的端口是否启动

方法一:ss -tuanl | grep 80

方法二:netstat -anl | grep 80

方法三:lsof -i :80

思路三:检测进程

ps -aux | grep 80

ps -elf | grep 80

修改apache的端口

所有中间件程序,默认端口都是80

如果是80的话,客户端可以直接通过浏览器进行访问

http://192.168.1.14/a.html

http://192.168.1.14:80/a.html

http://www.newjb.com/a.html

http://www.newjb.com:80/a.html

如果将端口修改为非80的话,例如修改为8023,客户端访问的时候,必须指定端口号

http://192.168.1.14:8023/a.html

http://www.newjb.com/a.html

Centos7 管理服务的格式:

  • systemctl start 服务名 启动服务
  • systemctl stop 服务名 关闭服务
  • systemctl restart 服务名 重启服务
  • systemctl enable 服务名 设置服务开机的时候自动启动
  • systemctl disable 服务名 设置服务开机的时候禁止自动启动
  • systemctl status 服务名 查看服务当前的状态
相关推荐
ZHOUPUYU9 分钟前
Centos常用命令,按功能分类,用户和权限管理等
linux·运维·centos
vvw&27 分钟前
如何在 Ubuntu 22.04 上安装 phpMyAdmin
linux·运维·服务器·mysql·ubuntu·php·phpmyadmin
手心里的白日梦44 分钟前
TCP协议
服务器·网络·tcp/ip
灰勒塔德1 小时前
Linux文件IO
linux·运维·服务器
dntktop2 小时前
解锁自动化新高度,zTasker v2.0全方位提升效率
运维·windows
我曾经是个程序员2 小时前
C#Directory类文件夹基本操作大全
服务器·开发语言·c#
花姐夫Jun3 小时前
在 CentOS 8 系统上安装 Jenkins 的全过程
linux·centos·jenkins
运维&陈同学3 小时前
【Beats01】企业级日志分析系统ELK之Metricbeat与Heartbeat 监控
运维·elk·elasticsearch·云原生·kibana·heartbeat·metricbeat
地球资源数据云3 小时前
全国30米分辨率逐年植被覆盖度(FVC)数据集
大数据·运维·服务器·数据库·均值算法
是店小二呀3 小时前
【Linux】Linux开发利器:make与Makefile自动化构建详解
linux·运维·自动化