云计算学习笔记——HTTP服务、NFS服务篇

云计算学习日记Day16》------ 从零开始的云计算之旅

今天是系统学习云计算的第十六天,记录了关于我的云计算学习,后续将每日更新我的笔记。欢迎大家一起来学习,如果内容有遗漏和错误,还请大家多多指正和包涵,谢谢大家

HTTP服务基础

独立Web主机

Web通信基本概念

  • 基于B/S(Browser/Server)架构的网页服务
    • 服务端提供网页
    • 浏览器下载并显示网页
  • Hyper Text Markup Language,超文本标记语言
  • Hyper Text Transfer Protocol,超文本传输协议

Linux中的Web服务

  • 软件包:httpd
  • 系统服务:httpd
  • 提供的默认配置:
    • Listen:监听地址:端口(80)
    • ServerName:本站点注册的DNS名称(空缺)
    • DocumentRoot:网页根目录(/var/www/html)
    • DirectoryIndex:起始页/首文件名(index.html)

独立Web站点的快速部署

三步骤策略:装包、配置、启动服务

实现Web功能的软件:httpd、Nginx、tomcat

  • 第一步:装包(httpd)

  • 第二部:配置(部署首页:/var/www/html/)

  • 第三步:启动服务(httpd)

    #安装完软件之后,检查一下
    [root@test1 ~]# rpm -q httpd

    #查看网页根目录
    [root@test1 ~]# ls /var/www/html

    #显示网页根目录下是空的,如果我们这个时候打开网页的话什么都没有
    #所以我们来写点东西,注意文件名,我们没有修改配置,默认是index.html
    [root@test1 ~]# echo Hello World!!! > /var/www/html/index.html
    [root@test1 ~]# curl http://192.168.99.10

备注:

有时候我们在重启http服务的时候,可能会出现报错,这可能是我们的配置出现了问题,这个时候我们就要学会找错误,查看报错信息可以给我们指明方向

访问Web站点

  • 为浏览器程序提供URL网址
    • Uniform Resouce Locator,统一资源定位器
    • 协议名://服务器地址[:端口号]/目录/文件名

在上面的步骤当中我们就已经实现了访问Web站点

修改配置文件→修改网页等

  • 主配置文件目录:/etc/httpd/conf/httpd.conf
  • 主要配置内容:
    • ServerRoot "/etc/httpd":这是Apache安装的"根目录",所有的相对路径都要从这里算起,一般情况下不需要进行修改
    • Listen 80:告诉httpd在哪个端口/地址上收包。如果想要更改的话可以直接复刻,多个端口/多ip就写多行。例如:Listen 8080等。建议自定义端口时大于1024,并且最大65535
    • ServerAdmin root@localhost:报错时页面底部显示的"管理员邮件",对外的服务器一般都会修改为真实的邮件地址,方便他人联系
    • ServerName www.example.com:80:默认会被注释掉,这是apache用来"自称"的名字。正式环境一定要写自己的域名,SSL站点尤其需要
    • DocumentRoot "/var/www/html":网站的主目录,访问网站时的主界面,可以进行修改,但是前期是要有对应的目录,不然会报错
    • DirectoryIndex index.html:访问目录的时候默认要找的文件,可以写多个,但是总会先找排在前面的。例如:DirectoryIndex hello.html index.html 如果配置修改成这样,会先找网站的主目录下的hello.html,如果找不到的话才会去找index.html
    • 等等。
  • httpd自己独有的访问控制规则
    • 默认会继承父目录访问控制规则
    • 除非单独为目录书写规则可以不继承
  • 真实的规则:
    • /var/www :允许所有客户端访问
    • / :禁止所有客户端访问
    • 默认情况下的网页文件,必须在/var/www目录下,才能被允许访问,想要修改的话就需要修改配置文件中的相关配置

测试

首先来看一下我的页面主目录位置:

再来看一下我的访问目录时默认要找的文件:

根据上面显示的位置,当我访问网页时,要找的文件是:/var/www/html/index.html,来看一下他的内容:

然后我们分别用本机和其他虚拟机使用命令行浏览器访问,查看结果如何,再用图形浏览器访问,查看结果:

本机命令行浏览器结果:

其他虚拟机的命令行浏览器结果:

图形浏览器访问结果:

访问过程

curl http://192.168.99.10 → 服务器 192.168.99.10 → http 协议 → 内存寻找相应http协议请求 → httpd进程 → DocumentRoot "/var/www/html" → DirectoryIndex index.html

