Web服务架构、构建Apache服务器、修改网页文件根目录、端口介绍 NFS服务介绍、构建NFS服务、触发挂载介绍、触发挂载与NFS服务综合使用

1 往事太多了:不负韶华,以梦为马,历尽千帆,归来仍是少年

2 环境准备

所有虚拟机设置SELinux运行模式

 
  1. [root@server ~]# getenforce
  2. Enforcing
  3. [root@server ~]# setenforce 0 #当前设置
  4. [root@server ~]# getenforce
  5. Permissive
  6. [root@server ~]# vim /etc/selinux/config
  7. SELINUX=permissive

所有虚拟机设置防火墙(停止防火墙服务)

 
  1. [root@server ~]# yum -y remove firewalld
  2. [root@server ~]# rpm -q firewalld

3 Web服务器简介

•基于 B/S (Browser/Server)架构的网页服务

–服务端提供网页

–浏览器下载并显示网页

•Hyper Text Markup Language,超文本标记语言

•Hyper Text Transfer Protocol,超文本传输协议

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

实现Web功能软件:httpd、Nginx、Tomcat

httpd由软件基金会Apache

虚拟机A:构建基本Web服务

 
  1. [root@server ~]# yum -y install httpd
  2. [root@server ~]# rpm -q httpd
  3. [root@server ~]# echo NSD Web Server > /var/www/html/index.html
  4. [root@server ~]# systemctl restart httpd #重启服务
  5. [root@server ~]# curl 192.168.88.240 #测试访问
  6. NSD Web Server

4 常见重点配置

Listen:监听地址:端口(80)

ServerName:本站点注册的DNS名称(空缺)

DocumentRoot:网页根目录(/var/www/html)

DirectoryIndex:起始页/首页文件名(index.html)

主配置文件:/etc/httpd/conf/httpd.conf

5 常见错误

 
  1. [root@server ~]# systemctl restart httpd
  2. Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
  3. [root@server ~]# journalctl -xe

6 DocumentRoot:网页文件根目录(/var/www/html)

虚拟机A

 
  1. [root@server ~]# mkdir /var/www/myweb
  2. [root@server ~]# echo wo shi myweb > /var/www/myweb/index.html
  3. [root@server ~]# vim /etc/httpd/conf/httpd.conf
  4. …….此处省略一万字
  5. DocumentRoot "/var/www/myweb"
  6. …….此处省略一万字
  7. [root@server ~]# systemctl restart httpd #重启服务
  8. [root@server ~]# curl 192.168.88.240
  9. wo shi myweb

7 针对存放网页文件的目录,访问控制规则会自动继承

假设访问规则如此设置:

/var/www #允许所有客户端进行访问

/var/www/abc/nsd/cbd #拒绝客户端

造成的结果:

/var/www/abc #允许所有客户端进行访问

/var/www/abc/nsd #允许所有客户端进行访问

/var/www/abc/nsd/cbd #拒绝客户端

/var/www/abc/nsd/cbd/xixi #拒绝客户端

/var/www/abc/nsd/cbd/xixi/haha #拒绝客户端

基于网页文件目录,进行访问控制

当子目录没有规则,默认继承上一级目录规则

针对此目录有单独配置,则不继承上一级目录规则

<Directory />

Require all denied #拒绝所有人访问

</Directory>

<Directory "/var/www">

Require all granted #允许所有人访问

</Directory>

总结:默认情况下网页文件,必须在/var/www目录下,才能允许访问

8 访问出现测试页面:

  1. 没有网页文件
  2. 网页文件名称不是index.html
  3. httpd的访问控制规则拒绝
  4. SELinux的没有关闭

虚拟机A:

 
  1. [root@server ~]# mkdir /webroot
  2. [root@server ~]# echo wo shi webroot > /webroot/index.html
  3. [root@server ~]# vim /etc/httpd/conf/httpd.conf
  4. …….此处省略一万字
  5. DocumentRoot "/webroot" #修改原有配置
  6. <Directory "/webroot"> #针对于/webroot路径
  7. Require all granted #允许所有人访问
  8. </Directory>
  9. …….此处省略一万字
  10. [root@server ~]# systemctl restart httpd #重启服务
  11. [root@server ~]# curl 192.168.88.240
  12. wo shi webroot

