Apache Web服务器技术指南 - 基于Kylin麒麟操作系统

devtools/2025/1/17 21:15:49/

引言

Apache HTTP Server(通常简称Apache)是全球最广泛使用的Web服务器之一。它不仅支持跨平台运行,还因其强大的安全性和灵活性而备受推崇。本文将深入探讨如何在Kylin麒麟操作系统中部署和使用Apache服务来创建静态网站。

一、什么是Apache?

Apache是开源软件基金会的一个项目,其名字来源于美国印第安人的土著语,象征着“拥有高超的作战策略和无穷的耐性”。作为一个成熟的Web服务器解决方案,Apache能够处理HTTP请求并为客户端提供网页内容。此外,它还支持多种认证方式、SSL加密连接以及丰富的模块扩展,使其成为一个功能全面的服务平台。

二、配置文件解析

Apache的主要配置文件位于/etc/httpd/conf/httpd.conf。这个文件包含了全局设置,定义了Apache的行为。除了主配置文件外,Apache还可能引用其他配置文件或目录下的配置片段,如/etc/httpd/conf.d/和/etc/httpd/conf.modules.d/。

配置文件:

ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
<Directory />AllowOverride noneRequire all denied
</Directory>
DocumentRoot "/var/www/html"
<Directory "/var/wwwroot">AllowOverride NoneRequire all granted
</Directory>
<Directory "/var/wwwroot">Options Indexes FollowSymLinksAllowOverride NoneRequire all granted
</Directory>
<IfModule dir_module>DirectoryIndex index.html
</IfModule>
<Files ".ht*">Require all denied
</Files>
ErrorLog "logs/error_log"
LogLevel warn
<IfModule log_config_module>LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%h %l %u %t \"%r\" %>s %b" common<IfModule logio_module>LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio</IfModule>CustomLog "logs/access_log" combined
</IfModule>
<IfModule alias_module>ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">AllowOverride NoneOptions NoneRequire all granted
</Directory>
<IfModule mime_module>TypesConfig /etc/mime.typesAddType application/x-compress .ZAddType application/x-gzip .gz .tgzAddType text/html .shtmlAddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8
<IfModule mime_magic_module>MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on
IncludeOptional conf.d/*.conf
ServerTokens Prod
ServerSignature off
TraceEnable off

以下是一些关键配置项的解释:

  • ServerRoot:指定Apache服务器的根目录,默认是/etc/httpd。

  • Listen:设定Apache监听的IP地址和端口,例如Listen 80表示监听所有接口的80端口。

  • DocumentRoot:指明Web文档的根目录,即用户通过HTTP访问时所能看到的最高级目录,通常是/var/www/html。

  • 指令块:用于定义特定目录的行为,可以用来控制访问权限等。

  • DirectoryIndex:定义当用户访问一个目录时默认加载的文件名,比如index.html。

  • Include:引入其他配置文件或目录中的配置片段,常用于组织和管理复杂的配置。

  • LoadModule:加载各种模块,以增加Apache的功能,例如PHP支持需要加载php_module。

  • User 和 Group:设置Apache进程运行时的用户和组身份,这对安全性至关重要。

  • ErrorLog 和 CustomLog:分别指定错误日志和访问日志的位置。

三、安装Apache服务

为了安装Apache服务程序,在Kylin麒麟操作系统中,您可以使用dnf命令:

[root@localhost ~]# dnf install httpd

这将安装Apache及其依赖项,并准备好开始配置您的Web服务器

四、创建简单的网站

假设您想要创建一个简单的网站,可以在服务器上的网站数据目录中新建一个子目录,并在这个子目录中创建一个包含“Successful”单词的首页文件。

[root@localhost ~]# mkdir /var/www/html/server
[root@localhost ~]# echo "Successful" > /var/www/html/server/index.html

然后,在浏览器中访问127.0.0.1此页面,您应该会看到文本“Successful”。

五、配置个人用户主页功能

如果您想为每位用户建立一个独立的网站,可以通过启用httpd服务程序提供的个人用户主页功能来实现。该功能允许系统内所有的用户在自己的家目录中管理个人的网站,而且访问起来也非常容易。

第一步:启用个人用户主页功能

编辑/etc/httpd/conf.d/userdir.conf文件,取消注释或添加以下行以启用用户目录功能:

<IfModule mod_userdir.c>UserDir public_html
</IfModule>

并且确保在/etc/httpd/conf/httpd.conf或其他适当位置启用了mod_userdir模块:

LoadModule userdir_module modules/mod_userdir.so

第二步:设置用户主页

在用户家目录中建立用于保存网站数据的目录及首页面文件。另外,还需要把家目录的权限修改为755,保证其他人也有权限读取里面的内容。

[root@localhost home]# su - postgres
[postgres@localhost ~]$ mkdir public_html
[postgres@localhost ~]$ echo "This is postgres's website" > public_html/index.html
[postgres@localhost ~]$ chmod -R 755 /home/postgres

第三步:重启服务并访问

重新启动Apache服务程序,在浏览器的地址栏中输入网址,其格式为“网址/~用户名”(其中的波浪号是必需的,而且网址、波浪号、用户名之间没有空格)。例如127.0.0.1/~postgres/。

[postgres@localhost ~]$ exit
logout
[root@localhost ~]# systemctl restart httpd

六、虚拟主机配置

Apache允许基于不同的资源来创建虚拟主机网站,包括但不限于IP地址、域名和端口号。这里我们将着重讨论基于域名配置虚拟主机的方法。

6.1 基于主机域名配置虚拟主机

服务器无法为每个网站都分配一个独立IP地址时,可以让Apache自动识别用户请求的域名,从而根据不同的域名请求传输不同的内容。为了实现这一点,首先需要手动定义IP地址与域名之间的对应关系。这可以通过编辑/etc/hosts文件完成,以强制解析特定域名为指定IP地址。

[root@localhost ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 www.postgres.com www.oracle.com www.mysql.com

接下来,分别创建用于保存不同网站数据的目录,并向其中写入明确区分不同网站内容的首页文件。

[root@localhost ~]# mkdir -p /home/wwwroot/postgres
[root@localhost ~]# mkdir -p /home/wwwroot/oracle
[root@localhost ~]# mkdir -p /home/wwwroot/mysql
[root@localhost ~]# echo "www.postgres.com" > /home/wwwroot/postgres/index.html
[root@localhost ~]# echo "www.oracle.com" > /home/wwwroot/oracle/index.html
[root@localhost ~]# echo "www.mysql.com" > /home/wwwroot/mysql/index.html

最后,在Apache的配置文件中追加写入基于主机名的虚拟主机网站参数,并重启Apache服务使配置生效。

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

# 在适当位置添加如下内容:
<VirtualHost 192.168.2.10:80>ServerName www.postgres.comDocumentRoot "/home/wwwroot/postgres"
</VirtualHost>
<VirtualHost 192.168.2.11:80>ServerName www.oracle.comDocumentRoot "/home/wwwroot/oracle"
</VirtualHost>
<VirtualHost 192.168.2.12:80>ServerName www.mysql.comDocumentRoot "/home/wwwroot/mysql"
</VirtualHost>
[root@localhost ~]# systemctl restart httpd

现在,当用户访问www.postgres.com、www.oracle.com或www.mysql.com时,他们将被导向到相应的网站内容。

七、访问控制

Apache提供了灵活的访问控制机制,可以根据源主机名、源IP地址或源主机上的浏览器特征等信息对网站上的资源进行访问限制。下面是一个例子,展示了如何只允许使用Firefox浏览器的主机访问特定的目录:

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/server">SetEnvIf User-Agent "Firefox" ff=1Order allow,denyAllow from env=ff
</Directory>
[root@localhost ~]# systemctl restart httpd

这段规则意味着只有使用Firefox浏览器的请求才能成功访问位于/var/www/html/server下的资源;其他请求则会被拒绝。

八、添加密码保护

有时,网站的拥有者并不希望直接将网页内容显示出来,而是只想让通过身份验证的用户看到里面的内容。这时可以为网站添加密码保护功能。

第一步:生成密码数据库

使用htpasswd命令生成密码数据库。-c参数表示第一次生成;后面再分别添加密码数据库的存放文件,以及验证要用到的用户名称(该用户不必是系统中已有的本地账户)。

[root@localhost ~]# htpasswd -c /etc/httpd/passwd postgres
New password: 输入用于网页验证的密码
Re-type new password: 再次输入确认密码
Adding password for user postgres

第二步:编辑配置文件

继续编辑个人用户主页功能的配置文件。把相关部分的参数信息修改成下列内容,随后保存并退出配置文件,重启Apache服务程序即可生效。

[root@localhost ~]# vim /etc/httpd/conf.d/userdir.conf
<Directory "/home/*/public_html">AllowOverride allAuthUserFile "/etc/httpd/passwd"AuthName "My privately website"AuthType BasicRequire user postgres
</Directory>
[root@localhost ~]# systemctl restart httpd

