Web服务架构、构建Apache服务器、修改网页文件根目录、端口介绍

NSD SERVICES DAY01

  1. 往事太多了:不负韶华,以梦为马,历尽千帆,归来仍是少年
  2. 环境准备
  3. Web服务器简介
  4. 常见重点配置
  5. 常见错误
  6. DocumentRoot:网页文件根目录(/var/www/html)
  7. 针对存放网页文件的目录,访问控制规则会自动继承
  8. 访问出现测试页面:
  9. 网络路径与实际路径
  10. 调用配置文件的使用
  11. Listen:监听IP地址: 监听端口(80)
  12. 虚拟Web主机
  13. 基于端口的虚拟Web主机(端口优先级最高匹配)
  14. NFS服务基础
  15. 实现NFS共享的开机自动挂载
  16. 触发挂载(了解内容)
  17. 触发挂载进阶autofs与NFS
  18. 远程管理默认使用端口22
  19. 课后基础练习:

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

2 环境准备

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

[root@server ~]# getenforce

Enforcing

[root@server ~]# setenforce 0 #当前设置

[root@server ~]# getenforce

Permissive

[root@server ~]# vim /etc/selinux/config

SELINUX=permissive

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

[root@server ~]# yum -y remove firewalld

[root@server ~]# rpm -q firewalld

3 Web服务器简介

•基于 B/S (Browser/Server)架构的网页服务(必须具备浏览器才可以访问页面)

–服务端提供网页

–浏览器下载并显示网页

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

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

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

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

httpd由软件基金会Apache

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

[root@server ~]# yum -y install httpd   

[root@server ~]# rpm -q httpd

[root@server ~]# echo NSD Web Server > /var/www/html/index.html

[root@server ~]# systemctl restart httpd #重启服务

[root@server ~]# curl 192.168.88.240 #测试访问

NSD Web Server

5db8f52363b44bddbe3275be660a8ed3.jpg

 测试页面会看到大多代码  可能是代码写错了

4 常见重点配置

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

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

DocumentRoot:网页根目录:指定存放网页文件的路径  不指定默认:(/var/www/html)

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

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

2837249f7584494cb71eaf916e3eb884.jpg

Apache配置文件:小心修改!

c8065937de43418b9a4447a85b8800da.jpg

用命令journalctl-xe查看报错日志,通过日志定位到报错具体原因c9b47e2cb53a4394bb35187a9eb0d3be.jpg

 重启服务报错后立马敲命令查看报错日志:

57e2b3e77005468b9498342f55437982.jpg

7ce8a5a2d3af45e6bae8055656d7f19b.jpg

5 常见错误

[root@server ~]# 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.

[root@server ~]# journalctl -xe         

6 DocumentRoot:网页文件根目录(/var/www/html)(最关键的配置字段)

命令模式:/DocumentRoot寻找  按n跳转  找到1

63de37bb8d664c1897133ca948711c8d.jpg

 取消黄色搜索背景  查找一个不存在的字段

虚拟机A

[root@server ~]# mkdir /var/www/myweb

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

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

…….此处省略一万字

DocumentRoot "/var/www/myweb"(注意双引号)

…….此处省略一万字

[root@server ~]# systemctl restart httpd #重启服务

[root@server ~]# curl 192.168.88.240

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">  (针对var/www实现控制规则)

Require all granted #允许所有人访问

</Directory>

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

92850a2af249483ebf63c9d6609cd93a.jpg

第一行新增  剩下的是修改 d908f56131a74fcab7587e84138199f3.jpg

8 访问出现测试页面:

没有网页文件

网页文件名称不是index.html

httpd的访问控制规则拒绝

SELinux的没有关闭

虚拟机A:

[root@server ~]# mkdir /webroot

[root@server ~]# echo wo shi webroot > /webroot/index.html

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

…….此处省略一万字

DocumentRoot "/webroot" #修改原有配置(大写C删除  带引号不带引号都可以)

