首页 > 系统相关 >Linux web服务

Linux web服务

时间:2024-07-09 18:08:25浏览次数:18  
标签:qq web www 服务 配置文件 httpd DocumentRoot Linux var

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

标签:qq,web,www,服务,配置文件,httpd,DocumentRoot,Linux,var
From: https://www.cnblogs.com/xuruizhao/p/18292506

相关文章

  • Linux FTP服务
    FTP服务安装vsftpd软件yuminstall-yvsftpd[root@moudle0114:47:28~]#rpm-qvsftpdvsftpd-3.0.3-36.el8.x86_64修改配置文件,开启无需验证的功能vim/etc/vsftpd/vsftpd.conf#修改内容如下,将NO改为YESanonymous_enable=YES启动服务#找到vsftpd程序[ro......
  • 使用雨云服务器安装1Panel面板并配置环境
    序言之前发过了用雨云安装宝塔的教程(学生党如何自建个人博客(附免费二级域名、虚拟主机、cdn、SSL白嫖教程)(干货预警))。前段时间雨云的【预安装软件】中出现了一个【1Panel面板】,我就买来体验了以下,整体感觉比宝塔好。1Panel的优势与劣势发展较晚,UI设计理念更先进,更加简洁,广告少......
  • linux学习之登录密码(ssh/telnet)
    在Linux系统中,用户登录密码是用于安全验证用户身份的一种方式。登录密码通常是加密后存储在系统的/etc/shadow文件中。如果您想要获取Linux系统中用户的登录密码,这通常是不可能的,因为密码是经过加密处理的,而且出于安全考虑,没有直接的方式可以获取它们的明文形式。/etc/passwd......
  • Docker 创建s3 对象存储服务
    Docker创建s3对象存储服务docker环境不同,可能有些差异主要是因为一些服务需要用到s3存储,因此使用docker部署服务;MinIOS3对象存储具有以下一些优势:简单性与轻量级:部署和维护简单,可以轻松地在各种环境中运行,包括裸金属、Docker和Kubernetes等。高性能:专为高吞......
  • Core WebAPI 中 Program.cs和Startup.cs认识 (高频考点)
    1.Program.cs认识publicclassProgram{publicstaticvoidMain(string[]args){//Build方法构建出一个web应用程序,然后去运行CreateWebHostBuilder(args)//调用下面的方法,返回一个IWebHostBuilder对象.Build()//用......
  • Chrome海康VideoWebPlugin无法调用
    在高版本Chome浏览器中无法使用VideoWebPlugin解决办法第一种使用低于94版本的Chrome浏览器下载地址:旧版本下载第二种在谷歌浏览器中地址栏输入chrome://flags/Allowinvalidcertificatesforresourcesloadedfromlocalhost(Enabled)Blockinsecureprivatenetwork......
  • .net core部署linux下载文件 文件为中文下载
    在项目中,需要下载模板,某个文件夹下有excel文件或者word等 文件名为中文的时候在linux服务器下载不了  如果直接写路由的话在windows下是可以直接访问的,但是core部署在linux上所以会有些不同第一种:写一个接口使用流下载[httpget("download")]publicasyncTask<FileResult......
  • Asp.NET Core WebAPI 设置环境变量值ASPNETCORE_ENVIRONMENT
    默认情况下发布后的环境变量是Production方式一:在文件夹PublishProfiles下的FolderProfile.pubxml文件增加配置<Project><PropertyGroup><EnvironmentName>Development</EnvironmentName></PropertyGroup></Project>表示发布后通过builder.Environment.Env......
  • Linux 搭建SFTP环境
    SFTP(SSH文件传输协议)可以用来安全地传输文件。以下是在Linux服务器上设置SFTP服务的基本步骤: 1) 安装OpenSSH服务:sudoapt-getupdatesudoapt-getinstallopenssh-server2) 创建SFTP用户并设置密码:sudoaddusersftpusersudopasswdsftpuser3) 创建一个目录,用于SF......
  • JavaWeb学习笔记-前端部分
    前端HTML标签表格标签<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>表格</ti......