网络路径和实际路径

配置:DocumentRoot "/var/www/html"和 DirectoryIndex index.html

如果网络路径是:http://192.168.99.10/aa/bb/cc/

那么实际路径是:/var/www/html/aa/bb/cc/index.html

虚拟Web主机

虚拟主机的含义及类型

  • 虚拟Web主机含义
    • 由同一台服务器提供多个不同的Web站点
  • 区分方式
    • 基于 域名 的虚拟主机
    • 基于 端口 的虚拟主机
    • 基于 IP地址 的虚拟主机
  • 注意:一旦使用了虚拟Web主机功能,所有的网站都必须使用虚拟Web方式进行呈现

配置一个虚拟站点(基于域名)

  • 配置文件路径

    • /etc/httpd/conf/httpd.conf:主配置文件
    • /etc/httpd/conf.d/*.conf:调用配置文件
  • 为每一个虚拟站点添加配置

    <VirtualHost IP地址:端口>
    ServerName 此站点的DNS名称(站点域名,如www.baidu.com
    DocumentRoot 此站点的网页根目录
    </VirtualHost>

  • 注意事项:为每一个站点提前准备好网页目录

对虚拟主机测试访问

首先可以新建一个调用配置文件:/etc/httpd/conf.d/test.conf

复制代码
[root@test1 ~]# touch /etc/httpd/conf.d/test.conf
[root@test1 ~]# vim /etc/httpd/conf.d/test.conf
[root@test1 ~]# cat /etc/httpd/conf.d/test.conf
<VirtualHost *:80>
        ServerName www.yuming01.com
        DocumentRoot "/Web/yuming01"
</virtualHost>
<VirtualHost *:80>
        ServerName www.yuming02.com
        DocumentRoot "/Web/yuming02"
</virtualHost>
<VirtualHost *:80>
        ServerName www.yuming03.com
        DocumentRoot "/Web/yuming03"
</virtualHost>

然后我们要保证配置中的页面主目录存在,所以我们创建一下目录和文件来区分测试

复制代码
[root@test1 ~]# mkdir -p /Web/yuming01
[root@test1 ~]# mkdir -p /Web/yuming02
[root@test1 ~]# mkdir -p /Web/yuming03
[root@test1 ~]# echo '我是域名01' > /Web/yuming03/index.html
[root@test1 ~]# echo '我是域名02' > /Web/yuming02/index.html
[root@test1 ~]# echo '我是域名01' > /Web/yuming01/index.html
[root@test1 ~]# echo '我是域名03' > /Web/yuming03/index.html
[root@test1 ~]# cat /Web/yuming01/index.html
我是域名01
[root@test1 ~]# cat /Web/yuming02/index.html
我是域名02
[root@test1 ~]# cat /Web/yuming03/index.html
我是域名03

之后重启http服务

复制代码
systemctl  restart httpd

现在我们尝试一下用本机访问一下自己的这个域名

但是没有成功,这里需要来插入一些dns的知识来解释:

扩充

我们都知道访问互联网时需要连接dns服务器,但是我们的站点没有在dns服务器做备注,这只是我们自己创建的用来实验和测试的,所以我们要解决这个问题

配置dns办法:

  • 自动获取DNS服务器地址
  • 手工指定DNS服务器地址:采用/etc/hosts文件直接解析域名,只为本机解析

最后一行是我手动添加的,具体格式就是这样

然后我们再次尝试访问,结果没有和我们想的一样,用图形浏览器来看就是这样的:

这是为什么?这是httpd的测试页面,出现这个页面的原因:

1、没有网页文件

2、网页文件名不是index.html(或者说和设置的不一样)

3、SELinux没有关闭(setenforce 0 可以临时关闭)

4、httpd的访问控制规则拒绝

上面我们讲过了,默认情况下的网页文件,必须在/var/www目录下,才能被允许访问,想要修改的话就需要修改配置文件中的相关配置

修改完后再试一下:

成功

基于端口的虚拟Web主机

还是修改httpd服务的调用配置文件(注意补充端口)

配置好调用配置文件之后,还需要注意网页的主目录和默认文件:

复制代码
[root@test1 ~]# mkdir /Web/port01
[root@test1 ~]# mkdir /Web/port02
[root@test1 ~]# echo '我是端口01' > /Web/port01/index.html
[root@test1 ~]# echo '我是端口02' > /Web/port02/index.html
[root@test1 ~]# tree /Web
/Web
├── port01
│   └── index.html
├── port02
│   └── index.html
├── yuming01
│   └── index.html
├── yuming02
│   └── index.html
└── yuming03
    └── index.html

5 directories, 5 files

不要忘记还有手动配置测试的服务机器和客户机器的DNS服务

配置完之后重启httpd服务,然后进行测试连接:成功

对默认Web站点的影响

  • 一旦启用虚拟Web主机以后:
    • 外部的DocumentRoot、ServerName会被忽略
    • 第一个虚拟站点被视为默认站点,若客户机请求的URL不属于任何已知站点,则由第一个站点相应
    • 当独立Web服务器升级为虚拟主机服务器后,需要为原Web站点建一个虚拟站点
  • Listen:主配置文件与调用配置文件均存在此配置,共同生效但是不允许重复
  • DocumentRoot:主配置文件与调用配置文件均存在此配置,后应用的生效(就是有两个的时候,排在下面的生效)
  • 访问控制规则:主配置文件与调用配置文件均存在此配置,共同生效

NFS服务基础

普通NFS服务

NFS共享概述

  • Network File System,网络文件系统
    • 用途:为客户机提供共享使用的文件夹
    • 协议:NFS(TCP/UDP 2049)、RPC(TCP/UDP 111)
  • 所需软件包:bfs-utils
  • 系统服务:nfs-server

exports配置文件解析

  • 修改 /etc/exports
    • 文件夹路径 客户机地址(权限) 客户机地址(权限)......
  • 使用exportfs可以重新加载更新过的配置
    • exportfs -r

访问NFS共享文件夹

  • 列出有哪些NFS共享资源
    • showmount -e 服务器地址
  • 手动挂载NFS共享
    • mount 服务器地址:共享的文件夹路径 挂载点
  • 开机自动挂载配置:/etc/fstab
    • 服务器地址:共享的文件夹路径 挂载点 nfs _netdev 0 0

第一步:安装nfs-utils软件

第二步:创建需要共享的文件

复制代码
[root@test1 ~]# mkdir /test
[root@test1 ~]# echo 123456 > /test/1.txt
[root@test1 ~]# echo 654321 > /test/2.txt
[root@test1 ~]# cat /test/1.txt 
123456
[root@test1 ~]# cat /test/2.txt 
654321

第三步:修改配置文件

复制代码
#先查看一下配置文件的内容,里面是空的,然后我们对他进行编辑
[root@test1 ~]# cat /etc/exports
[root@test1 ~]# vim /etc/exports
[root@test1 ~]# cat /etc/exports

#编辑的内容:共享的文件夹路径      客户机地址(权限)......
#(下面的图片中写错了,192.168.99.11写成了192.168.99.10)
/test   192.168.99.11(ro)

#重新加载更新过的配置
[root@test1 ~]# exportfs -r

#重启nfs-utils
[root@test1 ~]# systemctl restart nfs-
nfs-blkmap.service  nfs-idmapd.service  nfs-server.service  
nfs-client.target   nfs-mountd.service  nfs-utils.service   
[root@test1 ~]# systemctl restart nfs-utils.service 
相关推荐
MarkHD4 小时前
智能体在车联网中的应用:第51天 模仿学习与离线强化学习:破解数据效率与安全困局的双刃剑
学习·安全
Drawing stars7 小时前
JAVA后端 前端 大模型应用 学习路线
java·前端·学习
崇山峻岭之间7 小时前
Matlab学习记录33
开发语言·学习·matlab
玄〤7 小时前
黑马点评中 VoucherOrderServiceImpl 实现类中的一人一单实现解析(单机部署)
java·数据库·redis·笔记·后端·mybatis·springboot
科技林总8 小时前
【系统分析师】3.5 多处理机系统
学习
芯思路9 小时前
STM32开发学习笔记之三【按键】
笔记·stm32·学习
AKAMAI9 小时前
圆满循环:Akamai 的演进如何为 AI 推理时代奠定基石
人工智能·云计算
Lips6119 小时前
2026.1.11力扣刷题笔记
笔记·算法·leetcode
charlie11451419110 小时前
从 0 开始的机器学习——NumPy 线性代数部分
开发语言·人工智能·学习·线性代数·算法·机器学习·numpy
咚咚王者10 小时前
人工智能之核心基础 机器学习 第十二章 半监督学习
人工智能·学习·机器学习