<Directory "/webroot"> #针对于/webroot路径

    Require all granted #允许所有人访问

</Directory>

…….此处省略一万字

[root@server ~]# systemctl restart httpd #重启服务

[root@server ~]# curl 192.168.88.240       

 wo shi webroot

33af6f5692b64d0ca3f794767813fece.jpg

f28570ec0a3d4ceba8f5cfbac6bacf87.jpg 9d30a50c390141c980b4e2ed28692af5.jpg

 写多个条件时  只生效一个(最后一个)

e0a0e24d19f1449199e63d590406b8fe.jpg

关于index.html  (谁写前面谁生效)

ad6c1a67afdc4ad08184aa59c97fbc6c.jpg

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

3b88d8d84daf41189daf2a19d1452727.jpg

 命令行加斜杠  网页不需要加

虚拟机A

[root@server ~]# mkdir /webroot/abc

[root@server ~]# echo wo shi abc > /webroot/abc/index.html

[root@server ~]# curl 192.168.88.240/abc/

84cefe9fc6d6487eb5a8037ceb9f9dc7.jpg

1606f1bbdf584a9ab8c274fecfb82aee.jpg

10 调用配置文件的使用

•配置文件路径

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

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

虚拟机A

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

DocumentRoot /var/www/cbd

[root@server ~]# mkdir /var/www/cbd

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

[root@server ~]# systemctl restart httpd

[root@server ~]# curl 192.168.88.240

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

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

http协议默认端口:80

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

虚拟机A

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

DocumentRoot /var/www/cbd

Listen 8000 #新增配置监听8000端口

[root@server ~]# systemctl restart httpd

[root@server ~]# curl 192.168.88.240:8000

[root@server ~]# curl 192.168.88.240

格式:

[root@server ~]# curl 192.168.88.240:8000/xixi/

e90f316990e54128905c4ad0c19fd905.jpg

6ca10b6287f74560847a9f3dcdba969d.jpg

12 虚拟Web主机

•虚拟Web主机

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

•区分方式(构建方式)

基于域名的虚拟主机

–基于端口的虚拟主机

–基于IP地址的虚拟主机(增加了复杂度)

•为每个虚拟站点添加配置(背诵  很重要!)

(一个网站四行)

<VirtualHost IP地址:端口>

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

DocumentRoot 此站点的网页根目录

</VirtualHost>

55bdf27955904492b938b744cddefcc9.jpg

虚拟机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

990c35dda5c247e0b17741065989a766.jpg

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

[root@server ~]# vim /etc/hosts  

…….此处省略一万字

192.168.88.240 www.qq.com www.lol.com

[root@server ~]# curl www.qq.com

[root@server ~]# curl www.lol.com

 8cb295a85226473a9664ca0e08fefea8.jpg

 de7e5624ddc44a3ca67cfc30d69317b6.jpg

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

虚拟机A

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

…….此处省略一万字

<VirtualHost *:80>

   ServerName www.xixi.com

   DocumentRoot /webroot

</VirtualHost>

[root@server ~]# systemctl restart httpd

[root@server ~]# vim /etc/hosts

…….此处省略一万字

192.168.88.240 www.qq.com www.lol.com www.xixi.com

[root@server ~]# curl http://www.xixi.com

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

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

<VirtualHost *:80>

   ServerName www.qq.com

   DocumentRoot /var/www/qq

</VirtualHost>

Listen 8080                   

<VirtualHost   *:8080>

   ServerName   www.qq.com

   DocumentRoot /var/www/lol

</VirtualHost>

[root@server ~]# systemctl restart httpd

[root@server ~]# curl www.qq.com:8080

[root@server ~]# curl www.qq.com

14 NFS服务基础

•Network File System,网络文件系统

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

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

•所需软件包:nfs-utils

•系统服务:nfs-server

虚拟机A:服务端

检查是否装包:

[root@server ~]# rpm -q nfs-utils

