Linux web服务

Web服务

在Linux中存在许多可以提供web服务的软件,httpd、tomcat、nginx等

  • Web通信的基本概念
    • 基于B/S架构的网页服务
    • HTTP
    • HTML

【1】、httpd软件

1、httpd软件安装

httpd是软件基金会写出的

软件基金会(Apache)

 yum install -y httpd
 rpm -qa httpd
httpd-2.4.37-62.module+el8.9.0+1436+2b7d5021.x86_64

2、构建基本的Web服务

# 启动服务且开机自启
systemctl start httpd
systemctl enable  httpd

httpd服务的默认网也查询路径

/var/www/html

我们在该路径下创建一个名为index.html的文件,作为Web网站的主页面,使用curl去访问

echo hahaha > /var/www/html/index.html
curl 192.168.121.180
hahaha

如果网页文件名不是index.html

会展现测试页面

出现测试页面的原因?

1、没有网页文件

2、网页文件名称不是index.html

3、httpd的访问控制规则被拒绝

4、SELinux没有关闭

3、httpd的配置文件

httpd的配置文件

/etc/httpd/conf/httpd.conf

(1)、模拟配置文件错误

模拟修改配置文件失误,导致httpd启动失败,如何纠错

我们将配置文件中的注释,释放一行,就会引起httpd启动失败

systemctl restart httpd
# 当我们重启时会报以下错误,这时我们可以根据日志去查询报错。
# 使用系统给我们的journalctl -xe命令去查看
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去查错误时,要注意,

在启动失败后要立刻去查错,要不然可能会被后面的日志覆盖

image-20240604214519882

(2)、设置httpd寻找网页的路径

httpd默认寻找网页的路径是

/var/www/html

这个是可以修改的

配置文件中的相关参数

DocumentRoot:指定存放网页文件的路径

在配置文件中可以存在多个DocumentRoot,但是只能有一个DocumentRoot有效,最下面的一个DocumentRoot生效

# 配置文件
DocumentRoot "/var/www/myweb"

(3)、路径执行访问控制

将DocumentRoot修改为“/webroot”

此时再重启软件,再/webroot目录下创建index.html文件

使用curl去访问,观察结果?

我们会发现虽然在/webroot下有了index.html文件,但是我们测试时,依旧出现测试页面

出现上述问题的原因:

httpd软件:针对存放网页的路径实行访问控制,自动继承父目录的规则(就近原则)

假设访问控制规则:

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

/abc 拒绝所有客户端访问

此时

/var/www/test test没有规则,但是www具有规则,此时,test就会自动继承www的规则来作为自己的规则

/abc/aaa aaa没有规则,但是abc具有规则,abc拒绝所有,那么aaa也就是拒绝所有

如果我对aaa专门设置了规则:允许所有,那么aaa就不会继承abc的规则,而按照为aaa设置的规则

<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted # 允许所有客户端访问
</Directory>

<Directory />
    AllowOverride none
    Require all denied # 拒绝所有客户端访问,针对客户端
</Directory>

所以最开始的问题就有了答案

在默认情况下,必须在/var/www目录下的网页才允许客户端访问

解决方式:修改配置文件,给/webroot新增规则

DocumentRoot "/webroot"
<Directory "/webroot">
    Require all granted
</Directory>

(4)、DocumentRoot

网络路径和实际路径

网络路径:http://192.168.121.180

实际路径:DocumentRoot所设定的路径/webroot----->index.html

DocumentRoot:指定网页文件的根目录(起始点)

(5)、调用配置文件

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

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

我们可以在调用配置文件下新建配置文件,主配置文件会调用 调用配置文件下的内容。

我们在/etc/httpd/conf.d/*.conf下新建的配置文件,修改起来比较方便

在主配置文件中存在

IncludeOptional conf.d/*.conf

这样一行,这就指定了调用配置文件的位置

4、端口

标识协议和进程

一个协议可以监听多个端口,一个端口只能由一个协议负责

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

http:80

Listen 80

【2】、虚拟Web主机

虚拟Web主机的优先级高于DocumentRoot的设置

端口的优先级高于虚拟Web主机

1、基于域名

编写新的配置文件,在同一个IP下设置不同的域名

<VirtualHost 192.168.121.180:80>
  ServerName www.qq.com
  DocumentRoot /var/www/qq
</VirtualHost>

<VirtualHost 192.168.121.180:80>
  ServerName www.lol.com
  DocumentRoot /var/www/lol
</VirtualHost>

由于我们没有设置DNS,因此我们需要编写hosts文件,来达到可以通过域名去访问的效果

192.168.121.180 www.qq.com www.lol.com

通过域名访问

curl www.qq.com
wo shi qq
curl www.lol.com
wo shi lol

2、基于端口

修改配置文件

将域名改为相同的域名,设置不一样的端口

<VirtualHost 192.168.121.180:80>
  ServerName www.qq.com
  DocumentRoot /var/www/qq
</VirtualHost>
Listen 8080
<VirtualHost 192.168.121.180:8080>
  ServerName www.qq.com
  DocumentRoot /var/www/lol
</VirtualHost>

验证:

[root@moudle01 11:28:58  ~]# curl 192.168.121.180
wo shi qq
[root@moudle01 11:29:01  ~]# curl 192.168.121.180:8080
wo shi lol
[root@moudle01 11:30:10  ~]# curl www.qq.com:8080
wo shi lol
[root@moudle01 11:30:31  ~]# curl www.qq.com
wo shi qq
posted @ 2024-07-09 18:05  Linux小菜鸟  阅读(11)  评论(0编辑  收藏  举报