《云计算学习日记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