· Web基础应用
· NFS服务基础
· 触发挂载
环境的准备
- 关闭两台虚拟机的SELinux
setenforce 0 修改当前运行模式
getenforce 查看当前运行模式
# Permissive
vim /etc/selinux/config 永久修改
SELINUX=permissive
- 设置两台虚拟机防火墙
firewall-cmd --set-default-zone=trusted
Web服务器简介
· 基于B/S(Browser/Server)架构的网页服务
- 服务端提供网页
- 浏览器下载并显示网页
· 实现Web服务的软件:httpd (Apache) 、Nginx 、tomcat - HTML,超文本标记语言
- HTTP,超文本传输协议
httpd (Apache) 实现网站搭建
1. 安装httpd软件
yum -y install httpd
rpm -q httpd
2. 书写网页文件
# ls /var/www/html/ 默认情况下,http软件会从/var/www/html/下寻找网页文件
echo NSD1996 Web > /var/www/html/index.html
3.启动服务
> /etc/resolv.conf 删除DNS服务器
systemctl restart httpd 开启httpd服务
# 用systemctl去启动服务的优势
# 1.可以把服务设置成开机自启
# 2.会去监控服务,如果服务出现了一些问题,会有日志的报错,会方便我们去做报错分析
4.访问测试
curl 192.168.4.7
# NSD1996 Web
# 用浏览器访问服务,如果显示Testing 123...;那么说明我们的服务里面么没有任何执行文件
Web服务器配置
所有的服务都有三个步骤 : 装包 、 配置 、启服务
配置文件路径 : /etc/httpd/conf/httpd.conf
如果我们修改配置文件出现了错误!!!排错的思路 :
systemctl restart httpd
# Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
报错之后,我们按照提示输入:
journalctl -xe
如下所示 : 我们需要找到报错的行
vim /etc/httpd/conf/httpd.conf 修改web的配置文件信息
提供的默认配置
- listen : 监听地址:端口(80)
- ServerName : 本站点注册的DNS名称(空缺)
- DocumentRoot : 网页根目录(/var/www/html)
- DirectoryIndex : 起始页/首页文件名(index.html)
DocumentRoot 网页文件根目录(/var/www/html)
- 网页文件根目录 :存放网页文件的路径,也是httpd软件寻找网页文件的起始路径
- 实际上就是httpd在网页文件中寻找文件的起始点
vim /etc/httpd/conf/httpd.conf 修改web的配置文件信息
# set nu 加行号
# /DocumentRoot 寻找文本文件中DocumentRoot的行
我们修改网页根目录路径,将原来的/var/www/html
修改成/var/www/myweb
如下所示 :
mkdir /var/www/myweb 创建网页根目录
echo my web > /var/www/myweb/index.html 在网页根目录下创建index.html文件,书写网页内容
systemctl restart httpd 我们修改完配置文件后,一定要记得重启httpd服务
curl 192.168.4.7 重启httpd服务之后,做访问测试
# my web
主配置文件的两个访问控制
vim /etc/httpd/conf/httpd.conf 修改web的配置文件信息
如果我们将配置文件里面的网页根目录改成:DocumentRoot "/abc"
那么我们再做一次实验:
mkdir /abc
echo my abc > /abc/index.html 在网页根目录下创建index.html文件,书写网页内容
systemctl restart httpd 我们修改完配置文件后,一定要记得重启httpd服务
curl 192.168.4.7 重启httpd服务之后,做访问测试
# 无法访问
结论:
默认情况下只有/var/www/下是允许所有人访问的
- 针对存放网页文件路径,具有访问控制
- 默认继承父目录的访问规则
- 除非对该目录有单独访问控制规则配置
新增访问控制规则配置
mkdir /abc
echo my abc > /abc/index.html 在网页根目录下创建index.html文件,书写网页内容
systemctl restart httpd 我们修改完配置文件后,一定要记得重启httpd服务
curl 192.168.4.7 成功访问
# my abc
实际路径与网络路径
- 实际路径 : 网页文件在服务器存放的路径
- 网络路径 : 在浏览器中输入的路径
客户端输入 192.168.4.7===》默认以http的协议进行访问===》服务端 由httpd软件进行接收===》
DocumentRooot /abc===》/abc/index.html
网络路径 :firefox 192.168.4.7
实际路径 :/abc/
网络路径 :firefox 192.168.4.7/nsd
实际路径 :/abc/nsd
网络路径 :firefox http://192.168.4.7/abc/nsd/test
实际路径 :/abc/abc/nsd/test
命令演示
echo 123 > /abc/nsd01
curl 192.168.4.7/abc/nsd01
# <title>404 Not Found</title>
curl 192.168.4.7/nsd01 192.168.4.7访问的起始路径就是/abc
# 123
结论:网页文件根目录/abc,实际就是httpd软件开始寻找网页文件的起始路径
Listen 监听地址:端口(80)
端口 : 数字编号,标识作用。标识程序与协议
- http协议默认端口:80
vim /etc/httpd/conf/httpd.conf
如果给给程序增加端口,尽量不要设置1024以下的端口号。
1024以下的端口号一般都是知名端口号,设置1024以下的端口号会发生端口冲突。
新增端口号8000,如下所示:
systemctl restart httpd
curl 192.168.4.7 默认端口测试连接
# my abc
curl 192.168.4.7:8000 指定的8000端口号测试连接
# my abc
Web服务器配置 虚拟Web主机
· 虚拟Web主机
-
由同一台服务器提供多个不同的Web站点
· 区分方式
-
基于域名的虚拟主机
-
基于端口的虚拟主机
-
基于IP地址的虚拟主机
· 为每个虚拟站点添加配置
建立调用配置文件格式:
<VirtualHost IP地址:端口>
ServerName 此站点的DNS名称
DocumentRoot 此站点的网页根目录
</VirtualHost>
· 配置文件路径
- /etc/httpd/conf/httpd.conf 主配置文件
- /etc/httpd/conf.d/*.cond 调用配置文件
- 调用配置文件的作用主要是为了方便web以后的维护
- 我们一旦调用虚拟web主机的功能,那么主配置文件的DocumentRoot就会失效
通过域名来区分虚拟主机
建立调用配置文件
vim /etc/httpd/conf.d/nsd01.conf
配置文件内容:
<VirtualHost *:80> 启用虚拟Web主机的功能
ServerName www.baidu.com 设置网站名称
DocumentRoot /var/www/baidu 设置网页文件存放路径
</VirtualHost> 配置结束
<VirtualHost *:80>
ServerName www.qq.com
DocumentRoot /var/www/qq
</VirtualHost>
mkdir /var/www/baidu
mkdir /var/www/qq
echo woshi baidu > /var/www/baidu/index.html
echo woshi QQ > /var/www/qq/index.html
systemctl restart httpd
通过搜索网站名称测试结果是失败的
curl www.baidu.com
# curl: (6) Could not resolve host: www.baidu.com; Unknown error
我们没有配置DNS服务器,是没有办法配置域名解析的,所以如果我们搜网站名称去搜索网站内容,测试的结果是会直接报错的。
我们可以通过修改/etc/hosts
直接为本机提供域名解析,需要注意/etc/hosts
只可以为本机提供域名解析。
vim /etc/hosts 我们只需要在/etc/hosts的文件结尾里面新增内容就可以了
192.168.4.7 www.qq.com www.baidu.com
网站名称搜索测试
curl www.baidu.com
# woshi baidu
curl www.qq.com
# woshi QQ
如果我们想在虚拟机B上进行测试的话,那么我们需要在/etc/hosts的文件结尾中,写入虚拟机A的Web服务器的地址。
vim /etc/hosts
192.168.4.7 www.qq.com www.baidu.com
curl www.baidu.com
# woshi baidu
curl www.qq.com
# woshi QQ
通过端口来区分虚拟主机
一旦使用虚拟Web主机功能,那么所有的Web页面都必须用虚拟Web主机功能进行呈现
vim /etc/httpd/conf.d/nsd01.conf
配置文件内容:
Listen 8080
<VirtualHost *:8080> 启用虚拟Web主机的功能
ServerName www.qq.com 设置网站名称
DocumentRoot /var/www/baidu 设置网页文件存放路径
</VirtualHost> 配置结束
<VirtualHost *:80>
ServerName www.qq.com
DocumentRoot /var/www/qq
</VirtualHost>
systemctl restart httpd
域名解析配置文件
vim /etc/hosts
192.168.4.7 www.qq.com www.baidu.com
网站名称搜索测试
curl www.qq.com
# woshi QQ
curl www.qq.com:8080
# woshi baidu
www.baidu.com:8080
# woshi baidu
我们在用端口号来区分虚拟机的时候,并没有在调用配置文件里面写入www.baidu.com的网站名称。
但是我们发现写入端口号www.baidu.com:8080,输出的结果www.qq.com:8080的结果是一样的,
由此可见端口号的的优先级是高于IP的。
构建NFS共享服务
· Network File System,网络文件系统
-
用途:为客户机提供共享使用的文件夹
-
协议:NFS(TCP/UDP 2049)、RPC(TCP/UDP 111)
· 服务端与客户端所需软件包:nfs-utils
· 系统服务:nfs-server
虚拟机A搭建服务
mkdir /public 创建共享数据的目录
touch /public/a.txt
1. 安装软件包
yum -y install nfs-utils
2. 修改配置文件
vim /etc/exports
配置文件内容:
/public *(ro)
共享目录 客户端的地址(权限)
3. 启动服务
systemctl restart rpcbind 动态端口(nfs的依赖服务)
systemctl restart nfs-server
df -h
# /dev/mapper/centos-root 18G 2.3G 16G 13% /
虚拟机B设置挂载点
mkdir /mynfs
mount 192.168.4.7:/public /mynfs 将虚拟机A的共享目录挂载到虚拟机B的/munfs中
df -h | tail-1 挂载的设备信息其实就是虚拟机A的根分区文件系统的信息
# 192.168.4.7:/public 18G 2.3G 16G 13% /mynfs
虚拟机A中创建文件和目录
mkdir /public/abc
touch /public/a.txt
用虚拟机B来查看虚拟机A中共享数据的目录
ls /mynfs
# abc a.txt
- 设置开机自动挂载
_netdev: 声明网络设备,开机启动时,首先将网络参数配置之后再挂载本设备
在虚拟机B上设置虚拟机A共享数据目录的开机自动挂载
vim /etc/fstab
192.168.4.7:/public /mynfs nfs defaults,_netdev 0 0
umount /mynfs
mount -a
df -h | tail -1
# 192.168.4.7:/public 18G 2.3G 16G 13% /mynfs