9 网络路径与实际路径

客户端curl 192.168.88.240---》http协议---》服务端收到http协议的请求---》内存寻找进程---》httpd进程(监听状态)---》配置文件 DocumentRoot------》/webroot-----》index.html

客户端:浏览器 http://192.168.88.240 #网络路径

服务端: /webroot/index.html #实际路径

http://192.168.88.240 = /webroot

DocumentRoot ---》/webroot

网络路径:curl 192.168.88.240/webroot/abc/

实际路径: /webroot/webroot/abc/index.html

虚拟机A

 
  1. [root@server ~]# mkdir /webroot/abc
  2. [root@server ~]# echo wo shi abc > /webroot/abc/index.html
  3. [root@server ~]# curl 192.168.88.240/abc/

10 调用配置文件的使用

•配置文件路径

–/etc/httpd/conf/httpd.conf #主配置文件

–/etc/httpd/conf.d/*.conf #调用配置文件

虚拟机A

 
  1. [root@server ~]# vim /etc/httpd/conf.d/haha.conf
  2. DocumentRoot /var/www/cbd
  3. [root@server ~]# mkdir /var/www/cbd
  4. [root@server ~]# echo wo shi CBD > /var/www/cbd/index.html
  5. [root@server ~]# systemctl restart httpd
  6. [root@server ~]# curl 192.168.88.240

11 Listen:监听IP地址: 监听端口(80)

端口:数字编号起到标识作用,标识协议或者进程

http协议默认端口:80

建议自定义端口时大于1024,端口的极限65535

虚拟机A

 
  1. [root@server ~]# vim /etc/httpd/conf.d/haha.conf
  2. DocumentRoot /var/www/cbd
  3. Listen 8000 #新增配置监听8000端口
  4. [root@server ~]# systemctl restart httpd
  5. [root@server ~]# curl 192.168.88.240:8000
  6. [root@server ~]# curl 192.168.88.240
  7. 格式:
  8. [root@server ~]# curl 192.168.88.240:8000/xixi/

12 虚拟Web主机

•虚拟Web主机

–由同一台服务器,提供多个不同的Web站点

•区分方式(构建方式)

–基于域名的虚拟主机

–基于端口的虚拟主机

–基于IP地址的虚拟主机

•为每个虚拟站点添加配置

<VirtualHost IP地址:端口>

ServerName 此站点域名,比如www.qq.com

DocumentRoot 此站点的网页根目录

</VirtualHost>

虚拟机A:

[root@server ~]# vim /etc/httpd/conf.d/xixi.conf

<VirtualHost *:80> #在所有IP地址监听80

ServerName www.qq.com #网站的域名

DocumentRoot /var/www/qq #网页文件路径

</VirtualHost>

<VirtualHost *:80>

ServerName www.lol.com

DocumentRoot /var/www/lol

</VirtualHost>

[root@server ~]# mkdir /var/www/qq /var/www/lol

[root@server ~]# echo wo shi QQ > /var/www/qq/index.html

[root@server ~]# echo wo shi LOL > /var/www/lol/index.html

[root@server ~]# systemctl restart httpd

采用/etc/hosts文件直接解析域名,只为本机解析

 
 
  1. [root@server ~]# vim /etc/hosts
  2. …….此处省略一万字
  3. 192.168.88.240 www.qq.com www.lol.com
  4. [root@server ~]# curl www.qq.com
  5. [root@server ~]# curl www.lol.com

一旦使用虚拟Web主机功能,所有的网站都必须使用虚拟Web方式进行呈现

虚拟机A

 
  1. [root@server ~]# vim /etc/httpd/conf.d/haha.conf
  2. …….此处省略一万字
  3. <VirtualHost *:80>
  4. ServerName www.xixi.com
  5. DocumentRoot /webroot
  6. </VirtualHost>
  7. [root@server ~]# systemctl restart httpd
  8. [root@server ~]# vim /etc/hosts
  9. …….此处省略一万字
  10. 192.168.88.240 www.qq.com www.lol.com www.xixi.com
  11. [root@server ~]# curl http://www.xixi.com

13 基于端口的虚拟Web主机(端口优先级最高匹配)

 
  1. [root@server ~]# vim /etc/httpd/conf.d/xixi.conf
  2. <VirtualHost *:80>
  3. ServerName www.qq.com
  4. DocumentRoot /var/www/qq
  5. </VirtualHost>
  6. Listen 8080
  7. <VirtualHost *:8080>
  8. ServerName www.qq.com
  9. DocumentRoot /var/www/lol
  10. </VirtualHost>
  11. [root@server ~]# systemctl restart httpd
  12. [root@server ~]# curl www.qq.com:8080
  13. [root@server ~]# curl www.qq.com

14 NFS服务基础

•Network File System,网络文件系统

–用途:为客户机提供共享使用的文件夹

–协议:NFS( 2049)、RPC( 111)

•所需软件包:nfs-utils

•系统服务:nfs-server

虚拟机A:服务端

 
  1. [root@server ~]# rpm -q nfs-utils
  2. nfs-utils-1.3.0-0.54.el7.x86_64
  3. [root@server ~]# mkdir /abc #创建共享目录
  4. [root@server ~]# echo haha > /abc/h.txt
  5. [root@server ~]# echo xixi > /abc/x.txt
  6. [root@server ~]# ls /abc/
  7. [root@server ~]# vim /etc/exports
  8. 文件夹路径 客户机地址(权限)
  9. /abc *(ro) #允许所有客户端进行只读访问
  10. [root@server ~]# systemctl restart nfs-server

虚拟机B:客户端

 
  1. [root@pc2 ~]# rpm -q nfs-utils
  2. nfs-utils-1.3.0-0.54.el7.x86_64
  3. [root@pc2 ~]# showmount -e 192.168.88.240 #查看对方nfs共享
  4. Export list for 192.168.88.240:
  5. /abc *
  6. [root@pc2 ~]# mkdir /mnt/mynfs
  7. [root@pc2 ~]# mount 192.168.88.240:/abc /mnt/mynfs
  8. [root@pc2 ~]# ls /mnt/mynfs
  9. [root@pc2 ~]# df -h /mnt/mynfs #查看正在挂载的设备信息

15 实现NFS共享的开机自动挂载

虚拟机B:

_netdev:声明网络设备,系统在具备网络参数后,再进行挂载本设备

 
  1. [root@pc2 ~]# vim /etc/fstab
  2. ……此处省略一万字
  3. 192.168.88.240:/abc /mnt/mynfs nfs _netdev 0 0
  4. [root@pc2 ~]# umount /mnt/mynfs
  5. [root@pc2 ~]# ls /mnt/mynfs
  6. [root@pc2 ~]# mount -a
  7. [root@pc2 ~]# ls /mnt/mynfs

16 触发挂载(了解内容)

•由 autofs 服务提供的“按需访问”机制

–只要访问挂载点就会触发响应,自动挂载指定设备

–闲置一段时间后,会自动卸载

 
  1. 虚拟机B:
  2. [root@pc2 ~]# yum -y install autofs
  3. [root@pc2 ~]# systemctl restart autofs
  4. [root@pc2 ~]# ls /misc
  5. [root@pc2 ~]# ls /misc/cd

触发挂载实现

•主配置文件 /etc/auto.master

–监控点目录 挂载配置文件的路径

•挂载配置文件,比如 /etc/auto.misc

–触发点子目录 -挂载参数 :设备名

案例:虚拟机B访问/myauto/nsd,光驱设备挂载/ myauto/nsd

 
  1. [root@pc2 ~]# yum -y install autofs
  2. [root@pc2 ~]# vim /etc/auto.master
  3. ……此处省略一万字
  4. /myauto /opt/xixi.txt
  5. ……此处省略一万字
  6. [root@pc2 ~]# vim /opt/xixi.txt
  7. nsd -fstype=iso9660 :/dev/cdrom
  8. [root@pc2 ~]# systemctl restart autofs
  9. [root@pc2 ~]# ls /myauto/
  10. [root@pc2 ~]# ls /myauto/nsd

17 触发挂载进阶autofs与NFS

虚拟机B访问/myauto/test,虚拟机A 的nfs共享/abc挂载到/myauto/test

 
  1. [root@pc2 ~]# yum -y install autofs
  2. [root@pc2 ~]# vim /etc/auto.master
  3. ……此处省略一万字
  4. /myauto /opt/xixi.txt
  5. ……此处省略一万字
  6. [root@pc2 ~]# vim /opt/xixi.txt
  7. nsd -fstype=iso9660 :/dev/cdrom
  8. test -fstype=nfs 192.168.88.240:/abc
  9. [root@pc2 ~]# systemctl restart autofs
  10. [root@pc2 ~]# ls /myauto/test

18 远程管理默认使用端口22

ssh协议默认端口为22

虚拟机B:修改sshd服务监听的端口

 
  1. [root@pc2 ~]# vim /etc/ssh/sshd_config
  2. Port 2244 #开头的#号去掉
  3. [root@pc2 ~]# systemctl restart sshd #重启服务

虚拟机A:指定端口进行远程管理

 
  1. [root@server ~]# ssh -p 2244 root@192.168.88.2

19 课后基础练习:

案例1:为虚拟机A 配置以下虚拟Web主机

- 实现三个网站的部署

- 实现客户端访问server0.example.com网页内容为 大圣归来

- 实现客户端访问www0.example.com网页内容为 大圣又归来

- 实现客户端访问webapp0.example.com网页内容为 大圣累了

案例2:为虚拟机A 使用自定Web根目录

调整 Web 站点 http://www0.example.com 的网页目录,要求如下:

1)新建目录 /webroot,作为此站点新的网页目录(提示:修改Web服务的访问控制)

2)确保站点 http://www0.example.com 仍然可访问

案例3:为虚拟机A 部署站点

为站点 webapp0.example.com 进行配置,要求如下:

1)此虚拟主机侦听在端口8909

2)从浏览器访问 http://webapp0.example.com:8909

案例4:普通NFS共享的实现

1.在虚拟机A上配置NFS服务,只读的方式共享目录 /public

2.在虚拟机B上访问NFS共享目录

a)将虚拟机A 的 /public 挂到本地 /mnt/nfsmount

b)这些文件系统在系统启动时自动挂载

案例5: autofs触发挂载

在虚拟机B上访问NFS共享目录,将 虚拟机A 的 /public完成触发挂载到本地 /mnt/nfsauto

参考答案

案例1:为虚拟机A 配置以下虚拟Web主机

- 实现三个网站的部署

- 实现客户端访问server0.example.com网页内容为 大圣归来

- 实现客户端访问www0.example.com网页内容为 大圣又归来

- 实现客户端访问webapp0.example.com网页内容为 大圣累了

 
  1. 虚拟机A:
  2. [root@A ~]# systemctl stop firewalld
  3. [root@A ~]# setenforce 0
  4. [root@A ~]# yum -y install httpd
  5. [root@A ~]# mkdir /var/www/nsd01
  6. [root@A ~]# mkdir /var/www/nsd02
  7. [root@A ~]# mkdir /var/www/nsd03
  8. [root@A ~]# echo '大圣归来' > /var/www/nsd01/index.html
  9. [root@A ~]# echo '大圣又归来' > /var/www/nsd02/index.html
  10. [root@A ~]# echo '大圣累了' > /var/www/nsd03/index.html
  11. [root@A ~]# vim /etc/httpd/conf.d/vhost.conf
  12. <VirtualHost *:80>
  13. ServerName server0.example.com
  14. DocumentRoot /var/www/nsd01
  15. </VirtualHost>
  16. <VirtualHost *:80>
  17. ServerName www0.example.com
  18. DocumentRoot /var/www/nsd02
  19. </VirtualHost>
  20. <VirtualHost *:80>
  21. ServerName webapp0.example.com
  22. DocumentRoot /var/www/nsd03
  23. </VirtualHost>
  24. [root@A ~]# systemctl restart httpd
  25. 虚拟机B:测试
  26. [root@B ~]# vim /etc/hosts
  27. 192.168.88.240 server0.example.com www0.example.com webapp0.example.com
  28. [root@B ~]# curl server0.example.com
  29. [root@B ~]# curl www0.example.com
  30. [root@B ~]# curl webapp0.example.com

案例2:为虚拟机A 使用自定Web根目录

调整 Web 站点 http://www0.example.com 的网页目录,要求如下:

1)新建目录 /webroot,作为此站点新的网页目录

2)确保站点 http://www0.example.com 仍然可访问

 
  1. 虚拟机A:
  2. [root@A ~]# vim /etc/httpd/conf.d/vhost.conf
  3. <VirtualHost *:80>
  4. ServerName server0.example.com
  5. DocumentRoot /var/www/nsd01
  6. </VirtualHost>
  7. <VirtualHost *:80>
  8. ServerName www0.example.com
  9. DocumentRoot /webroot
  10. </VirtualHost>
  11. <VirtualHost *:80>
  12. ServerName webapp0.example.com
  13. DocumentRoot /var/www/nsd03
  14. </VirtualHost>
  15. [root@A ~]# mkdir /webroot
  16. [root@A ~]# echo 'wo shi webroot' > /webroot/index.html
  17. [root@A ~]# vim /etc/httpd/conf.d/myacl.conf
  18. <Directory /webroot>
  19. Require all granted
  20. </Directory>
  21. [root@A ~]# systemctl restart httpd
  22. 虚拟机B:
  23. [root@B ~]# curl www0.example.com
  24. wo shi webroot
  25. [root@B ~]#

案例3:为虚拟机A 部署站点

为站点 webapp0.example.com 进行配置,要求如下:

1)此虚拟主机侦听在端口8909

2)从浏览器访问 http://webapp0.example.com:8909

 
  1. 虚拟机A:
  2. [root@A ~]# vim /etc/httpd/conf.d/vhost.conf
  3. <VirtualHost *:80>
  4. ServerName server0.example.com
  5. DocumentRoot /var/www/nsd01
  6. </VirtualHost>
  7. <VirtualHost *:80>
  8. ServerName www0.example.com
  9. DocumentRoot /webroot
  10. </VirtualHost>
  11. Listen 8909
  12. <VirtualHost *:8909>
  13. ServerName webapp0.example.com
  14. DocumentRoot /var/www/nsd03
  15. </VirtualHost>
  16. [root@A ~]# systemctl restart httpd
  17. 虚拟机B:
  18. [root@B ~]# curl webapp0.example.com:8909
  19. 大圣累了

案例4:普通NFS共享的实现

1.在虚拟机A上配置NFS服务,只读的方式共享目录 /public

2.在虚拟机B上访问NFS共享目录

a)将虚拟机A 的 /public 挂到本地 /mnt/nfsmount

b)这些文件系统在系统启动时自动挂载

 
  1. 虚拟机A:
  2. [root@A ~]# yum -y install nfs-utils
  3. [root@A ~]# mkdir /public
  4. [root@A ~]# touch /public/1.txt
  5. [root@A ~]# ls /public/
  6. [root@A ~]# vim /etc/exports
  7. /public *(ro)
  8. [root@A ~]# systemctl restart nfs-server
  9. 虚拟机B:
  10. [root@B ~]# mkdir /mnt/nfsmount
  11. [root@B ~]# vim /etc/fstab
  12. 192.168.88.240:/public /mnt/nfsmount nfs _netdev 0 0
  13. [root@B ~]# mount -a
  14. [root@B ~]# df -h /mnt/nfsmount
  15. 192.168.88.240:/public 17G 3.5G 14G 21% /mnt/nfsmount
  16. [root@B ~]#

案例5: autofs触发挂载

在虚拟机B上访问NFS共享目录,将 虚拟机A 的 /public完成触发挂载到本地 /mnt/nfsauto

 
  1. [root@pc2 ~]# yum -y install autofs
  2. [root@pc2 ~]# vim /etc/auto.master
  3. ……此处省略一万字
  4. /mnt /etc/nsd.conf
  5. ……此处省略一万字
  6. [root@pc2 ~]# vim /etc/nsd.conf
  7. nfsauto -fstype=nfs 192.168.88.240:/public
  8. [root@pc2 ~]# systemctl restart autofs
  9. [root@pc2 ~]# ls /mnt/nfsauto
  • 28
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值