nfs-utils-1.3.0-0.54.el7.x86_64

[root@server ~]# mkdir /abc #创建共享目录

[root@server ~]# echo haha > /abc/h.txt

[root@server ~]# echo xixi > /abc/x.txt

[root@server ~]# ls /abc/

[root@server ~]# vim /etc/exports

473da9c6cd6f4b4982b9055ec568ccf1.jpg

 配置文件:

2ea82e22fe5848b095597662d85ef183.jpg

写法1:共享给这两个ip地址: 08eb802e6dfe4849a58bf01b02b4818c.jpg

文件夹路径 客户机地址(权限)  

/abc *(ro) #允许所有客户端进行只读访问

[root@server ~]# systemctl restart nfs-server(重启服务)

a6500453357e411bb3fc459fba7e0207.jpg

虚拟机B:客户端

[root@pc2 ~]# rpm -q nfs-utils

nfs-utils-1.3.0-0.54.el7.x86_64

[root@pc2 ~]# showmount -e 192.168.88.240 #查看对方nfs共享#查看服务端共享

Export list for 192.168.88.240:

/abc *

[root@pc2 ~]# mkdir /mnt/mynfs

[root@pc2 ~]# mount 192.168.88.240:/abc /mnt/mynfs

[root@pc2 ~]# ls /mnt/mynfs

[root@pc2 ~]# df -h /mnt/mynfs #查看正在挂载的设备信息

6f4565c1acfa485199ad38518afea706.jpg 7578c8a6593a4281ae1103683118c799.jpg

 17GB:根目录挂载内存

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

虚拟机B:

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

[root@pc2 ~]# vim      /etc/fstab   

……此处省略一万字

192.168.88.240:/abc   /mnt/mynfs      nfs _netdev 0 0  #声明网络设备

[root@pc2 ~]# umount /mnt/mynfs

[root@pc2 ~]# ls /mnt/mynfs

[root@pc2 ~]# mount -a

[root@pc2 ~]# ls /mnt/mynfs

16 触发挂载(了解内容)

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

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

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

虚拟机B:

[root@pc2 ~]# yum -y install autofs

[root@pc2 ~]# systemctl restart autofs

[root@pc2 ~]# ls /misc  #监控目录

[root@pc2 ~]# ls /misc/cd  

0d4397e6f4234cd6bfc9dbec365c6623.jpg

触发挂载实现

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

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

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

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

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

[root@pc2 ~]# yum -y install autofs   

[root@pc2 ~]# vim /etc/auto.master

……此处省略一万字 

/myauto /opt/xixi.txt      

……此处省略一万字

[root@pc2 ~]# vim /opt/xixi.txt

nsd -fstype=iso9660 :/dev/cdrom

[root@pc2 ~]# systemctl restart autofs

[root@pc2 ~]# ls /myauto/

[root@pc2 ~]# ls /myauto/nsd

8b213a28bfa1484dbea1533c458a155f.jpg

 不可以写在root下

17 触发挂载进阶autofs与NFS

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

[root@pc2 ~]# yum -y install autofs

[root@pc2 ~]# vim /etc/auto.master

……此处省略一万字 

/myauto /opt/xixi.txt    

……此处省略一万字                          

[root@pc2 ~]# vim /opt/xixi.txt

nsd -fstype=iso9660 :/dev/cdrom

test -fstype=nfs 192.168.88.240:/abc

[root@pc2 ~]# systemctl restart autofs

[root@pc2 ~]# ls /myauto/test

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

ssh协议默认端口为22

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

[root@pc2 ~]# vim /etc/ssh/sshd_config

Port 2244 #开头的#号去掉

[root@pc2 ~]# systemctl restart sshd #重启服务

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

