Linux web服务

news/2024/11/18 17:27:35/文章来源:https://www.cnblogs.com/xuruizhao/p/18292506

Web服务

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

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

【1】、httpd软件

1、httpd软件安装

httpd是软件基金会写出的

软件基金会(Apache)

 yum install -y httpdrpm -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 noneRequire 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.comDocumentRoot /var/www/qq
</VirtualHost><VirtualHost 192.168.121.180:80>ServerName www.lol.comDocumentRoot /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.comDocumentRoot /var/www/qq
</VirtualHost>
Listen 8080
<VirtualHost 192.168.121.180:8080>ServerName www.qq.comDocumentRoot /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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/741261.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jmeter分布式no-gui 测试报告

1、远程测试 https://jmeter.apache.org/usermanual/remote-test.html 2、 3、进行分布式压测是,服务器需要先启动jmeter-sever,启动jmeter-sever建议加上nobup,后开运行,停止服务时,先停master,在停slave,不然可能有问题。linux上具体的压测命令如下: 只有一台服务时…

vmware禁止虚拟主机开启后自动时间同步到宿主机

编辑虚拟机 VMX配置文件找到tools.syncTime = "FALSE"并在该行下添加如下七行,注意标点符号 time.synchronize.continue = "FALSE" time.synchronize.restore = "FALSE" time.synchronize.resume.disk = "FALSE" time.synchronize.sh…

转-OAuth2.0 原理流程及其单点登录和权限控制

原文链接 单点登录是多域名企业站点流行的登录方式。本文以现实生活场景辅助理解,力争彻底理清 OAuth2.0 实现单点登录的原理流程。同时总结了权限控制的实现方案,及其在微服务架构中的应用。 1 什么是单点登录 1.1 多点登录 传统的多点登录系统中,每个站点都实现了本站专用…

【转】-Java反射

Java 反射由浅入深 | 进阶必备 原文链接 本博文主要记录我学习 Java 反射(reflect)的一点心得,在了解反射之前,你应该先了解 Java 中的 Class 类,如果你不是很了解,可以先简单了解下。 一、Java 反射机制 参考了许多博文,总结了以下个人观点,若有不妥还望指正:Java 反…

OAuth2.0登录的四种方式

OAuth登录的四种方式 1. 授权码 授权码(authorization code)方式,指的是第三方应用先申请一个授权码,然后再用该码获取令牌。 这种方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信…

C++关于计算浮点数小数位数时遇到的浮点数精确度问题(以及浮点数强制转换问题)

起因是当我想要计算浮点数的小数位位数(利用当浮点数num减去其整数位 ) 我的想法是先分离出小数位,然后每次循环给小数位乘上10,直到不存在小数位时,就会满足当num - (int)num == 0通过这种方式就可以得到小数位的长度 #include <iostream> using namespace std; in…

codeforces 955 div 2 D

题目链接 D. Beauty of the mountains 题目大意解题思路 首先记录所有雪山和没有雪山两种山峰的高度差为 \(tot\) ,然后对于每个可能的子矩,我们可以每次给所有山峰都加一或者减一,因此只要计算出矩阵内两种山峰的个数差的绝对值我们就能得到每次操作该子矩阵对tot的贡献 \(…

全局ID工具类

测试方法学习: 定义一个任务(生成id),执行300次,让不同线程执行这300次,用线程池对象的submit方法。心甘情愿做你现在想做的每一件事。

Dubbo源码学习

学习Dubbo框架与手写模拟相关内容 一、存在的意义 Dubbo:解决分布式系统的复杂性,实现服务治理(使服务之间的调用变的简单)和自动注册与发现,简化服务调用。 二、调用过程Dubbo的使用 接口代表一种服务,对应不同的实现,使服务之间的依赖变的简单。 服务消费者通过ClassP…

软件测试的分类and测试进阶路线

本文来自博客园,作者:子沐呐吖,转载请注明原文链接:https://www.cnblogs.com/SuperLee017/p/18292404

使用资源编排 ROS 轻松部署单点网站——以 WordPress 为例

介绍 WordPress是一款免费开源的网站内容管理系统(CMS),它可以帮助用户简单快捷地创建和管理自己的网站,包括博客、新闻网站、电子商务网站、社交网络等等。WordPress 有丰富的主题和插件库,使得用户可以轻松地为网站定制外观和功能。WordPress 的易用性和可扩展性使其成为…

[Java SE] Java-文件系统-常用文件路径的获取方法

1 获取相对路径 /*** 获取相对路径 【推荐】* 使用Java提供的Path类和Paths类来获取相对路径。* 例如,假设有两个路径a和b,我们可以使用Path类的relativize()方法来获取相对路径,该方法返回一个相对路径的Path对象。*/ @Test public void getRelativePathTest1(){Path pathA…