此后,当用户再想访问某个用户的个人网站时,就必须输入账户和密码才能正常访问了。

九、结论

通过以上步骤,我们可以看到Apache的强大之处在于它的灵活性和可扩展性。无论是简单静态网站还是复杂的动态应用,Apache都能够提供稳定可靠的支持。


http://www.ppmy.cn/devtools/151363.html

相关文章

Spring Boot中的配置文件有哪些类型

在 Spring Boot 中&#xff0c;配置文件用于管理应用程序的设置和参数&#xff0c;通常存放在项目的 src/main/resources 目录下。Spring Boot 支持多种类型的配置文件&#xff0c;并通过这些文件来控制应用的行为和环境配置。 1. application.properties application.proper…

设计模式--命令模式【行为型模式】

设计模式的分类 我们都知道有 23 种设计模式&#xff0c;这 23 种设计模式可分为如下三类&#xff1a; 创建型模式&#xff08;5 种&#xff09;&#xff1a;单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。结构型模式&#xff08;7 种&#xff09;&#xff1…

数据结构--二叉树

目录 有序二叉树&#xff1a; 平衡二叉树&#xff1a; 234树&#xff1a; 红黑树 红黑树特点&#xff1a; 为什么红黑树是最优二叉树&#xff1f; 哈夫曼树和哈夫曼编码 有序二叉树&#xff1a; 平衡二叉树&#xff1a; 在有序二叉树的基础上得来的&#xff0c;且左右子…