[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网页内容为 大圣累了

虚拟机A:

[root@A ~]# systemctl stop firewalld

[root@A ~]# setenforce 0

[root@A ~]# yum -y install httpd

[root@A ~]# mkdir /var/www/nsd01

[root@A ~]# mkdir /var/www/nsd02

[root@A ~]# mkdir /var/www/nsd03

[root@A ~]# echo '大圣归来' > /var/www/nsd01/index.html

[root@A ~]# echo '大圣又归来' > /var/www/nsd02/index.html

[root@A ~]# echo '大圣累了' > /var/www/nsd03/index.html

[root@A ~]# vim /etc/httpd/conf.d/vhost.conf

<VirtualHost *:80>

  ServerName server0.example.com

  DocumentRoot /var/www/nsd01

</VirtualHost>

<VirtualHost *:80>

  ServerName www0.example.com

  DocumentRoot /var/www/nsd02

</VirtualHost>

<VirtualHost *:80>

  ServerName webapp0.example.com

  DocumentRoot /var/www/nsd03

</VirtualHost>

[root@A ~]# systemctl restart httpd

虚拟机B:测试

[root@B ~]# vim /etc/hosts

192.168.88.240 server0.example.com www0.example.com webapp0.example.com

[root@B ~]# curl server0.example.com

[root@B ~]# curl www0.example.com

[root@B ~]# curl webapp0.example.com

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

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

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

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

虚拟机A:

[root@A ~]# vim /etc/httpd/conf.d/vhost.conf 

<VirtualHost *:80>

  ServerName server0.example.com

  DocumentRoot /var/www/nsd01

</VirtualHost>

<VirtualHost *:80>

  ServerName www0.example.com

  DocumentRoot /webroot

</VirtualHost>

<VirtualHost *:80>

  ServerName webapp0.example.com

  DocumentRoot /var/www/nsd03

</VirtualHost>

[root@A ~]# mkdir /webroot

[root@A ~]# echo 'wo shi webroot' > /webroot/index.html

[root@A ~]# vim /etc/httpd/conf.d/myacl.conf           

<Directory /webroot>

    Require all granted

</Directory>

[root@A ~]# systemctl restart httpd

虚拟机B:

[root@B ~]# curl www0.example.com

wo shi webroot

[root@B ~]# 

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

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

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

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

虚拟机A:

[root@A ~]# vim /etc/httpd/conf.d/vhost.conf

<VirtualHost *:80>

  ServerName server0.example.com

  DocumentRoot /var/www/nsd01

</VirtualHost>

<VirtualHost *:80>

  ServerName www0.example.com

  DocumentRoot /webroot

</VirtualHost>

Listen 8909

<VirtualHost *:8909>

  ServerName webapp0.example.com

  DocumentRoot /var/www/nsd03

</VirtualHost>

[root@A ~]# systemctl restart httpd

虚拟机B:

[root@B ~]# curl webapp0.example.com:8909

大圣累了

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

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

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

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

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

虚拟机A:

[root@A ~]# yum -y install nfs-utils

[root@A ~]# mkdir /public

[root@A ~]# touch /public/1.txt

[root@A ~]# ls /public/

[root@A ~]# vim /etc/exports

/public *(ro)

[root@A ~]# systemctl restart nfs-server 

虚拟机B:

[root@B ~]# mkdir /mnt/nfsmount 

[root@B ~]# vim /etc/fstab 

192.168.88.240:/public /mnt/nfsmount nfs _netdev 0 0

[root@B ~]# mount -a

[root@B ~]# df -h /mnt/nfsmount

192.168.88.240:/public 17G 3.5G 14G 21% /mnt/nfsmount

[root@B ~]#

案例5: autofs触发挂载

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

[root@pc2 ~]# yum -y install autofs

[root@pc2 ~]# vim /etc/auto.master

……此处省略一万字 

/mnt /etc/nsd.conf

……此处省略一万字 

[root@pc2 ~]# vim /etc/nsd.conf

nfsauto -fstype=nfs 192.168.88.240:/public

[root@pc2 ~]# systemctl restart autofs

[root@pc2 ~]# ls /mnt/nfsauto

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值