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

引言

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 none
    Require all denied
</Directory>
DocumentRoot "/var/www/html"
<Directory "/var/wwwroot">
    AllowOverride None
    Require all granted
</Directory>
<Directory "/var/wwwroot">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require 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\"" combined
    LogFormat "%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 None
    Options None
    Require all granted
</Directory>
<IfModule mime_module>
    TypesConfig /etc/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType text/html .shtml
    AddOutputFilter 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.com
    DocumentRoot "/home/wwwroot/postgres"
</VirtualHost>
<VirtualHost 192.168.2.11:80>
    ServerName www.oracle.com
    DocumentRoot "/home/wwwroot/oracle"
</VirtualHost>
<VirtualHost 192.168.2.12:80>
    ServerName www.mysql.com
    DocumentRoot "/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=1
    Order allow,deny
    Allow 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 all
    AuthUserFile "/etc/httpd/passwd"
    AuthName "My privately website"
    AuthType Basic
    Require user postgres
</Directory>
[root@localhost ~]# systemctl restart httpd

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

九、结论

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

相关推荐
迷雾漫步者17 分钟前
React封装倒计时按钮
前端·react.js·前端框架
m0_672449603 小时前
基础vue3前端登陆注册界面以及主页面设计
前端·vue.js·elementui
匹马夕阳3 小时前
Vue3中使用组合式API通过路由传值详解
前端·javascript·vue.js
zpjing~.~3 小时前
VUE中css样式scope和deep
前端·css·vue.js
fxshy3 小时前
Vue3父子组件双向绑定值用例
前端·javascript·vue.js
久绊A3 小时前
理解CPU负载与使用率
服务器·网络·数据库·cpu
风茫3 小时前
如何在vue中渲染markdown内容?
前端·javascript·vue.js
蓝黑20203 小时前
从Vant图标的CSS文件提取图标文件
前端·css·python·vant
勤劳的进取家4 小时前
XML、HTML 和 JSON 的区别与联系
前端·python·算法