【2024年华为OD机试】(B卷,100分)- IPv4地址转换成整数 (Java JS PythonC/C++)

一、问题描述 题目描述 存在一种虚拟IPv4地址&#xff0c;由4小节组成&#xff0c;每节的范围为0~255&#xff0c;以 # 号间隔。虚拟IPv4地址可以转换为一个32位的整数。例如&#xff1a; 128#0#255#255&#xff0c;转换为32位整数的结果为 2147549183&#xff08;0x8000FFF…

图论基础,如何快速上手图论?

目录 引言-对前面数据结构的总结和图论的引导 一.图的基础概念和基本术语 1.1,图的定义 1.2,图的种类 -有向图和无向图以及完全图 1.2.1有向图和无向图 1.2.2完全图和非完全图 1.3,图的基本术语 1.3.1度,路径,环... 1.3.2强连通图和弱连通图 1.3.3权与网 1.3.4连通分量…

《AI与鸿蒙Next:建筑设计可视化的革新力量》

在建筑设计领域&#xff0c;可视化对于呈现设计理念、与客户沟通以及指导施工等环节都至关重要。人工智能与鸿蒙Next图形渲染技术的发展&#xff0c;为建筑设计可视化带来了前所未有的变革与机遇。 人工智能在建筑设计可视化中的作用 快速生成设计方案&#xff1a;人工智能可以…

React 中hooks之useLayoutEffect 用法总结以及与useEffect的区别

React useLayoutEffect 1. useLayoutEffect 基本概念 useLayoutEffect 是 React 的一个 Hook&#xff0c;它的函数签名与 useEffect 完全相同&#xff0c;但它会在所有的 DOM 变更之后同步调用 effect。它可以用来读取 DOM 布局并同步触发重渲染。 2. useLayoutEffect vs us…

学习微信小程序的下拉列表控件-picker

1、创建一个空白工程 2、index.wxml中写上picker布局&#xff1a; <!--index.wxml--> <view class"container"><picker mode"selector" range"{{array}}" bindchange"bindPickerChange"><view class"pick…