云计算学习笔记——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 
相关推荐
智汇云校乐乐老师7 小时前
HCIE数通/云计算真机实验机架展示
云计算
Clownseven7 小时前
CN2 GIA线路深度解析:阿里云/腾讯云选哪个?(附三网评测)
阿里云·云计算·腾讯云
杏花春雨江南7 小时前
pringboot3.0 创建的javaweb 应用,部署在腾讯云上的整体步骤
云计算·腾讯云
roman_日积跬步-终至千里7 小时前
【软件架构设计(23)】云计算与云原生技术
云原生·云计算
wdfk_prog7 小时前
[Linux]学习笔记系列 -- lib/dump_stack.c 栈回溯打印(Stack Trace Dumping) 内核调试与错误诊断的基石
linux·运维·服务器·c语言·笔记·学习
i.ajls7 小时前
无监督学习,推荐系统以及强化学习笔记
笔记·学习·机器学习
dragoooon347 小时前
[优选算法专题二滑动窗口——串联所有单词的子串]
数据结构·c++·学习·算法·leetcode·学习方法
向阳花开_miemie7 小时前
Android音频学习(十七)——音频数据流转
学习·音视频
聆风吟º8 小时前
【Spring Boot 报错已解决】Web server failed to start. Port 8080 was already in use.
spring boot·笔记·技术干货