Webmin 管理秘籍(二)

原文:annas-archive.org/md5/84cf2e9ed80568ee621e169b740dc335

译者:飞龙

协议:CC BY-NC-SA 4.0

第五章:系统监控

在本章中,我们将涵盖以下主题:

  • 查看并搜索系统日志文件

  • 将 Syslog 消息保存到文件

  • 将其他日志文件添加到 Webmin

  • 配置日志文件轮转

  • 列出最近的登录记录

  • 当服务停止运行时接收电子邮件

  • 自动重启停止运行的服务

  • 监控远程服务器

介绍

当你的服务器运行时,它会记录它执行的所有操作。每当一个服务启动或停止,定时任务运行,邮件消息发送,尤其是当某个操作产生了意外结果或错误时,都会创建一个日志条目。

日志消息帮助你解决服务器上的问题。如果某些功能无法正常工作,通常会在某处找到日志消息,解释发生了什么以及问题所在。日志消息还允许你检测到异常情况,例如有人试图入侵你的服务器。定期查看系统日志非常重要。

每条日志消息都有其有效期。几周或几个月后,旧的日志消息可以被删除,以防止日志文件增长过大,占满磁盘空间。

在本章中,我们将演示如何使用 Webmin 作为一个方便的工具来查看系统日志文件,如何帮助你进行日志轮转以保持档案并删除旧条目。我们还将演示如何使用 Webmin 监控系统,通过定期测试来发现问题,甚至尝试自动修复一些问题。

查看并搜索系统日志文件

你可以配置 Webmin 的系统日志模块,使其成为系统日志信息的单一来源。在本步骤中,我们将演示如何通过 Webmin 的界面轻松快速地查看和扫描日志文件。在接下来的两个步骤中,我们将展示如何将其他日志文件添加到此模块,以创建一个全面的系统活动概览。

准备工作

在这个步骤中,我们将检查位于/var/log/auth.log文件,该文件记录了与身份验证和授权相关的消息。大多数 Debian 家族的系统默认都会有此文件,但如果你使用的是其他系统,可能找不到它。你可以按照步骤“将 Syslog 消息保存到文件”来将此文件添加到你的系统中。

当然,你可以按照相同的步骤查看系统日志模块中列出的任何其他文件。

操作步骤…

按照以下步骤查看日志消息:

  1. 进入系统 | 系统日志。你将看到通过 Webmin 提供的可用日志文件列表。

  2. 点击/var/log/auth.log文件行中的**查看…**链接。

  3. 默认情况下,Webmin 会显示该日志文件的最后 20 条消息(行)。要查看更多行,请在文件的最后[ ]行字段中输入40,然后点击刷新按钮。

  4. auth.log 文件将显示用户登录的信息。我们可以通过过滤器显示仅与 Webmin 相关的消息。在字段中输入 webmin,选择 Only show lines with text,然后点击 Refresh: https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849OS_05_01.jpg

  5. 现在,你可以测试新消息是否出现在日志中。使用另一个浏览器登录 Webmin,然后返回并再次点击 Refresh,以查看与登录尝试相关的新消息出现在日志中。

工作原理…

在后台,Webmin 使用 tail 命令显示系统日志的最后几行。如果你想在终端实现类似的视图,可以使用以下命令:

$ sudo tail -n 40 /var/log/auth.log

如果你想过滤日志,只显示包含单词 webmin 的行,可以将 tail 命令与 grep 组合使用,如下所示:

$ sudo grep webmin /var/log/auth.log | tail -n 40

还有更多…

在系统上调试问题时,通常需要在执行任务时查看日志文件消息的实时出现,任务结束时可能会有错误。Webmin 可以自动刷新日志显示,以便显示新的消息。

配置系统日志自动刷新

按照以下步骤配置系统日志自动刷新:

  1. 导航到 System | System Logs

  2. 点击左上角的 Module Config 链接。

  3. Seconds between log view refreshes 设置为 10,然后点击 Save

现在,当你显示日志时,它会每 10 秒自动刷新一次视图,包括所有过滤条件。你可以在进行调试任务时保持这个窗口打开,并实时查看日志中输出的消息。

提示

根据你的浏览器,Webmin 的自动刷新功能可能会被安全机制禁用,该机制会检查每个传入的 HTTP 请求是否有正确的引用来源头。你可以通过以下步骤禁用此机制:

  • 导航到 Webmin | Webmin Configuration | Trusted Referrers

  • 对于 Referrer checking enabled? 提示,选择 No

  • 点击 Save

你还可以使用 tail 命令的 -f 选项跟踪文件输出的变化,如下所示:

$ sudo tail -f /var/log/auth.log

另见

  • 在这个方案中,我们讨论了如何查看和过滤日志文件。在接下来的两个方案中:将 Syslog 消息保存到文件将其他日志文件添加到 Webmin,我们将演示如何将其他日志消息添加到此界面。

将 Syslog 消息保存到文件

Unix 和相关系统的标准日志协议叫做 Syslog。大多数现代 Linux 发行版使用如 RsyslogSyslog-NG 的实现,它们执行相同的任务:

  • 允许系统上的软件发送 Syslog 消息

  • 按类型和优先级分隔传入的消息,并将它们保存到不同的文件中

大多数系统工具将日志消息发送到 Syslog,但其他服务器软件(如 Apache、MySQL 或 PostgreSQL)默认情况下会将消息直接保存到磁盘上的文件中。

Webmin 允许您控制 Syslog,并决定哪些消息保存到哪些文件。为了理解 Syslog 如何区分消息,我们需要解释两个概念:设施优先级

每条发送到 Syslog 的消息都有一个设施级别和优先级级别。根据这些属性,您可以决定丢弃哪些消息,保留哪些消息以及保存到哪里。

一个设施级别描述了该消息的类型。由于程序通常使用相同的设施发送所有消息,因此它通常指定发送消息的程序类型。以下表格列出了不同的设施级别:

Facility相关的消息
authauthpriv与用户授权或安全性相关的消息。这些可能包含敏感信息(尤其是authpr iv),应仅对受信任的系统用户可访问。
cron与计划命令执行相关的消息。
daemon后台进程(系统守护进程)输出的消息。
ftp与 FTP 服务器相关的消息。
kern系统内核生成的消息。
local0local7您可以配置本地程序使用这些设施将日志消息发送到 Syslog。
lpr与打印相关的消息。
mail与邮件服务器相关的消息。
mark一个特殊设施,定期生成时间戳。
news废弃。
syslog与 Syslog 本身相关的消息。
user与用户进程相关的消息。如果在发送消息时未指定其他设施,则默认为此设施。
uucp废弃。
*上述所有。

优先级(严重性)级别描述了日志消息的重要性。您可以使用此描述来指定哪些消息丢弃,哪些消息保留。优先级级别有一个特定的顺序,您可以选择例如记录所有优先级为warning及以上的消息。以下表格列出了从最高到最低的优先级级别:

优先级描述
emerg紧急—系统不稳定。这是最高优先级级别。
alert警报—必须立即采取行动。
crit严重—系统处于严重状态。需要采取行动。
err错误—发生了错误,需要修复。
warning警告—某些功能没有按预期工作。请检查配置。
notice通知—系统执行了一个重要操作。
info信息—关于系统正常功能的信息性消息。
debug调试—主要用于设置服务和调试问题的详细消息。

正在准备中

在这个食谱中,我们将使用 Webmin 指示 Syslog 守护进程将所有与用户授权相关的日志消息保存到/var/log/中的auth.log文件。如果你使用的是基于 Debian 的系统,系统中可能已经存在这个文件。在这种情况下,你可以将这些消息保存到名为auth2.log的第二个文件中进行练习,稍后再删除配置。

如何做…

按照以下步骤将 Syslog 消息保存到文件:

  1. 转到系统 | 系统日志

  2. 点击添加新系统日志链接。

  3. 选择日志到文件,并指定/var/log/auth.log作为文件名。

  4. 验证日志活动?是否设置为

  5. 设施下,选择多个,并输入与认证相关的两个设施名称(用逗号分隔):auth,authpriv

  6. 优先级下,选择所有https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849OS_05_02.jpg

  7. 点击保存按钮。

  8. 点击应用更改按钮,位于系统日志模块屏幕的底部。

    提示

    在某些系统中,应用更改按钮可能不可见或没有效果。在这种情况下,你需要手动重启 Syslog 服务。

    如果你的系统使用 Rsyslog,你可以使用以下命令重启它:

    $ sudo service rsyslog restart
    

    请参考第四章中通过 Webmin 执行命令的食谱,了解如何通过 Webmin 执行命令。

如食谱中所述,你现在可以查看/var/log/auth.log文件,查看和搜索系统日志文件

它是如何工作的…

根据你的选择,Webmin 会更新你的 Syslog 配置文件并重启服务。你的 Syslog 守护进程会读取新的配置;如有必要,创建一个新的输出文件来保存日志消息,并将选定的消息发送到该文件。

还有更多…

在更改 Syslog 配置后,你可能希望检查日志消息是否正确路由到预定目标。你可以通过执行 logger 命令将日志消息发送到 Syslog。该命令的语法如下:

logger -p facility.priority "The message text"

例如,如果你想发送一条优先级为info、设施为auth的消息Hello Syslog,请使用以下命令:

$ logger -p auth.info "Hello Syslog"

检查auth.log文件,查看你的日志条目。

将其他日志文件添加到 Webmin

不使用 Syslog 的服务器守护进程直接将其日志消息保存到磁盘上的文件中。Webmin 允许你以本章第一个食谱所描述的方式查看、搜索和监视所有日志文件。为了方便引用,你可以将常用的日志文件添加到系统日志模块的列表中。

准备工作

你需要调试问题的日志消息就在那里,你只需要知道在哪里查找。在将它们添加到 Webmin 之前,你需要找到日志文件的完整路径。

在 Linux 系统中,日志通常存储在/var/log目录中。以下表格列出了常用服务的日志消息默认位置:

守护进程默认日志文件位置
Apache 2消息可能会输出到:/var/log/apache2/access.log/var/log/apache2/error.log,等等。
MySQL消息可能会输出到:/var/log/mysql/mysql.log,或者通过daemon设施发送到 Syslog。
PostgreSQL消息可能会输出到:/var/log/pgsql_log,或者通过local0设施发送到 Syslog。
PHPPHP 没有指定默认的日志位置。如果 PHP 作为 Apache 模块运行,消息可能会出现在 Apache 日志中。检查你的php.ini文件,看看是否启用了日志记录。
Webmin消息可能会输出到:/var/webmin/webmin.log以及/var/webmin中的其他文件。

因为每个系统发行版可能会以稍微不同的方式配置你的服务,所以如果你无法在默认位置找到日志文件,请检查服务的配置文件以确定其日志位置。

在此操作中,我们将 Apache 的访问日志(/var/log/apache2/access.log)和错误日志(/var/log/apache2/error.log)添加到 Webmin 的系统日志模块中。

如何操作…

要通过 Webmin 监控额外的日志文件,按照以下步骤操作:

  1. 导航到系统 | 系统日志

  2. 点击左上角的模块配置链接。

  3. 其他要显示的日志文件字段中,添加每个日志文件的路径及其描述,每个条目占一行,如下所示:

    /var/log/apache2/access.log Apache access log
    /var/log/apache2/error.log Apache error log
    

    https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849OS_05_03.jpg

  4. 点击保存按钮。

你添加的文件将出现在系统日志列表中。

它是如何工作的…

额外的文件定义存储在配置文件(/etc/webmin/syslog/config)中。每次 Webmin 准备系统日志模块页面时,它都会检查此文件并将文件添加到其列表中。

还有更多…

你还可以使用 Webmin 临时查看日志文件,而无需将其永久添加到系统日志中。操作步骤如下:

  1. 导航到系统 | 系统日志

  2. 查看日志文件字段中输入日志文件的路径。你也可以点击省略号()按钮,使用文件选择器。

  3. 点击查看按钮。

配置日志文件轮转

日志消息对于调试问题、分析系统使用模式以及检查是否有人试图入侵服务器非常有用。然而,每条消息只有在一段时间内有用,旧日志可以被删除以释放磁盘空间。

日志轮转是一种策略,确保最新的日志消息始终可用,而较旧的消息存储在单独的文件中,这些文件可以压缩以节省空间。几周或几个月后,根据日志类型,最旧的消息可以被删除。

Webmin 允许你控制logrotate工具,该工具会为你自动执行日志文件的轮换。你安装的大多数软件包会自带logrotate配置文件,这些文件会被放置在/etc/logrotate.d目录中。将配置文件放在此目录中可以确保这些文件会纳入日志轮换控制。Webmin 提供了一个图形界面,帮助你轻松创建和修改这些文件。

准备工作

在创建日志轮换任务之前,请确保你的系统已安装logrotate软件包。更多信息请参阅第一章中的安装软件包部分,标题为配置你的系统

在本食谱中,我们将为名为custom.log的日志文件创建一个logrotate配置,该日志文件包含一个名为customd的守护进程的日志输出。我们将安排每周轮换该日志文件,保留四周的历史日志,并压缩所有除最新日志归档之外的日志。我们还将指示 Webmin 在日志轮换后重启守护进程,以便它开始写入新的日志文件。

在创建logrotate配置时,你需要提供日志文件路径以及重启日志守护进程的命令语法。一些软件具有特殊命令,用于通知守护进程日志已被轮换,这样就不需要完全重启。请参阅守护进程文档以查找相关命令。

如何操作…

按照以下步骤创建logrotate配置:

  1. 导航到系统 | 日志文件轮换

  2. 点击标记为添加一个新的日志文件以进行轮换的链接。

  3. 日志文件路径字段中,输入你想要轮换的文件的完整路径。你可以在单独的行中指定多个文件,或通过指定目录路径并跟随星号来包含整个目录的内容。在我们的例子中,我们要轮换一个文件,因此应输入:/var/log/custom.log

  4. 轮换计划设置为每周

  5. 保留的旧日志数量设置为4

  6. 对于压缩旧日志文件?问题,选择

  7. 对于延迟压缩直到下一个周期?问题,选择。这将确保最新的日志归档文件不会被压缩,从而使其更容易查看,但会占用一些磁盘空间。

  8. 对于轮换后重新创建日志文件?问题,选择。如果你留空模式所有者字段,logrotate将以与原日志文件相同的所有权和权限创建该文件。

  9. 轮换后运行的命令字段中,输入重启服务的命令,该服务会写入日志文件。在我们编造的示例中,这个命令是:service customd restart

  10. 点击创建按钮。

如何工作…

Webmin 会在/etc/logrotate.d目录中创建一个logrotate配置文件,将你指定的日志文件放入轮换控制之下。

还有更多内容…

Webmin 的界面还有许多其他功能可以控制logrotate

按需旋转日志文件

日志文件的旋转由计划的 cron 命令触发,每天运行一次。如果你希望更早地旋转日志文件,可以随时手动触发旋转:

  1. 导航到系统 | 日志文件旋转

  2. 点击标记为强制旋转日志的按钮。

编辑默认选项

Webmin 允许你设置默认选项,这些选项适用于所有日志旋转例程,除非被覆盖。请执行以下步骤进行设置:

  1. 导航到系统 | 日志文件旋转

  2. 点击标记为编辑全局选项的按钮。

旋转日志时通过电子邮件发送日志文件

logrotate可以设置为在旋转日志时发送日志文件的副本给你:

  1. 导航到系统 | 日志文件旋转

  2. 点击旋转文件下的文件名链接。这将允许你编辑现有的日志旋转配置。

  3. 在删除前通过电子邮件发送日志文件?选择并指定一个电子邮件地址。

你可以指定是否希望在旋转日志时通过电子邮件发送最新创建的日志文件归档,或者即将被删除的最旧归档。

列出最近的登录记录

每当用户登录或注销时,关于该事件的信息会被记录在交互式登录会话的日志中。你可以使用 Webmin 查看此日志。

如何操作…

按以下步骤列出最近的登录记录:

  1. 导航到系统 | 用户与组

  2. 使用屏幕底部的表单。选择标记为仅用户的单选按钮,并输入你感兴趣的用户的用户名。你也可以选择全部列出所有用户的登录记录。

  3. 点击标记为显示按用户登录的按钮。

你将看到从上次日志旋转以来所选用户的登录列表。

它是如何工作的…

Webmin 检查名为wtmp的标准 Unix 文件,通常存储在/var/log/wtmp中,记录了系统上所有的登录和注销历史。这个文件是二进制格式的,因此不能使用标准的文本日志解析工具查看。如果你想在命令行查看登录历史,可以使用last命令,例如,last root会显示 root 用户的登录记录。

你还可以使用其他相关命令,如下所示:

  • lastlog命令显示所有用户的列表,以及他们上次登录的时间

  • sudo lastb命令显示失败的登录尝试信息

  • who命令显示当前登录的用户列表。

还有更多…

Webmin 还允许你查看当前登录的用户:

  1. 导航到系统 | 用户与组

  2. 点击标记为显示登录用户的按钮。

当服务停止运行时接收电子邮件

你将服务器设置为执行特定服务:运行网站、托管数据库或交换电子邮件。如果该服务停止工作,你的访客、客户或同事会抱怨,因此如果出现问题,你应该是第一个知道的人。

Webmin 提供了一个强大的监控系统,可以定期检查服务器的状态,并在发现异常时向你发送电子邮件。

准备就绪

Webmin 的监控服务将使用你的本地电子邮件服务器发送电子邮件提醒。有关如何设置电子邮件服务器,请参见第十二章,设置电子邮件服务器

在你可以使用 Webmin 的监控功能之前,你需要激活它。按照以下步骤操作:

  1. 转到其他 | 系统和服务器状态

  2. 点击标记为计划监控的按钮。

  3. 是否启用计划检查?问题回答

  4. 当服务停止时发送电子邮件设置为当服务停止时,以便在监控器测试失败时接收单一消息。如果你更喜欢收到垃圾邮件,可以选择在任何服务停止时都接收电子邮件。

  5. 选择发送电子邮件状态报告至选项,并提供你的电子邮件地址:https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849OS_05_04.jpg

  6. 点击保存按钮。

当监控器有报告时,你应当收到电子邮件提醒。你应该设置一个测试监控器,故意让它失败,以检查这些电子邮件是否能够发送到你。

在本教程中,我们将设置一个监控器,检查 Apache web 服务器是否正在运行。有关如何设置 Apache 的信息,请参见第八章,运行 Apache Web 服务器

如何操作…

按照以下步骤,当服务器上的服务停止运行时,接收电子邮件提醒:

  1. 我们将使用一个监控器,检查由给定命令启动的服务是否仍在运行。首先要检查的是启动服务的命令名称。我们可以通过转到系统 | 运行中的进程模块来实现。在 Debian 上,Apache 的命令是:/usr/sbin/apache2 -k start。字符串apache2是唯一的,只出现在与该服务器相关的进程中,因此我们将设置我们的测试,在运行进程的表格中扫描此字符串。如果没有找到匹配的进程,我们的测试将失败。记下 Apache 正在运行的进程数。在我的配置中,与 Web 服务器相关的进程有六个。

  2. 转到其他 | 系统和服务器状态

  3. 从下拉列表中选择检查进程作为监控类型,然后点击**添加监控器类型:**按钮。

  4. Apache 进程指定为描述。

  5. 是否按计划检查?问题回答,并选择何时通知你,例如是,并报告状态变化

  6. 通知方法部分勾选标有电子邮件的框。

  7. 检查命令文本框中,输入一个正则表达式,匹配启动 Apache 的命令的名称。字符串apache2可以工作,但如果你想更精确,可以使用 Perl 正则表达式。

  8. 在步骤 1 中输入数字到标记为监控认为进程正在运行所必须存在的进程数的字段中。在我们的配置中,Apache 运行了六个进程,因此我们会指定这个数字。如果这些进程中的任何一个失败,我们将收到通知。

  9. 点击创建按钮。

如果 Apache 的任何进程停止运行,你现在应该会收到一封电子邮件。为了测试监控,可以停止 Apache 五分钟,然后检查是否收到邮件报告。

它是如何工作的…

当你激活 Webmin 的监控功能时,它会创建一个定时任务,按计划运行监控脚本。每个监控测试可以返回成功或失败状态。如果测试返回失败状态,Webmin 将向在定时监控配置中指定的邮箱发送警报邮件。

还有更多内容…

Webmin 的监控功能非常丰富,我们将在本节以及后续的专门实例中介绍其各个方面。

检查监控历史记录

Webmin 会保留所有监控的状态历史记录,允许你查看某个监控通过和失败的时间:

  1. 导航至其他 | 系统与服务器状态

  2. 点击选择的监控名称,例如,Apache Webserver监控。

  3. 展开屏幕底部的状态历史部分。

    提示

    如果你的监控刚开始运行,可能暂时没有历史数据可供检查。完成几个监控周期后再回来查看。如果历史记录完全没有显示,说明你的监控设置可能不正确。

使用预定义的监控

在这个实例中,我们创建了一个自定义监控,用于检查 Apache 进程是否在运行。事实上,Webmin 有不少预定义的监控类型,无需配置,只需要激活即可。例如,要使用 Apache 的预定义监控,按照以下步骤操作:

  1. 导航至其他 | 系统与服务器状态

  2. 从下拉列表中选择Apache Webserver作为监控类型,然后点击**添加该类型监控:**按钮。

  3. 根据需要自定义报告设置。

  4. 点击创建按钮。

监控系统负载

除了检查特定软件是否在运行外,Webmin 还可以监控其他系统资源。例如,当系统的 CPU 使用率过高时,你可以收到通知。这可能表明服务器流量很大,但也可能是某个进程陷入无限循环,需要被终止,或者是正在进行的拒绝服务攻击。按照以下步骤监控系统负载:

  1. 导航至其他 | 系统与服务器状态

  2. 从下拉列表中选择负载平均值作为监控类型,然后点击**添加该类型监控:**按钮。

  3. 根据需要自定义报告设置。

  4. 为了避免获取到短时间的正常活动信息,请将负载平均值检查时长选择为 15 分钟。

  5. 一般来说,最大负载平均值应为机器的 CPU 核心数。

    提示

    如果您只有一个 CPU,过去 15 分钟的负载平均值大于 1 则表示系统超载。在一台双核机器上,负载低于 2 表示系统没有超载。不同的操作系统以略微不同的方式计算此值,因此您可能需要在正常操作时使用uptime命令测试您的服务器,以检查什么样的负载平均值是系统的正常值。

    您可以在 Wikipedia 上找到更多关于系统负载的信息:en.wikipedia.org/wiki/Load_(computing)

  6. 点击创建按钮。

监控磁盘空间

如果服务器的磁盘空间完全用完,它将会停滞不前。为了避免这种情况,您应该监控系统并在文件空间使用率达到高值(如 90%)时做出反应。按照以下步骤监控磁盘空间:

  1. 转到其他 | 系统和服务器状态

  2. 从下拉列表中选择磁盘空间作为监控类型,然后点击**添加监控类型:**按钮。

  3. 检查的文件系统下拉菜单中选择根文件系统(/)。

  4. 选择选项总百分比,并将其设置为 90%。

  5. 点击创建按钮。

另见

  • 除了在系统监控测试失败时向您发送电子邮件,Webmin 还可以尝试自动响应。请参阅下一个食谱,自动重启停止运行的服务,了解更多信息。

  • 关于 Webmin 监控功能的更多信息可以在其 wiki 中找到:doxfer.webmin.com/Webmin/SystemAndServerStatus

自动重启停止运行的服务

Webmin 的监控功能可以在检测到系统问题时发出警报,但它也可以通过执行命令自动响应已检测到的问题。例如,如果某个服务停止运行,您可以尝试自动重启它。

准备工作

本食谱是前一个食谱,接收服务停止运行时的电子邮件的扩展。在开始此食谱之前,请确保您已经完成了前一个食谱中的设置步骤。

在本食谱中,我们将告诉 Webmin 监控 Apache,并在它停止运行时自动重启。

如何操作…

按照以下步骤自动重启停止运行的服务:

  1. 转到其他 | 系统和服务器状态

  2. 点击Apache Web 服务器监控的链接。

  3. 要运行的命令部分,在如果监视器停止运行,运行命令文本框中输入启动 Apache 的命令。在大多数 Linux 发行版中,命令是service apache2 start

  4. 点击保存按钮。

它是如何工作的…

Webmin 会创建一个 cron 任务,定期运行其监控工具。如果监控从成功变为失败,Webmin 会执行您预设的命令。这些命令可以用来重启已停止的服务,从而自动响应并纠正系统状态。

这是一个适用于 Web 服务器、邮件服务器或应用服务器等服务的好策略。但对于像数据库这样的服务,可能不是最好的选择,因为在重新启动时,它可能需要您介入来修复诸如数据库表损坏等问题。

监控远程服务器

您可以使用 Webmin 的监控功能,定期检查不运行 Webmin 的远程服务器的状态。由于我们对远程服务器的访问权限有限,我们只能测试它的外部可见状态。尽管如此,这仍然是一个非常有用的工具,它可以告诉我们其他服务器是否正在运行,并在特定端口上提供网络服务。如果远程服务器上的某个服务停止,Webmin 会通过电子邮件通知我们。

准备工作

这是 服务停止时接收电子邮件 的教程扩展版。在开始这个步骤之前,请确保按照该教程中的设置步骤进行操作。

在本教程中,我们将让 Webmin 定期检查远程 Web 服务器是否正在运行,并返回预期的 HTML 页面。

如何操作…

按照以下步骤监控远程服务器:

  1. 导航至 其他 | 系统和服务器状态

  2. 从下拉列表中选择 远程 HTTP 服务 作为监控类型,并点击 添加监控类型: 按钮。

  3. 请求的 URL 字段中,输入您期望在远程服务器上找到的网页 URL,例如:http://example.com/index.php

  4. HTTP 请求方法 设置为 GET

  5. 页面必须匹配正则表达式 字段中,输入包含您期望 Web 服务器响应的 HTML 代码片段的字符串。这可以是页面标题或远程网站上其他不经常变化的文本。

    注意

    例如,如果我们监控 en.wikipedia.org/wiki/Main_Page,我们可以检查字符串 Wikipedia, the free encyclopedia,这是我们期望在正确生成的页面标题中出现的内容。

  6. 点击 创建 按钮。

它是如何工作的…

Webmin 会创建一个 cron 任务,定期运行其监控工具。远程 HTTP 服务监控器尝试与配置为在给定 URL 下响应的 Web 服务器建立连接。如果连接建立成功,Webmin 会请求指定的网页并扫描它以查找我们的正则表达式。

如果监控无法建立连接,或者返回的网页与我们的正则表达式不匹配,测试将失败;监控会改变其状态并发送电子邮件警报信息。

还有更多…

Webmin 能够监控远程 Web 服务器,但也可以用来远程监控其他服务。

检查远程服务器是否运行

你正在运行的远程服务器可能是一个防火墙或其他网络基础设施,未暴露任何网络服务。即使是这样安全的服务器,仍然应该对 ICMP ping 回显请求作出响应。Webmin 可以向远程服务器发送 ping 数据包,以确定它是否可通过网络访问。请执行以下步骤检查远程服务器是否在线:

  1. 进入 其他 | 系统与服务器状态

  2. 从下拉列表中选择 远程 Ping 作为监视类型,并点击 添加类型监视器: 按钮。

  3. 要 ping 的主机 字段中,输入远程服务器的 IP 地址或域名。

  4. 点击 创建 按钮。

检查远程服务器是否运行网络服务

如果你知道远程服务器应该监听的端口号,你可以使用 Webmin 测试几乎任何网络服务。Webmin 将向远程服务器的特定端口发送 TCP 连接请求。如果远程服务器响应,Webmin 会立即关闭连接。如果服务器未响应,将发送警报信息。

  1. 进入 其他 | 系统与服务器状态

  2. 从下拉列表中选择 远程 TCP 服务 作为监视类型,并点击 添加类型监视器: 按钮。

  3. 要连接的主机 字段中,输入远程服务器的 IP 地址或域名。

  4. 连接端口 字段中指定服务端口。

  5. 点击 创建 按钮。

第六章:管理系统中的文件

在本章中,我们将涵盖:

  • 从服务器下载文件

  • 上传文件到服务器

  • 管理服务器上的文件和目录

  • 更改文件的所有权和权限

  • 设置 Windows 的网络共享文件夹

  • 挂载 Windows 共享文件夹

  • 设置 NFS 共享卷

  • 挂载远程 NFS 卷

  • 通过 SFTP 授予用户对服务器的访问权限

  • 通过 FTP 授予用户对服务器的访问权限

介绍

Webmin 提供了将文件传输到服务器及从服务器传输文件的功能,并且还提供了一个完整的文件管理器,可以在浏览器中作为 Java 小应用运行。在本章中,我们将介绍如何使用这些功能通过 Webmin 管理服务器上的文件,而无需额外的工具。

本章的后半部分将展示如何使用 Webmin 通过Windows 网络CIFS)、网络文件系统NFS)和文件传输协议FTP)设置本地网络上的文件共享。如果您想通过互联网访问您的文件,最佳的解决方案是使用安全文件传输协议SFTP)功能,本章也涵盖了这一部分内容。

本章中的两个示例挂载 Windows 共享文件夹挂载远程 NFS 卷展示了如何通过 Webmin 设置 CIFS 或 NFS 客户端,并使远程文件资源在您的系统上可用。

从服务器下载文件

您经常会遇到需要查看文件内容或从服务器下载文件的情况。Webmin 的上传和下载模块使这些任务变得非常简单。

在此示例中,我们将检查系统的主机名数据库文件,查看您是否定义了任何本地主机名条目,这些条目会覆盖通过 DNS 解析的域名。这个文件大多数系统存储在/etc/hosts中。

如何操作…

按照以下步骤从服务器下载文件:

  1. 转到其他 | 上传和下载

  2. 选择从服务器下载标签。

  3. 点击文件下载行中的省略号()按钮。

  4. 在文件浏览器中选择位于/etc目录下的hosts文件。

  5. 对于问题是否在浏览器中显示(如果可能)?请选择

  6. 点击下载

hosts文件将在浏览器中显示。如果您希望将文件下载到磁盘,只需在第 5 步选择

如何运作…

Webmin 从您选择的系统磁盘中访问文件。如果文件包含文本,它会直接在浏览器中显示。如果您选择下载文件,Webmin 将向响应中添加 HTTP 头(如Content-Disposition: Attachment),迫使浏览器显示保存对话框,允许您将文件保存到磁盘,而不是在浏览器中显示。

另见

  • 如果您想下载整个目录及其内容,请查看本章稍后的下载目录及其内容部分,在管理服务器上的文件和目录食谱中可以找到相关信息。

将文件上传到服务器

Webmin 的图形界面使您能够轻松地将文件从本地计算机上传到服务器。Webmin 还允许您直接从 Web URL 将文件传输到服务器,而无需先下载到本地计算机。

准备好

在本食谱中,我们将上传一个默认的欢迎信息,由 Apache Web 服务器提供服务。有关设置 Apache 的信息,请参考第八章,运行 Apache Web 服务器

如果您希望执行相同的任务,首先在本地系统中准备一个简单的 HTML 文件,并将其保存为index.html。您当然也可以按照相同的步骤上传其他任何文件到服务器上的任何位置。

如何操作…

按照以下步骤将文件上传到服务器:

  1. 转到其他 | 上传和下载

  2. 选择上传到服务器选项卡。

  3. 要上传的文件部分点击四个按钮之一,从本地磁盘选择您的文件。如果需要,可以使用其他按钮选择额外的文件。

  4. 点击文件或目录上传到字段右侧的省略号()按钮,使用文件浏览器选择要上传文件的目录。选择/var/www作为 Apache 提供文件的默认根目录。

  5. 设置将拥有磁盘中文件的用户,或者将由用户拥有字段保持为root。如何操作…

  6. 点击上传按钮。

上传进度窗口将弹出,告知您上传状态。上传完成后,Webmin 将显示一个屏幕,告知您上传到服务器的数据量。

它是如何工作的…

Webmin 使用 HTTP 协议将文件传输到您的服务器。上传的文件将属于选择的用户作为拥有者。此功能无需额外工具即可完成上传少量文件到服务器等简单任务。

还有更多…

Webmin 还允许您直接从 Web URL 将文件传输到服务器,无需先下载到本地计算机。

从 Web 直接下载文件到服务器

假设您想在欢迎网页上使用 jQuery。如果您知道它的 URL,可以直接将库下载到服务器上。对于 jQuery,您可以从code.jquery.com/jquery-1.10.0.min.js下载。

  1. 转到其他 | 上传和下载

  2. 选择从 Web 下载选项卡。

  3. 将所需的 URL 粘贴到要下载的 URL文本字段中。

  4. 单击下载到文件或目录字段右侧的省略号()按钮,并使用文件浏览器选择您希望上传文件的目录。选择/var/www作为默认的根目录,Apache 将在该目录中提供文件。

  5. 设置将拥有文件的用户,或者将由用户拥有字段保持为root

  6. 下载模式设置为立即,显示进度

  7. 单击下载 URLs按钮。

下载进度屏幕将显示,告知您下载的状态。

在后台从网页下载文件

如果您希望从较慢的服务器下载大文件,Webmin 允许您安排下载在后台执行。

为了实现这一点,按照从网页直接下载文件到服务器部分中的步骤操作,但将下载模式字段设置为后台进行。您可以将下载时间设置为当前时间或稍后时间。如果您已配置 Webmin 发送邮件,如第一章中所述,设置您的系统,您可以指示 Webmin 在传输完成时通知您。

在服务器上管理文件和目录

Webmin 提供了一个简单但功能强大的文件管理器,您可以直接在浏览器中访问它。

准备工作

Webmin 的文件管理器作为 Java 小程序运行。为了使用它,您需要在本地计算机上安装 Java 并启用其在浏览器中的使用。您不需要在服务器上安装 Java。

如何操作…

在本节中,我们将讨论文件管理器的基本功能,例如在服务器上复制和移动文件。

https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849OS_06_01.jpg

Webmin 的文件管理器

复制或移动文件或目录

执行以下步骤以创建或移动文件或目录:

  1. 导航至其他 | 文件管理器

  2. 浏览文件系统,找到包含您希望操作的文件或目录的目录,并单击文件进行选择。

  3. 单击工具栏中的复制按钮以复制文件,或单击剪切按钮以移动文件。

  4. 浏览文件系统,找到目标目录。

  5. 单击粘贴按钮。

文件将从源目录传输到目标目录。如果目标目录已经包含同名文件,则会弹出对话框,您可以指定备用名称或选择相同名称以覆盖目标文件。

重命名文件或目录

执行以下步骤以重命名文件或目录:

  1. 导航至其他 | 文件管理器

  2. 浏览文件系统,找到包含您希望重命名的文件或目录的目录,然后单击文件名以选择它。

  3. 单击重命名按钮,并在弹出对话框中提供新文件名。

  4. 单击弹出对话框中的重命名按钮。

删除文件或目录

执行以下步骤以删除文件或目录:

  1. 导航至其他 | 文件管理器

  2. 浏览文件系统,找到包含你想删除的文件或目录的目录,并点击文件名进行选择。

  3. 点击删除按钮。

  4. 在弹出对话框中点击删除按钮确认删除。

编辑服务器上的文件

执行以下步骤编辑服务器上的文件:

  1. 导航到其他 | 文件管理器

  2. 浏览文件系统,找到包含你希望编辑的文件的目录,并点击文件名进行选择。

  3. 点击编辑按钮。

  4. 在弹出对话框中编辑文件内容。

  5. 在弹出对话框中点击保存并关闭按钮以完成编辑。

在服务器上创建目录

执行以下步骤在服务器上创建目录:

  1. 导航到其他 | 文件管理器

  2. 浏览文件系统,找到你希望创建子目录的目录。

  3. 找到带有目录图标的新建按钮并点击它。

  4. 在弹出窗口中,通过将新目录的名称附加到路径上,提供新目录的完整路径。

  5. 点击弹出对话框中的创建按钮。

在服务器上创建新文件

执行以下步骤在服务器上创建新文件:

  1. 导航到其他 | 文件管理器

  2. 浏览文件系统,找到你希望创建新文件的目录。

  3. 找到带有空白文件图标的新建按钮并点击它。

  4. 在弹出窗口中的文件名字段中,通过将新文件的名称附加到提供的路径中,提供新文件的完整路径。

  5. 你可以选择在大文本框中输入内容来为文件添加初始内容。

  6. 在弹出对话框中点击保存并关闭按钮以创建新文件。

在服务器上创建符号链接

在许多情况下,创建指向其他位置的文件或目录的符号链接非常有用。对于大多数实际用途,符号链接的行为就像它们所链接的对象,但它们只是指向原始位置的指针。这意味着你可以通过多个文件系统路径访问同一个目录或文件。执行以下步骤在服务器上创建符号链接:

  1. 导航到其他 | 文件管理器

  2. 浏览文件系统,找到你希望创建新符号链接的目录。

  3. 找到带有箭头图标的新建按钮,表示链接。

  4. 链接来源字段中,输入你希望创建链接的完整路径。

  5. 链接到字段中,输入你要创建链接的文件或目录的完整路径。

  6. 点击创建按钮以创建链接。

提示

符号链接可以引用绝对路径(以根目录 / 开头),也可以引用相对路径。在相对路径中,两个点表示链接所在目录的父目录。例如,如果我们在目录 A 中有 file 文件,并且想在兄弟目录 B 中创建链接,我们可以将链接指向 ../A/file。这样,我们可以将 AB 两个目录一起移动到另一个位置,而符号链接仍然指向相同的文件。

下载目录及其内容

Webmin 的文件管理器允许你下载整个目录及其内容,作为一个压缩档案文件,具体步骤如下:

  1. 导航到 其他 | 文件管理器

  2. 浏览文件系统到你想下载的目录的父目录。

  3. 单击目录的名称以选择它。

  4. 单击工具栏中的保存按钮。

  5. 在弹出的对话框中,点击TAR.GZ按钮,将目录下载为一个由 GZIP 压缩的磁带档案文件。

    注意

    磁带档案(TAR)文件格式能够保留你下载文件的大多数元数据,如所有权、权限和扩展文件属性(尽管无法保留 SELinux 上下文或 POSIX ACLs)。

    你也可以选择以 ZIP 格式下载文件,这在某些系统上可能更容易提取,但文件的元数据将丢失。

  6. 将文件保存到本地计算机。

从压缩档案中提取文件

如果你的服务器上有 ZIP、TAR 或 GZIP 格式的压缩档案,Webmin 的文件管理器允许你通过以下步骤提取其内容:

  1. 导航到 其他 | 文件管理器

  2. 浏览文件系统到包含归档文件的目录。

  3. 单击归档文件的名称以选择它。

  4. 单击工具栏中的提取按钮。

  5. 在弹出对话框中点击

注意

请注意,如果你的目录中已包含与归档中文件同名的文件,这些文件将被覆盖,而不会进一步提示确认。

它是如何工作的……

Webmin 的文件管理器在你本地计算机的 Java 虚拟机中运行。Java 小程序嵌入在 Webmin 的网页中,可以通过浏览器访问。每当你在文件管理器中执行一个操作时,Java 小程序会向你的服务器发送一个请求,包含应执行的操作指令。

注意

文件管理请求通过 HTTP 协议发送。如果你在 Webmin 中启用了 HTTPS 支持,指令将通过 SSL 加密。

Webmin 在服务器上执行这些指令,并将它们的效果信息及其他显示所需的信息发送回文件管理器窗口的下一屏幕。

参见

  • 有关 Webmin 文件管理器功能的更多信息,请参考本章中的更改文件所有权和权限一节。

更改文件所有权和权限

Webmin 的文件管理器允许您操作标准的 POSIX 文件所有权和权限。该功能的用户界面易于使用且功能强大,允许您递归修改文件,但能够区分文件和目录。

在类 UNIX 系统中,每个文件系统节点(文件、目录等)都由一个用户和一个组拥有。系统还会为每个节点存储权限信息,包括文件所有者、组和其他用户的权限。标准权限如下表所示:

二进制表示法八进制表示法权限名称描述
0000没有任何权限。
0011执行执行程序文件或遍历目录。在大多数情况下,也需要读权限。
0102写入文件或在目录中创建文件条目。
1004读取读取文件内容或列出目录内容。
0113写和执行以上提到的权限组合。
1015读和执行
1106读写
1117读、写和执行

八进制表示法通常使用,因为它是最简洁的。例如,常用的文件权限表示为644,其中6(读写位)表示文件所有者的权限,4(读位)表示文件所属组和所有其他用户的权限。我们可以将权限设置为640,以禁止任何不属于我们组的用户访问。

另一方面,目录的标准权限表示为755,它与644类似,但为所有权限添加了执行位,允许所有人进入目录。

注意

设置第三种权限时要小心,因为此权限适用于所有可以访问您系统的用户。

如果您从另一个系统复制目录到您的服务器,目录的所有权和权限信息可能会丢失或设置不当。在本教程中,我们将递归地编辑目录,改变目录及其内容的所有者和权限。我们会将所有文件的权限设置为644,并将所有子目录的权限设置为755

准备工作

在本教程中,我们将使用 Webmin 的文件管理器,它作为一个 Java 小程序运行。为了使用它,您需要在本地计算机上安装 Java 并启用浏览器中的 Java 功能。您不需要在服务器上安装 Java。

如何操作…

让我们开始吧。按照以下步骤更改文件的所有权和权限:

  1. 导航到其他 | 文件管理器

  2. 浏览文件系统,找到包含您要操作的文件或目录的目录,并点击目录名称以选择它。

  3. 首先,我们将为目录及其所有内容设置权限755

    1. 点击工具栏中的信息按钮。

    2. 用户其他的所有类型下,勾选读取列出复选框。

    3. 仅为 用户(所有者)勾选 写入 权限,确保 其他 没有勾选 写入 权限。

    4. 应用更改到 选项设置为 此目录及所有子目录和文件https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849OS_06_09.jpg

    5. 点击 保存 按钮。

  4. 接下来,我们将只对目录及其子目录中的文件设置权限 644

    1. 点击工具栏中的 信息 按钮。

    2. 取消勾选所有类型的 列出 权限:用户其他

    3. 应用更改到: 选项设置为 此目录及其子目录下的文件

    4. 点击 保存 按钮。

它是如何工作的…

Webmin 的文件管理器在本地计算机的 Java 虚拟机上运行。Java 小程序嵌入在 Webmin 的网页中,可以通过浏览器访问。每当你在文件管理器中执行一个操作时,Java 小程序会向服务器发送一个 HTTP 请求,指示应该执行哪些操作。Webmin 会在服务器上执行这些操作,并将它们的效果以及显示在文件管理器窗口下一屏所需的其他信息一并返回。

还有更多…

Webmin 的文件管理器有许多与文件权限相关的其他选项。

启用可执行文件的 setuid 位

通常,当用户从文件中执行程序时,该程序会以该用户的权限运行。在特殊情况下,当一个可执行文件被标记为 setuid(执行时设置用户 ID)位时,执行的程序将以可执行文件的所有者权限运行,而不是运行程序的用户权限。这在用户必须向通常没有访问权限的文件写入数据时非常有用。例如,当用户更新自己的密码时,他们会修改 /etc 目录下的 shadow 文件,普通用户没有权限访问该文件。按照以下步骤为文件设置 setuid 位:

  1. 进入 其他 | 文件管理器

  2. 浏览文件系统,找到包含你希望操作的文件的目录,并点击文件名进行选择。

  3. 点击工具栏中的 信息 按钮。

  4. 所有权 下勾选标记为 Setuid 的复选框。

  5. 点击 保存 按钮。

为目录设置 sticky 位

sticky 位是现代 UNIX 类系统中目录的一个有用特性。如果一个目录设置了 sticky 位,那么目录中的文件只能由各自的拥有者或 root 用户编辑或删除,不管其他文件权限如何。这一特性通常应用于 /tmp 目录,在这个目录中,所有用户都可以创建文件,但只能删除或重命名自己拥有的文件。

Webmin 的文件管理器允许你通过以下步骤在目录上设置 sticky 位:

  1. 进入 其他 | 文件管理器

  2. 浏览文件系统到包含您要操作的目录的目录,然后点击目录名称进行选择。

  3. 点击工具栏中的信息按钮。

  4. 权限下勾选标有粘滞的复选框。

  5. 点击保存按钮。

更改目录上的 ACL

如果您的系统支持文件系统访问控制列表ACL),您可以使用它们为文件和目录指定额外的权限。例如,您可以选择设置默认权限,这些权限将应用于目录中创建的所有新文件。如果您有一个 Webmin 用于存放备份文件的目录,您可以选择默认情况下使备份对其他用户不可访问。

您可以通过以下步骤使用 Webmin 操作 ACL:

  1. 导航到其他 | 文件管理器

  2. 浏览文件系统到包含您要操作的目录的目录,然后点击目录名称进行选择。

  3. 点击工具栏中的ACL按钮。

  4. 从下拉菜单中选择默认其他,然后点击添加类型的 ACL按钮。

  5. 取消勾选读取写入执行的所有框。https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849OS_06_10.jpg

  6. 创建 ACL窗口中点击保存按钮,然后在主 ACL 窗口中点击保存按钮。

为 Windows 设置网络共享文件夹

在局域网上运行的服务器可以作为共享文件的存储库非常有用。如果您本地网络中的其他计算机运行的是 Microsoft Windows,设置网络文件服务器的最佳选择是 Windows 标准的公共互联网文件系统CIFS)协议。Webmin 可以通过安装并帮助您配置 Samba 包实用工具来协助您设置这种类型的网络共享。

提示

不建议在公开的互联网环境中使用 Windows 文件共享。外部计算机经常扫描 Windows 文件共享协议的漏洞,如果在安全补丁发布并应用之前,某个漏洞被广泛利用,您可能会成为攻击的受害者。

确保您的防火墙阻止用户数据报协议UDP)端口 137、138 和 139,以及 TCP 端口 137、139 和 445 的外部网络流量。这些端口用于 Windows 文件共享,应仅允许本地网络中的受信任计算机访问。

如果您需要通过互联网提供网络资产,使用本章后面将介绍的 SFTP 或 FTP 协议会是一个更好的选择。

准备工作

为了在您的服务器上设置 Windows 文件共享,您需要从您的发行版仓库安装 Samba 包。如果 Samba 已经安装,您将在 Webmin 主菜单的服务器部分找到Samba Windows 文件共享模块;否则,您会在未使用的模块部分找到它。

在大多数系统中,Webmin 能够自动下载 Samba 包及其依赖项。请导航到未使用的模块 | Samba Windows 文件共享并点击链接下载并安装该软件包。或者,你也可以按照第一章中安装软件包的步骤,安装名为samba的软件包。

注意

在本书发布时,Webmin 支持的是 Samba 3 系列,而不是更新的 Samba 4。

安装完成后,按照第三章中通过防火墙允许访问服务的步骤,解锁 TCP 端口 137、139 和 445 以及 UDP 端口 137-139。

https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849OS_06_03.jpg

请按照第一章中控制启动时哪些系统服务被启动的步骤,确保nmbsmbwinbind服务被启动并设置为开机自动启动。

最后,我们可以设置服务器在网络中的可见性。请导航到服务器 | Samba Windows 文件共享 | Windows 网络,将工作组设置为WORKGROUP或你的组织中使用的其他名称。将服务器描述设置为你希望服务器在网络中显示的名称。你可以将描述字段设置为%h,这会导致 Samba 使用服务器的默认主机名。

如何操作…

在这个步骤中,我们将创建一个共享的网络文件夹,供 Windows 用户使用。Linux 和 OS X 也能够访问 CIFS 服务器,因此这种类型的网络附加存储将广泛可用于你的本地网络。

创建 UNIX 伪用户

我们将创建一个可以供多个用户访问的共享网络文件夹。这个共享资源必须存储在我们服务器的磁盘上,并且必须属于一个 UNIX 用户。为了简化文件所有权和权限的管理,我们将创建一个名为samba的特殊伪用户。这个用户不与任何一个人关联,并且该账户无法登录到我们的系统。该用户将仅拥有共享目录中的所有文件,目录将创建在/srv/samba。请按照第二章中创建系统用户账户的步骤来创建一个伪用户。使用以下设置:

  • 用户名: samba

  • 真实姓名: Samba 网络伪用户

  • 主目录: /srv/samba

  • Shell: /usr/sbin/nologin

    注意

    nologin二进制文件可能位于其他路径下,如/sbin/nologin。你也可以使用/bin/false,该命令不会返回礼貌的提示信息,但同样会阻止用户登录。

  • 密码: 不允许登录

  • 主组: 与用户同名的新组

  • 将模板文件复制到主目录?:

  • 是否在其他模块中创建用户?

这些设置显示在以下截图中:

https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849OS_06_02.jpg

创建 Samba 共享网络文件夹

下一步是创建实际的共享网络资源。Webmin 使这部分变得非常简单。按照以下步骤创建共享网络文件夹:

  1. 导航到服务器 | Samba Windows 文件共享

  2. 点击创建新的文件共享链接。

  3. 共享名称设置为SharedFolder或更合适的描述。

  4. 共享目录设置为/srv/samba

  5. 由于我们在设置伪用户账户时已经创建了目录,因此对于是否自动创建目录?,选择

  6. 可用可浏览都设置为

  7. 点击创建按钮。

创建 Samba 用户账户

Samba 存储着独立于系统用户列表的用户列表。Webmin 允许你通过执行以下步骤轻松地为系统用户创建 Samba 用户账户:

  1. 导航到服务器 | Samba Windows 文件共享

  2. Samba 用户部分点击转换用户

  3. 转换 Unix 用户设置为仅列出的用户或 UID 范围,然后使用省略号按钮()打开用户选择弹出窗口,选择一个你希望授予 Samba 访问权限的用户。

  4. 为新创建的用户设置密码为设置为使用此密码,并为该用户输入密码。

  5. 点击转换用户按钮。

提示

用户可以通过 Usermin 更改其密码。有关设置 Usermin 的信息,请参见第二章中的安装 Usermin配方,用户管理部分。

如果用户在 Samba 服务器上的用户名和密码与其 Windows 上的用户名和密码匹配,他们应该能够透明地进行身份验证,在访问共享文件夹时无需重新输入密码。

授予 Samba 用户访问共享文件夹的权限

过程的最后一步是授予 Samba 用户访问我们创建的共享文件夹的权限。我们还将告知 Samba,应将所有传入文件的 UNIX 所有权设置为在前一部分中创建的伪用户samba。按照以下步骤授予 Samba 用户访问共享文件夹的权限:

  1. 导航到服务器 | Samba Windows 文件共享

  2. 点击我们刚创建的共享的名称。

  3. 编辑文件共享屏幕上,点击安全性与访问控制图标。

  4. 可写?设置为

  5. 可读/写用户设置为应该具有写入权限的用户列表。使用省略号()按钮打开有用的用户选择弹出窗口。

  6. 点击保存按钮。

  7. 返回到编辑文件共享屏幕,点击文件权限图标。

  8. 强制 UNIX 用户强制 UNIX 组设置为samba

  9. 点击保存按钮。

注意

如果你正在运行Security Enhanced LinuxSELinux),你可能会遇到一个问题,即用户能够访问共享文件,但无法列出、读取或写入文件。这是因为 SELinux 阻止了它认为未经授权的对底层目录的访问。你可以通过禁用 SELinux 或为/srv/samba配置 SELinux 安全上下文来解决此问题。有关更多信息,请查看此链接:fedoraproject.org/wiki/SELinux/samba

稍等片刻,你应该能够从网络上的其他计算机访问你的共享文件。在 Windows 网络WORKGROUP中查找你的服务器,或在 OS X 的Shared侧边栏中查找。

它是如何工作的……

Samba 的配置存储在/etc/smb.conf/etc/samba/smb.conf中,具体取决于操作系统。Webmin 的图形界面使你能够编辑存储在此文件及相关文件中的选项,从而修改 Samba 的配置,无需学习该文件复杂的语法。Samba 会自动频繁重新读取其配置,因此在进行大多数常见配置更改后,通常不需要重新启动smb及相关守护进程。

还有更多……

你可以做很多与 Samba 相关的操作,但这里没有足够的空间来涵盖所有内容。我们不得不省略的话题包括:在你的网络上共享服务器连接的打印机、使用微软的 Active Directory 服务进行用户身份验证、设置访问控制列表以维护 Windows 和 UNIX 系统上的文件所有权等。

在本节的其余部分,我们将介绍 Webmin 可以帮助您完成的其他一些功能。

共享主目录

在许多系统中,Samba 会自动创建主目录共享。这允许用户通过网络访问存储在其主目录中的文件。如果这是一个你不打算启用的功能,你可以暂时禁用它或永久删除该共享配置。以下是使主目录不可用的步骤:

  1. 导航到Servers | Samba Windows File Sharing

  2. 点击SharedFolder

  3. 设置Available?No

  4. 点击Save按钮。

检查谁已连接并断开会话

如果你想查看谁通过 Samba 连接到你的服务器并断开连接,请执行以下步骤:

  1. 导航到Servers | Samba Windows File Sharing

  2. 点击View all connections链接。

  3. 标记与您想要断开连接的会话相关的进程 ID。

  4. 点击Disconnect Selected Users按钮。

注意

断开一个正在打开文件的用户可能会导致他们 Windows 机器上的程序停止运行。断开用户时请小心。

调试 Samba

如果你在使用 Samba 时遇到问题,应该检查其日志文件中的错误信息。Samba 的日志消息存储在/var/log/samba目录中。你会在这里找到多个文件,因为服务器会为每个连接的客户端保存单独的文件。默认情况下,Samba 的日志记录非常安静,因为记录每个操作会严重降低服务的性能。如果你遇到问题,可能希望临时增加 Samba 日志的详细程度;完成后记得将其恢复到默认值。按照以下步骤来更改 Samba 的日志详细度:

  1. 转到服务器 | Samba Windows 文件共享 | 其他选项

  2. 调试级别设置为更高的值。初始值设为1,如果日志文件中仍未找到有用的信息,可以进一步提高该值。

  3. 点击保存按钮。

  4. Samba Windows 文件共享屏幕上,点击重启 Samba 服务器按钮。这将输出有关服务器启动时记录消息的信息,这些消息可能包含有用的诊断信息。

挂载 Windows 共享文件夹

网络附加存储卷使用 CIFS 协议是相当常见的。允许设置此类共享的工具已经内置在流行的操作系统中,如 Microsoft Windows 和 OS X。许多 NAS 设备也使用此协议,通常运行 Linux 的 Samba 包的某个版本。在桌面环境中挂载 CIFS 共享是相当简单的,但如果你希望服务器始终能够访问 CIFS 卷该怎么办呢?Webmin 可以帮助你设置一个自动挂载的网络文件系统,在系统启动时连接到远程 CIFS 服务器。

准备工作

在你的系统能够访问 CIFS 网络卷之前,你需要安装一个附加的包,通常名为cifs-utils。有关如何使用 Webmin 安装软件包的信息,请参见第一章中的安装软件包

如何操作…

按照以下步骤将 Windows 共享文件夹挂载到你的文件系统中:

  1. 由于我们需要以明文形式存储 CIFS 用户凭据(用户名和密码),因此我们需要先创建一个受保护的隐藏文件。在服务器上创建一个路径为/root/.smbcredentials的文件,并在其中写入以下内容,将cifsusernamecifspassword替换为具有访问 CIFS 共享文件夹权限的用户的用户名和密码。将文件的所有者设置为root,并将权限设置为600

    username=cifsusername
    password=cifspassword
    

    提示

    你可以使用 Webmin 的文件管理器来创建文件并编辑其权限。有关如何管理服务器上的文件和目录,请参阅本章中的管理文件和目录

  2. 转到系统 | 磁盘和网络文件系统

  3. 类型下拉菜单中选择通用互联网文件系统(cifs)

  4. 点击添加挂载按钮。

  5. 挂载为设置为类似/mnt/remoteshare的本地路径。

  6. 保存挂载?设置为保存并在启动时挂载

  7. 服务器名称设置为远程 CIFS 服务器的 IP 地址或完全限定域名。

  8. 共享名称设置为远程共享的名称。如果你使用本章节中的食谱创建了共享,名称将是SharedFolder

  9. 凭据文件设置为/root/.smbcredentials

  10. 用户文件所有者设置为root

  11. 组文件所有者设置为users

    提示

    你可以指定另一个用户或为 Samba 创建一个特殊的伪用户,如本章节中的设置 Windows 共享文件夹食谱所描述。

  12. 文件权限设置为0660

  13. 目录权限设置为0770

  14. 点击创建按钮。

https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849OS_06_04.jpg

如何操作…

/etc/fstab目录包含有关系统在启动时挂载的所有文件系统的信息。这包括本地磁盘和远程网络卷。在创建永久 CIFS 挂载时,Webmin 会在你的文件中创建一行额外的内容。此行将具有以下格式:

\\192.168.1.50\sharedfolder	/mnt/remoteshare    cifscredentials=/root/.smbcredentials,nounix,uid=0,gid=100,dir_mode=0770,file_mode=0660     0      0

上述行包含以下信息:

  • 192.168.1.50:这是 CIFS 服务器的 IP 地址或域名。

  • sharedfolder:这是 CIFS 共享的名称。

  • /mnt/remoteshare:这是共享将挂载的本地文件路径。

  • /root/.smbcredentials:这是存储 CIFS 用户名和密码的文件路径。

  • uid=0:这指定了共享文件由root用户拥有。

  • gid=100:这指定了共享文件由users组拥有,通常会允许你系统上的所有用户访问这些文件。

  • file_mode=0660dir_mode=0770:这些指定了所有共享文件的权限——读取、写入和列出——适用于users组的所有成员。

还有更多…

如果你只希望挂载一次 CIFS 共享,而不将其设置为服务器文件系统的永久组件,可以简化此食谱。

按照本食谱中的*如何操作…*部分中的步骤进行操作,但不要创建凭据文件,而是将用户名和密码放入登录名登录密码字段中。同时将保存挂载设置为不保存

这相当于执行以下命令:

$ sudo mount -t cifs //192.168.1.50/sharedfolder/mnt/remoteshare-o username=cifsusername,password=cifspassword,file_mode=0660,dir_mode=0770,nounix,uid=0,gid=100

设置 NFS 共享卷

网络文件系统NFS)是一种分布式文件系统协议,旨在允许系统通过网络共享文件资源。NFS 服务器可以导出其文件系统的一部分,然后远程客户端系统可以将导出的目录挂载为其本地文件系统的一部分。Webmin 可以帮助你使用 NFS 导出目录进行共享。

注意

NFS v3 保留 UNIX 权限和文件所有权,但检查谁是谁的工作由客户端系统完成。这意味着,如果 NFS 服务器上的某个用户的 uid 值为 500,那么该用户在 NFS 客户端系统上的 uid 也应该相同。否则,他的文件可能会被分配给其他用户,或者根本没有用户。这是设置 NFS 服务器和客户端时需要考虑的重要安全因素。确保两台系统具有相同的用户账户。

准备工作

NFS 服务器可能在安装时已经内置在您的系统中。如果是这样,Webmin 应该会识别它并启用 NFS 导出模块。如果您在菜单的网络部分看到该模块,说明 NFS 服务器已经安装;否则,我们需要手动安装它。

根据您的系统,NFS 服务器可能会打包为 nfs-kernel-servernfs-utils。在您的仓库中找到合适的包并安装。有关更多信息,请参考第一章中的安装软件包部分,配置您的系统

转到系统 | 启动与关闭,并验证 rpcbind 服务是否在我们的系统上运行。如果没有,请选择它并点击立即启动并开机启动按钮。

提示

在防火墙保护的系统上运行 NFS 服务器有些棘手。NFS 服务器的各个组件的端口号是动态分配的,可能会随时间变化。您可以通过编辑配置文件强制系统为 NFS 相关服务分配静态端口号。这些文件的位置和语法取决于您的系统发行版和版本。请搜索 nfs iptables 以及您的操作系统名称,查找适合您系统的操作说明。

如果您的系统运行在一个受防火墙保护的安全内部网络中,且防火墙位于另一台机器上,您也可以考虑禁用 NFS 服务器上的防火墙。

如何操作…

在本食谱中,我们将导出 /home/shared 并使其可供远程系统的用户使用,目标 IP 地址为 192.168.1.60。我们将使用更简单且广泛支持的 NFS 版本 3。按照以下步骤设置 NFS 共享卷:

  1. 转到网络 | NFS 导出

  2. 点击添加新的导出链接。

  3. NFS 版本设置为3

    注意

    在设置第一个 NFS 导出时,您可能看不到版本选择屏幕。不要担心,版本 3 是默认设置。

  4. 要导出的目录设置为/home/shared

  5. 导出设置为主机(s),并指定目标主机的 IP 地址或域名,例如 192.168.1.60

  6. 只读?设置为

  7. 信任远程用户设置为除了 root 之外的所有人,如下图所示:https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849OS_06_05.jpg

    提示

    默认情况下,root 用户帐户在 NFS 中会被“压缩”。这意味着来自客户端系统的 root 在服务器上显示为用户 nobody。你可以通过使用信任远程用户:所有人选项来更改这种行为(该选项在导出上设置 no_root_squash 标志)。这涉及到严重的安全问题,只有在绝对必要时才能执行,因为你必须信任所有允许挂载该共享的远程机器上的 root 访问用户。

  8. 点击创建按钮。

  9. 返回到NFS 导出屏幕,点击应用更改按钮。

它是如何工作的…

NFS 导出列在 /etc/exports 中。当创建一个导出时,Webmin 会在这个文件中添加一行,而 NFS 服务器会读取这个文件。例如,我们创建的导出将通过这个简单的条目来表示:

/home/shared	192.168.1.60 (rw)

该行中的第一个字段表示将被导出的目录(/home/shared),后面是可以访问该导出的机器的 IP 地址或域名,以及选项。在这个简单的例子中,唯一的选项是 rw,表示该导出可以以读写模式挂载。

更多内容…

如果你想检查当前由 NFS 服务器提供的导出内容,可以执行以下命令:

$ sudo exportfs

授予多个客户端访问权限

如果你希望将 NFS 导出提供给多台机器,你可以使用通配符来指定主机。例如,要将导出提供给 intra.mydomain.com 域中的所有服务器,你可以将主机设置为 *.intra.mydomain.com

如果你希望指定子网,可以改为使用IPv4 网络子网掩码字段。例如,要让你的导出对所有 IP 地址在 192.168.1.0-192.168.1.255 范围内的机器可用,你可以将IPv4 网络设置为 192.168.1.0子网掩码设置为 24

另见

  • 请参阅本章中的挂载远程 NFS 卷教程,了解如何在客户端机器上使用导出的文件夹。

挂载远程 NFS 卷

如果你的服务器有访问通过 NFS 导出的远程卷,Webmin 可以帮助你将该卷挂载为文件系统的一部分。

准备中

NFS 客户端支持可能会默认安装在你的系统上,或者随着 NFS 服务器软件一起安装。请验证名为 nfs-utilsnfs-common(取决于你的系统)的软件包是否已安装,或者在需要时安装它。有关更多信息,请参阅第一章中的检查已安装的软件包安装软件包教程,设置你的系统部分。

如何操作…

在这个教程中,我们将挂载由 IP 为 192.168.1.50 的远程 NFS 服务器导出的 /home/shared 目录到本地挂载点 /mnt/remoteshare。执行以下步骤来挂载远程 NFS 卷:

  1. 导航到网络 | NFS 导出

  2. 类型下拉菜单中选择网络文件系统(nfs)

  3. 点击添加挂载按钮。

  4. 挂载为设置为/mnt/remoteshare

  5. NFS 主机名设置为192.168.1.50

  6. NFS 目录设置为/home/shared

    提示

    在此阶段,点击NFS 目录字段旁的省略号()按钮是个好主意。应该会出现一个可用导出目录的列表。如果没有出现,可能是网络连接存在问题,或者 NFS 服务器没有正确地将目录导出到我们的客户端系统。

  7. 等待网络接口启动?设置为

  8. 在后台重试挂载?设置为

  9. 允许用户中断?设置为,如下图所示:https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849OS_06_06.jpg

  10. 点击创建按钮。

它是如何工作的…

在启动时,系统会根据/etc/fstab文件中的描述来挂载文件系统。当创建永久挂载点时,Webmin 会在该文件中添加一行,表示对应的 NFS 导出。

这是此操作创建的条目:

192.168.1.50:/home/shared     /mnt/remoteshare    nfs     _netdev,intr,bg     0      0

前面的条目包含以下字段:

  • 192.168.1.50:/home/shared指定了远程服务器的地址和导出目录的路径,中间用冒号分隔。

  • /mnt/remoteshare指定了本地挂载点的位置。

  • nfs指定该条目代表一个 NFS 导出。

  • _netdev,intr,bg字段指定了挂载选项,这是我们在创建共享时选择的。例如,_netdev选项告诉系统等待网络可用后再进行挂载。

  • 最后的两个字段设置为0,表示此文件系统在备份或磁盘检查时不应被考虑。

还有更多…

你不需要在/etc/fstab中做条目来临时挂载 NFS 卷。你可以通过 Webmin 完成这项操作;只需将保存选项设置为不保存。这相当于执行以下命令:

$ sudo mount -t nfs -o intr,bg 192.168.1.50:/home/shared /mnt/remoteshare

挂载 NFS v4 导出

Webmin 还可以挂载 NFS 版本 4 导出的共享。在这个版本的 NFS 中,导出的组织方式略有不同。目录不会逐个导出,而是作为整个伪文件系统的一部分导出。你需要在挂载点挂载整个文件系统,导出的目录会成为挂载点的子目录。

使用 Webmin 创建 NFS v4 挂载点的区别有两点。你应该从类型下拉菜单中选择网络文件系统 v4(nfs4),并将NFS 目录设置为/,因为整个导出文件系统将挂载在一个位置。

参见

  • 查看本章中的设置 NFS 共享卷教程,了解如何在服务器上设置 NFS 导出。

通过 SFTP 向用户提供访问你的服务器的权限

用户可能需要通过互联网传输文件到和从您的服务器。您可以通过简单且安全的方式启用此功能,使用 SSH 文件传输协议 (SFTP)。设置此功能不需要安装除了您可能已经运行的 SSH 服务器外的任何其他软件,以便远程控制您的服务器。所有具有 SSH 访问权限的用户也可以使用 SFTP 客户端程序(如 Filezilla)访问您的服务器。

在此配方中,我们将为用户设置一个帐户,该用户将能够将文件传输到您的服务器,但不具有访问系统命令行 shell 的能力。

准备就绪

如果尚未在系统上安装 SSH 服务器,请按照 第一章 中的 Installing software packages 配方,Setting Up Your System,安装 openssh-server 包。

安装后,按照 第三章 中的 Allowing access to a service through the firewall 配方,Securing Your System,来解除 TCP 端口 22 的阻塞。

如何做…

为了启用用户的 SFTP-only 访问,我们需要将用户的 shell 设置为 sftp-server 程序。让我们首先找到您系统上此程序的位置:

  1. 导航到 Servers | SSH Server | Edit Config Files

  2. 确保从下拉菜单中选择了 sshd_config(服务器配置)文件,而不是 ssh_config 文件(默认客户端配置)。

  3. 找到以 Subsystem sftp 开头的行。在我的 Debian 系统上,这一行如下所示:

    Subsystem sftp /usr/lib/openssh/sftp-server
    

这意味着 SFTP 服务器二进制文件位于 /usr/lib/openssh/sftp-server

下一步是将 SFTP 服务器二进制文件的路径添加到 /etc/shells 文件中列出的可用用户 shell 列表中。您可以执行以下命令作为用户 root

echo '/usr/lib/openssh/sftp-server' >> /etc/shells

按照以下步骤授予用户对服务器的 SFTP 访问权限,而不允许他们登录:

  1. 导航到 System | Users and Groups

  2. 单击要赋予 SFTP 访问权限但不允许其以其他方式登录的用户的名称。

  3. 将用户的 Shell 更改为 sftp-server,应该在可用 shell 的下拉列表中。

用户现在可以通过 SFTP 访问您的服务器。该用户将无法登录到系统的命令行 shell。

注意

使用设为 sftp-server 的 shell 的用户可以根据 Unix 权限访问您服务器的整个文件系统。如果您希望用户访问其他系统上的文件,可以授予用户对其他目录的读写权限。

要创建额外的仅 SFTP 用户,请按照 第二章 中的 Creating a system user account 配方,User Management,但确保将其 Shell 设置为 sftp-server

提示

当用户通过 SFTP 连接到服务器时,他们首先看到的目录列表将是他们的主目录。请记住,你可以将用户的主目录设置为文件系统中的任何位置。你还可以通过在他们的主目录中创建指向系统上他们应该最容易访问位置的符号链接,来简化用户的操作。

它是如何工作的……

用户的 shell 程序是系统在用户登录时启动的第一个程序。如果这个 shell 是 sftp-server,那么用户只能与这个程序进行交互。它是传输文件所必需的,但不会允许用户在系统上执行其他操作或启动其他程序。

用户帐户的定义存储在 /etc/passwd 中。当我们创建帐户或更改用户的 shell 程序设置时,Webmin 会编辑此文件。

另见

  • 有关设置专用 FTP 服务的信息,请查看本章中的 通过 FTP 向用户提供访问权限 配方。

通过 FTP 向用户提供访问权限

文件传输协议 (FTP) 是互联网上最流行的数据交换协议之一。FTP 服务器允许用户进行身份验证并将文件上传到你的机器。此类访问不需要授予用户在服务器上的其他权限,并且你可以限制通过 FTP 访问用户的主目录。

注意

请注意,FTP 是一种非常不安全的协议,因为用户名和密码在没有加密的情况下交换,除非你启用 TLS。如果你的服务器运行在不可信的网络中,建议使用 SFTP。

如何操作……

允许用户通过 FTP 访问系统的第一步是安装 FTP 服务器守护进程。我们将使用稳定且功能丰富的 ProFTPd 服务器,Webmin 对它的支持很好。按照以下步骤设置 FTP 服务器:

  1. 导航到 未使用的模块 | ProFTPD 服务器

  2. 点击链接;这会指示 Webmin 自动下载并安装软件包。

    提示

    在此阶段,如果在系统分发版的包仓库中找不到 ProFTPD 软件包,你可能会遇到问题。大多数发行版包含 ProFTPD 软件包,但你可能需要启用额外的仓库。

    例如,如果你正在运行来自 RedHat 家族的 Linux 发行版(如 RHEL、CentOS、Fedora 等),你应该通过执行以下命令来添加 企业 Linux 额外软件包 (EPEL) 仓库:

    $ sudo rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
    
    

    在 32 位(i386)系统上,将 x86_64 替换为 i386

    在撰写本书时,EPEL 索引的最新版本是 6.8;请检查 EPEL 网站上当前的最新版本,并根据需要修改命令中的 URL。更多信息可以在 fedoraproject.org/wiki/EPEL 找到。

  3. 刷新页面以更新 Webmin 的界面。

  4. 导航到系统 | 启动和关机,勾选proftpd旁边的框,并点击立即启动并设置为开机启动按钮。

如果服务器未启动,请运行以下命令检查配置:

$ sudo proftpd --configtest

你可能会看到类似以下的警告:

warning: unable to determine IP address of 'server-name'

这意味着服务器无法基于其主机名来确定自己的 IP 地址。修复这一问题的最简单方法是按照以下步骤操作:

  1. 导航到网络 | 网络配置 | 主机地址

  2. 点击添加新主机地址链接。

  3. IP 地址指定为127.0.0.1,将主机名指定为server-name。只需将server-name替换为你的服务器主机名。

  4. 点击创建按钮。

    注意

    这将向/etc/hosts文件中添加以下行:

    127.0.0.1   server-name
    
    

打开防火墙中的 FTP 访问

如果客户端从防火墙后连接到服务器,应该使用被动模式来建立 FTP 连接。按照以下步骤告诉 ProFTPd 应使用哪个端口范围进行被动连接,并在防火墙中打开这些端口以及端口21

  1. 导航到服务器 | ProFTPD 服务器 | 网络选项

  2. PASV 端口范围设置为 IANA 推荐的动态端口号范围。例如,设置为6000060099之间。此范围的大小决定了有多少客户端可以以被动模式同时连接到你的服务器。

  3. 点击保存按钮。

  4. 返回到ProFTPd 服务器模块页面,点击应用更改按钮。

  5. 请参照第三章中通过防火墙允许访问服务的操作步骤,保护系统,并允许在端口21以及上面设置的端口范围60000-60099上接收 TCP 连接,如下图所示:

https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849OS_06_07.jpg

此时,你的 FTP 服务器应该已经启动并运行。尝试使用 FTP 客户端从另一台计算机连接到服务器。尝试以除 root 之外的任何普通用户身份登录。

提示

如果你使用的是 SELinux,可能无法登录到 FTP 服务器,并且在 ProFTPd 日志中可能会看到奇怪的Permission denied错误消息。如果是这种情况,你需要设置一个 SELinux 标志,允许 FTP 访问。你可以通过执行以下命令之一来实现:

若要仅允许 FTP 访问用户的主目录,请使用以下配置:

$ sudo setsebool ftp_home_dir on

若要允许 FTP 访问整个文件系统,请使用以下配置:

$ sudo setsebool allow_ftpd_full_access on

它是如何工作的……

Webmin 能够使用你的系统的包管理系统下载并安装 ProFTPd 软件包。该软件包附带一个启动脚本,通过该脚本我们启动了服务器并将其设置为在系统启动时自动启动。

被动模式和主动模式 FTP 连接

文件传输协议使用两条同时连接在服务器和客户端之间交换数据。一条连接用于发送指令(命令通道),另一条用于传输文件(数据通道)。命令通道始终由客户端打开,客户端通过专门用于 FTP 的端口(通常是端口号 21)与服务器建立连接。然而,数据通道可以通过两种不同的方式打开:

  • 主动模式(非被动):服务器主动打开数据连接到客户端。这种方法并不常见,因为客户端通常隐藏在多个防火墙和 NAT 后面,这使得连接变得不可能。

  • 被动模式:在这里,服务器向客户端发送一个端口号,然后被动地等待客户端连接到该端口。端口号是从短暂端口号范围中动态分配的。互联网号码分配局IANA)建议使用 49152 到 65535 之间的数字作为动态端口号。

全局配置和虚拟服务器

ProFTPd 服务可以运行多个虚拟服务器,并为每个服务器提供不同的配置。每个虚拟服务器都运行在不同的 IP 地址上,因此,如果你的服务器通过不同的接口连接到网络或多个网络,你可以在每个 IP 上设置一个具有不同配置的 FTP 服务器。特定于服务器的设置可以通过 Webmin 的虚拟服务器部分访问。它将包含至少一个配置——默认服务器全局配置部分中的设置适用于所有服务器,但每个虚拟服务器可以选择是否使用默认的全局值,或者覆盖它。在大多数情况下,你的服务器将仅运行一个虚拟服务器。在这种情况下,存储在全局配置默认服务器部分的设置没有实际区别。你应当记住这一点,因为如果你在全局配置中更改了设置,而该更改似乎没有效果,可能是因为在默认服务器配置中被覆盖了。

还有更多…

ProFTPd 服务器非常灵活。这里列出一些你可能希望设置的常见选项。

限制用户访问主目录

如果你希望用户仅能通过 FTP 访问其主目录中的文件,请执行以下步骤:

  1. 导航到服务器 | ProFTPD 服务器

  2. 虚拟服务器部分点击默认服务器

  3. 点击文件和目录

  4. 限制用户到目录部分,选择主目录

  5. 点击保存按钮。

拒绝某些用户的 FTP 访问

如果你希望拒绝某些用户通过 FTP 访问,请执行以下步骤:

  1. 导航到服务器 | ProFTPD 服务器 | 拒绝的 FTP 用户

  2. 你将看到一份被拒绝通过 FTP 访问的系统用户列表。将你希望阻止通过 FTP 访问服务器的用户的用户名添加到列表末尾(每行一个用户名)。

  3. 点击 保存 按钮。

仅限 FTP 用户

你可以允许用户通过 FTP 访问你的服务器,但通过执行以下步骤防止他们通过其他方式登录到你的服务器:

  1. 转到 系统 | 用户和组

  2. 点击你想要限制登录的用户的用户名。

  3. 将用户的 Shell 设置为 /usr/sbin/nologin

    注意

    nologin 可执行文件可能位于系统的其他路径下,例如 /sbin/nologin

  4. 点击 保存 按钮。

另见

  • 你可以在不安装额外 FTP 服务器的情况下启用服务器上的文件共享,而是依赖 SSH 服务器。有关更多信息,请查看本章中的通过 SFTP 让用户访问你的服务器这一部分。

第七章:备份系统

在本章中,我们将讨论以下主题:

  • 备份配置文件

  • 从备份恢复配置文件

  • 自动备份配置文件

  • 创建选定目录的备份

  • 创建整个挂载点的备份

  • 备份到远程主机

  • 设置自动备份

  • 备份数据库

引言

存储在服务器上的数据通常比存储数据的服务器硬件更为重要和有价值。保持服务器的安全性和数据的安全是系统管理员的首要任务之一。尽管我们希望避免硬件故障或恶意安全攻击等问题,但我们需要为解决这些问题的后果做好准备。定期备份数据对于从意外灾难中恢复至关重要。你还应该定期测试所创建的备份,确保它们在需要时能够恢复数据。

在本章中,我们将提供一些示例,演示 Webmin 如何帮助你备份以下内容:

  • 服务器上的数据文件,例如应用程序的源代码和用户输入或上传的数据。请参阅创建选定目录的备份

  • 存储在数据库中的信息。请参阅备份数据库

  • 配置设置。请参阅备份配置文件

  • 整个服务器文件系统。请参阅创建整个挂载点的备份

在设计备份策略时,请牢记以下事项:

  • 完整备份或增量备份:服务器或目录的完整备份会存储该位置的所有文件。此类备份可能非常大,即使是压缩后,创建备份也可能需要很长时间。另一方面,增量备份只会存储自上次备份以来已更改的文件。这会占用更少的空间,并且可以迅速完成。然而,增量备份恢复起来稍微有些困难,因为你必须先恢复上一个完整备份,然后再从增量备份中添加自上次完整备份以来创建的文件。

  • 在线或离线备份:在线备份可以被服务器或其他计算机轻松访问,而离线备份则存储在磁带或断开连接的磁盘上,通常放在架子上。没有人工干预,无法访问它。在线备份更方便,但如果恶意攻击者接管了你的系统,他/她可以将其删除。最好也保留离线备份副本。

  • 本地或异地备份:将备份保存在与服务器同一建筑物中,在火灾或其他灾难发生时无法保护数据。你可能希望将额外的备份存放在另一个远程位置。

一个完美的备份策略应该存储每日(甚至每小时)的增量备份,并定期(每周或每月)进行完整备份,最好是以离线和异地形式保存。你保留的备份数量将决定你能追溯多长时间来恢复丢失或损坏的文件。

提示

备份可能包含敏感数据,如密码或其他机密信息。请确保安全存储备份,可能考虑加密存储在异地的文件。

在本章中,我们将演示如何创建备份,但你需要确保备份文件存储在安全位置并定期进行测试。

备份配置文件

你花费了大量时间来设置系统并优化其配置,以获得最佳的性能和功能。删除配置文件或甚至做出不最优的更改可能会带来严重后果,尤其是在生产环境中。在进行更改之前,你应先备份配置文件,并保持备份文件,以便在需要时恢复到先前的配置。Webmin 提供了一个帮助你做到这一点的功能。

准备工作

在本教程中,我们将创建包含当前日期的备份文件名。我们需要启用此功能。因此,在开始备份过程之前,进入Webmin | 备份配置文件 | 模块配置,并对是否进行备份目标的 strftime 替代?的问题回答

如何操作…

执行以下步骤以备份配置文件:

  1. 在根目录下创建一个用于存储本地备份的目录,例如/backups

    提示

    确保你的备份目录存储在一个有足够磁盘空间的分区上,以免意外填满整个磁盘。将/backups放在单独的分区或/var/backups目录中可能是一个好主意。

    你还应该保护备份位置免受窥探。你可以使用权限和 ACL 来实现这一点,具体操作可以参考第六章中更改文件所有权和权限部分的更改目录的 ACL一节,管理系统文件

  2. 进入Webmin | 备份配置文件

  3. 选择立即备份选项卡。

  4. 要备份的模块列表中,选择你打算操作的模块,例如Webmin 配置

    提示

    你可以备份多个模块,甚至所有模块,以获取更完整的备份。

  5. 备份目标设置为本地文件,并为文件名指定以下路径:/backups/webmin-config-%Y%m%d%H%M.tgz

  6. 包含在备份中设置为服务器配置文件https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_07_03.jpg

  7. 点击立即备份按钮。

Webmin 配置文件将以文件形式备份到/backups目录中。文件名将包含备份的日期和时间。

它是如何工作的…

Webmin 知道哪些配置文件被它帮助配置的服务使用。当你备份某个模块的配置文件时,Webmin 会将这些文件压缩成一个 TAR 文件并存储在你指定的位置。

由于我们激活了 strftime 替换,前面带有百分号(%)的模式将被日期组件替换。例如,%Y 将被年份数字替换,%m 被月份数字替换。完整的可用标记列表可以通过点击是否对备份目标执行 strftime 替换?链接在模块配置界面中找到。

提示

Webmin 仅备份它所知道的文件。如果你想对服务器上的所有配置文件进行完整备份,你应该考虑备份整个/etc目录。更多信息请参考本章中的创建指定目录的备份章节。

还有更多…

Webmin 允许你使用 FTP 或 SFTP(SSH)协议将文件备份到远程服务器。操作步骤与前面部分列出的一样,唯一不同的是需要将备份目的地选项更改为FTP 服务器SSH 服务器。为了将文件传输到远程服务器,你还需要指定远程服务器的 IP 地址或域名,以及远程服务器上的用户名和密码。你还可以选择将备份文件下载到你用来连接 Webmin 的计算机上,选择在浏览器中下载作为目的地选项。

另见

  • 本章还有其他两个与 Webmin 配置文件备份相关的章节。请参阅本章中的从备份恢复配置文件自动备份配置文件章节。

从备份恢复配置文件

如果你使用 Webmin 创建配置文件的备份,当你在备份后修改了设置并遇到问题时,可以使用这些备份文件恢复系统设置。

如何操作…

恢复配置备份,请按照以下步骤操作:

  1. 转到Webmin | 备份配置文件

  2. 选择立即恢复选项卡。

  3. 要恢复的模块列表中,选择与您要恢复其配置的软件相关的模块,例如Webmin 配置

  4. 设置为本地文件,点击省略号()按钮打开文件选择器,选择备份文件。

    提示

    你还可以选择一个位于远程 FTP 或 SSH 服务器上的文件,或从你用来连接 Webmin 的计算机上传文件。

  5. 应用配置?设置为

  6. 仅显示将恢复的内容?设置为

  7. 点击立即恢复按钮。

工作原理…

Webmin 在备份档案内保持每个模块使用的文件的索引。当您选择一个或多个模块进行恢复时,Webmin 将用备份的配置文件替换它们的活动配置文件。如果有必要,Webmin 将重新启动使用恢复的配置文件的服务。

还有更多…

在恢复实际备份之前,最好先检查从备份中恢复的文件,而不实际做出任何更改。为此,请按照前面的步骤操作,但将仅显示将要恢复的内容?选项设置为

如果需要,您还可以检查存储在备份中的配置文件的内容。毕竟,备份只是一个压缩的TAR档案,所以您可以解压文件并查看它们。请查看第六章的管理服务器上的文件和目录示例,了解如何在不离开 Webmin 的情况下进行此操作。

另请参见

  • 本章节中还有两个与 Webmin 备份配置设置文件相关的示例。请查看本章节中的备份配置文件自动备份配置文件示例。

自动备份配置文件

Webmin 允许您设置一个定时计划,自动创建系统配置文件的备份。您可以使用此选项来保留系统配置更改的滚动存档。

准备工作

在这个示例中,我们将创建包含当前日期的备份文件名。我们需要启用此功能,因此在开始之前,请导航到Webmin | 备份配置文件 | 模块配置,并对问题是否进行备份目标的 strftime 替换?回答

如何操作…

执行以下步骤以自动备份配置文件:

  1. 在根目录下创建一个目录来存储本地备份,例如/backups

    提示

    确保备份目录存储在具有足够磁盘空间的分区上,以避免意外填满整个磁盘。将/backups放在单独的分区上或放置在/var/backups中可能是一个好主意。

    您还应该保护备份位置免受窥探。您可以使用权限和 ACL 来做到这一点,正如在第六章的更改目录的 ACL部分中所解释的那样,管理系统上的文件

  2. 导航到Webmin | 备份配置文件

  3. 选择定时备份选项卡。

  4. 点击添加一个新的定时备份链接。

  5. 要备份的模块列表中选择所有模块。

  6. 备份目标设置为本地文件,并为文件名指定以下内容:/backups/system-config-%Y%m%d%H%M.tgz

  7. 备份中包含的内容设置为服务器配置文件

  8. 打开备份计划部分。

  9. 电子邮件结果发送到地址字段中提供你的电子邮件地址。

  10. 何时发送电子邮件设置为始终

    提示

    在收到几封确认备份正常工作的电子邮件后,你可以回来将此选项切换为仅当发生错误时

  11. 启用定期备份?设置为,选择简单计划,然后从下拉菜单中选择每天(午夜时分)

  12. 点击创建按钮。

系统配置文件将每天午夜备份到/backups目录中的一个文件。该文件名将包含备份的日期和时间。

工作原理…

Webmin 创建了一个cron作业,该作业在每个午夜运行。该任务会创建一个压缩的 TAR 归档,包含 Webmin 所知道的所有配置文件。如果在创建备份归档时发生错误,将会发送电子邮件到提供的地址。

另见

  • 查看本章的从备份恢复配置文件部分,以了解在出现问题时如何恢复设置。

创建选定目录的备份

Webmin 允许你轻松地将目录内容备份到一个TAR(磁带归档)文件中。备份任务会被保存,因此你将来可以通过单击一次来重新执行备份。

注意

TAR 文件格式保留了有关每个文件的所有权和权限设置的信息。然而,它并不存储文件的扩展属性。如果你正在使用扩展属性并且使用的是 ext 文件系统,应该使用 dump 命令。有关使用 dump 命令进行备份的更多信息,请参阅本章的创建整个挂载点的备份

准备工作

在本教程中,我们将创建包含当前日期的备份文件名。我们需要启用此功能。所以,在开始之前,请导航到系统 | 文件系统备份 | 模块配置并对问题是否执行备份目标的 strftime 替换?回答

如何操作…

  1. 在根目录下创建一个目录来存储备份,例如/backups

  2. 导航到系统 | 文件系统备份

  3. 在文本框中输入你希望备份的目录路径,例如/var/www

  4. 选择TAR 格式选项。

  5. 点击添加一个新的目录备份按钮。

  6. 备份到设置为文件或磁带设备,并在文本框中输入目标备份文件名,例如 /backups/www-%Y%m%d%H%M.tgz

  7. 打开备份选项部分。

  8. 压缩归档?设置为是,使用 gzip

  9. 点击立即创建并备份按钮。

目录的备份将以压缩的TAR归档形式创建,并保存到指定的目标位置。文件名将包括创建的日期和时间。

工作原理…

Webmin 会在指定的备份位置创建所选目录的 Gzip 压缩 TAR 归档。这大致等同于在命令行中运行以下命令:

$ tar -czf /backups/backup-destination.tgz /backup/source/directory

在创建备份之前,Webmin 还会执行 sync 命令,刷新文件系统缓冲区,将未写入的更改提交到磁盘。

还有更多…

当需要从备份中恢复文件时,您有多种选择。您可以先将文件恢复到一个单独的目录,然后再将它们移动到原始位置。您还可以直接将文件从归档恢复到原始位置。

从备份归档中恢复文件

以下步骤会将文件提取到临时位置,您需要将它们移动到最终位置:

  1. 创建一个临时目录(/tmp/restore),我们将在其中存储恢复的文件,然后再将它们放回原来的位置。

  2. 导航到系统 | 文件系统备份

  3. 如果系统提示选择恢复的文件系统类型,请选择TAR

  4. 点击恢复文件系统备份按钮。

  5. 从文件或设备恢复设置为文件或磁带设备,然后使用文件选择器(**…**按钮)找到您想要恢复的备份归档。

  6. 恢复到目录设置为/tmp/restore

  7. 仅显示备份中的文件?设置为

  8. 如果您的备份归档是使用 Gzip 压缩的,请将解压归档?设置为是,使用 gzip

  9. 点击立即恢复备份按钮。

  10. 将您想要恢复的文件从/tmp/restore目录移动到原始位置。

  11. 删除/tmp/restore目录。

    提示

    若要将文件自动放回原位置,请将根目录(/)作为恢复到目录。请注意,选择此选项会将备份中的文件放回原处,但不会删除自备份以来创建的文件。如果您只想恢复自备份以来已删除的文件,可以使用**不覆盖文件?**选项。

另见

  • 请参阅本章中的创建整个挂载点的备份备份到远程主机设置自动备份的相关内容,了解更多关于系统文件备份的信息。

创建整个挂载点的备份

Webmin 允许您设置使用 UNIX dump 命令的备份任务,以归档整个 ext 文件系统的挂载点。与使用 TAR 创建归档相比,这种策略有许多优势。首先,文件系统中包含的所有信息都得以保留,包括扩展文件属性、ACL、特殊文件等。

其次,dump 允许您创建增量存档,仅包含自上次备份以来更改的文件。dump 命令使用级别概念区分完整和部分备份。级别 0 备份将存档所有文件(完整备份),而级别 1 将仅存档自上次级别 0 备份以来更改的文件。级别 2 备份将存档自上次级别 1 备份以来更改的所有文件,依此类推。共有 10 个级别可供选择,您不需要使用连续级别编号。一个可能的 dump 策略是每月执行一次级别 0 备份,每周执行一次级别 3 备份,每天执行一次级别 6 备份。这意味着每日备份相对较小且速度快,因为它们仅跟踪本周内的更改。

如果您使用 dump 的增量备份策略,您将需要从每个级别的存档中恢复备份。例如,如果您遵循上一段描述的 0-3-6 策略,则应从最近的级别 0 开始恢复文件,然后是最近的级别 3,最后是最近的级别 6 存档。

提示

dump 命令旨在将备份存档写入磁带驱动器。Webmin 将能够帮助您将文件写入磁带设备;在创建备份任务时,只需指定设备名称而不是目标文件名。

准备工作

在开始之前,请在系统上安装 dump 包,或检查其是否已安装。有关更多信息,请参阅 第一章 中的 安装软件包 配方,设置您的系统

您还应准备备份目的地,该目的地位于除您计划备份的文件系统之外的其他文件系统上。这可以是外部驱动器、网络文件系统或磁带设备。在本示例中,假设您正在备份到作为 /media/backups 挂载的外部磁盘。

如何做…

  1. 导航到 系统 | 文件系统备份

  2. 在文本字段中,输入要备份的挂载点,例如 /

  3. 单击 添加新目录备份 按钮。

  4. Backup to 设置为 文件或磁带设备 并在文本字段中输入目标备份文件名,例如 /media/backups/root-fs-level0-%Y%m%d%H%M.ext4dump

    注意

    不需要文件扩展名,但将来快速检查备份存档中包含的文件系统类型可能会有用。根据您的系统更改 ext4ext3ext2

  5. 打开 备份选项 部分。

  6. Update /etc/dumpdates file? 设置为

  7. Dump level 设置为 0 (完整备份)

  8. Compress data? 设置为 是,级别为 并输入 2

  9. 单击 创建并立即备份 按钮:https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_07_01.jpg

将整个文件系统的挂载点备份为压缩的 dump 存档到指定的目的地。文件名将包括创建的日期和时间。

工作原理…

Webmin 使用dump命令创建一个备份档案,其中包含指定源目录挂载的文件系统中的所有文件。文件系统中包含的所有元数据也被存储在档案中。备份通过bzip算法进行压缩,以减小档案的大小。

还有更多…

为了创建一个增量备份,使其更快完成并使用更少的磁盘空间,请创建一个非 0 级别的dump备份。

创建增量备份档案

另一级别的dump档案将只包含自上次进行较低级别备份以来修改过的文件。按照前面章节中的相同步骤创建增量备份,但将Dump 级别参数更改为其他值,并确保文件名(或磁带标签)反映此档案包含该级别的备份。请记住,您需要所有级别的最新备份档案,包括 0 级备份,才能恢复所有备份的文件。

从备份档案恢复数据

要从dump档案恢复备份,请按照以下步骤操作:

  1. 导航到系统 | 文件系统备份

  2. 如果系统提示选择恢复的文件系统类型,请选择您备份的文件系统类型,例如EXT4

  3. 点击恢复文件系统备份按钮。

  4. 从文件或设备恢复设置为文件或磁带设备,并使用文件选择器(**…**按钮)来查找您要恢复的备份档案。

  5. 恢复到目录设置为已备份的挂载点位置,例如根挂载点的//home/等。

    提示

    您不必输入原始路径作为恢复目标。您可以输入另一个路径,将备份提取到不同的位置。

  6. 恢复的文件设置为备份中的所有文件

  7. 仅显示备份中的文件?设置为

  8. 点击立即恢复备份按钮。

    提示

    通过选择**仅显示备份中的文件?**选项,您可以查看备份档案中包含的文件。

    如果您只想恢复少数文件或目录,请将恢复的文件设置为列出的文件,并输入以空格分隔的路径列表。

另见

  • 查看本章中的备份到远程主机设置自动备份章节,以获取有关如何备份系统文件的更多信息。

备份到远程主机

将备份档案存储在本机的本地硬盘上,并不能保护您免受硬件故障或恶意攻击。当机器出现故障时,备份也会丢失。因此,备份应存储在另一台远程服务器上。

最简单的备份远程主机的方式是使用网络文件共享协议,如 NFS 或 CIFS。首先,在远程服务器上创建一个网络卷,然后将该卷挂载到本地服务器上。现在,你可以像访问本地存储的文件一样,轻松地备份远程系统上的文件。查看第六章,管理系统文件,获取使用 NFS 或 CIFS 设置网络文件共享的说明。

如果你只有 SSH 访问权限,或者希望备份到远程磁带设备,可以按照此处所列的步骤进行操作。我们将演示 Webmin 如何帮助你通过 SSH 设置tardump来进行远程备份。

准备工作

我们服务器的root用户需要通过 SSH 访问远程服务器,而无需输入密码。SSH 将使用密钥而非密码;因此,我们需要指示远程服务器接受该密钥。

首先找到我们服务器root用户的公钥。默认情况下,密钥存储在名为/root/.ssh/id_rsa.pub的文件中。

如果此文件不存在,你可能需要为服务器的root用户创建一个 SSH 公钥和私钥对。可以通过在终端中输入以下命令来完成,但需要将root@my_server替换为你服务器root用户的电子邮件地址:

# ssh-keygen -P "" -f "/root/.ssh/id_rsa"-t rsa -C "root@my_server"

下一步是指示远程服务器接受使用此密钥的 SSH 连接。假设我们要以名为backups的用户身份登录远程服务器。我们需要将本地服务器/root/.ssh/id_rsa.pub文件的内容追加到远程服务器上用户主目录中的/home/backups/.ssh/authorized_keys文件末尾。

注意

通过在用户主目录中名为~/.ssh/authorized_keys的文件中放置任何密钥所建立的连接,将被视为合法的、授权的连接。

完成此操作后,我们服务器的root用户应该能够通过 SSH 以backups用户身份登录到远程服务器,而无需提供密码。

最后一步是确保远程主机上安装了rmt命令,并注意rmt二进制文件的路径。你可以通过以root用户身份运行命令which rmt来检查。如果命令未找到,请在远程主机上安装rmttar软件包。

如何操作…

你可以将 Webmin 中创建的任何文件系统备份任务转换为远程备份。首先,按照本章中创建指定目录的备份创建整个挂载点的备份的步骤创建一个备份任务。然后执行以下步骤进行远程备份:

  1. 导航到系统 | 文件系统备份

  2. 单击要备份的目录列中的链接,以修改你想要的备份。

  3. 备份到 选项切换为 主机,并输入远程主机的 IP 地址或域名,后跟用户名和远程服务器上备份文件的路径。

  4. 远程备份命令 设置为 SSHhttps://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_07_02.jpg

  5. 打开 备份选项 部分。

  6. 如果您正在修改一个 TAR 备份任务,将 远程系统中的 rmt 路径 设置为 rmt 二进制文件在远程服务器上的路径。

  7. 点击 保存并立即备份 按钮。

备份任务将会运行,并且一个包含备份的归档文件将在远程服务器上指定的位置创建。

它是如何工作的…

tardump 命令的现代版本能够使用 SSH 协议,将备份归档通过互联网安全地传输到远程备份服务器。Webmin 会帮助您设置运行 tardump 通过 SSH 所需的稍微复杂的选项。

设置自动备份

备份应定期执行。您可以使用 cron 来自动化此过程,并在指定的时间运行备份任务。Webmin 的备份功能使这变得非常简单。

如何操作…

您可以将 Webmin 中创建的任何文件系统备份任务转换为自动备份。首先按照本章中 创建选定目录的备份创建整个挂载点的备份 配方中的描述创建一个备份任务。然后执行以下步骤来设置自动备份:

  1. 导航至 系统 | 文件系统备份

  2. 点击 要备份的目录 列中的链接,以修改您想要的备份。

  3. 打开 备份计划 部分。

  4. 设置 计划备份启用?启用,按以下所选时间

    提示

    如果您有一系列希望一起运行的备份任务,Webmin 允许您安排在一个备份完成后,运行下一个备份任务。

  5. 选择 简单计划每周(星期天)

    提示

    如果需要,可以选择更复杂的计划,标记任务将在每月的哪几分钟、几小时和哪几天执行。

  6. 电子邮件计划输出 设置为您的电子邮件地址。

  7. 点击 保存 按钮。

它是如何工作的…

Webmin 会在系统 root 用户的 cron 表中添加一个条目,启动备份任务。每当 cron 在预定时间运行时,备份任务将会启动。当备份任务完成时,您应该会收到一条关于任务成功或失败的消息。

备份数据库

Webmin 可以帮助您设置一个计划,自动备份托管在系统上的所有数据库。Webmin 会将数据库作为 SQL 文件转储到本地文件系统的目录中,或本地挂载的远程网络卷中。

提示

您可以将数据库的备份保存到本地目录,并将该目录的备份传输到远程服务器。您还可以指示 Webmin 运行一个命令,在将本地备份传输到远程位置后删除旧的本地备份。

如何操作…

  1. 根据你使用的数据库系统,在 Webmin 主菜单的服务器部分点击MySQL 数据库服务器PostgreSQL 数据库服务器链接。

  2. 点击备份数据库按钮。

  3. 备份到目录字段中,输入一个目录,备份将保存在该目录下,例如/backups/databases

  4. 是否创建目标目录?设置为。Webmin 将创建一个具有适当所有者和权限的目录,以便数据库系统将输出写入其中。

  5. 备份计划部分,将启用定时备份?设置为是,在下面选择的时间

  6. 将备份状态邮件发送到字段中,输入你的电子邮件地址。

  7. 发送电子邮件通知设置为所有备份

    提示

    在你收到几封电子邮件确认备份按预期工作后,你可以回来将此选项切换为仅在发生错误时

  8. 选择简单计划并选择每日(午夜时)

    提示

    选择一个更复杂的计划—如果需要的话—通过标记任务执行时的分钟、小时和日期。

    https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_07_04.jpg

  9. 点击保存按钮。

    提示

    你可以点击立即备份按钮,立即将数据库保存为 SQL 文件。

它是如何工作的…

Webmin 访问你的数据库系统,并为服务器上的每个数据库创建一个 SQL 转储文件。数据库文件将存储在指定目录的磁盘中。当你为自动备份设置计划时,Webmin 会将一项任务添加到root用户的 cron 表中,以在指定的时间创建备份。当备份任务完成时,Webmin 会将电子邮件发送到指定的地址,但我们将其设置为仅在发生问题时发送电子邮件,以避免不必要的垃圾邮件。

另见

  • 请查看第九章,运行 MySQL 数据库服务器,以及第十章,运行 PostgreSQL 数据库服务器,了解更多关于使用 Webmin 帮助下运行数据库服务器的信息。

第八章:运行 Apache Web 服务器

在本章中,我们将涵盖以下几点内容:

  • 在您的系统上安装 Apache

  • 重启 Apache

  • 启用 Apache 模块

  • 创建一个静态 HTML 网站

  • 创建虚拟主机

  • 为目录、文件和位置设置选项

  • 创建一个受密码保护的网站

  • 显示目录中文件的列表

  • 重定向传入的请求

  • 设置带有 SSL 的加密网站

  • 记录传入请求和错误

  • 使用 Webalizer 分析日志文件

介绍

对大多数人来说,Web 就是互联网。自从 1990 年代以来,万维网已成为几乎每个人日常生活的一部分。网站为我们提供信息;社交媒体让我们与他人沟通;在线零售让我们可以在全球购物。超文本传输协议HTTP)是使互联网所有这些杀手级功能成为可能的基础。

现代 Web 浏览器能够做的不仅仅是显示超文本。由于包含了 JavaScript 运行时,Web 已经成为最广泛使用的计算平台。程序员如果想覆盖尽可能多的用户群体,就无需为每个操作系统创建一个版本的应用程序。相反,他们可以创建一个 Web 应用程序,能够在每个支持浏览器的设备上运行。

这种安排对系统管理员来说也是一个福音,因为他们可以选择将许多服务以 Web 应用程序的形式实现,而不必担心在许多客户端计算机上安装支持的软件。等到升级时,更新一个服务器比更新每个客户端系统要高效得多。

有很多 Web 服务器可以选择,但 Apache 无疑是最受欢迎的解决方案,Webmin 对它的支持也非常好。另一个目前正在获得流行的开源 Web 服务器是 Nginx,但 Webmin 对它的支持目前非常有限。

在本章中,我们将讨论与设置 Apache、配置 Apache 以提供静态网站以及分析日志文件相关的主题。在第十一章,运行 Web 应用程序中,我们将讨论与运行动态网站和 Web 应用程序相关的内容。

在您的系统上安装 Apache

一些操作系统默认包含 Apache Web 服务器。其他系统则在其软件库中提供 Apache 包,您可以快速安装带有默认配置的 Apache。

准备工作

首先检查 Apache 是否已经安装在您的系统上。如果已经安装,Webmin 应该能够识别它,并将 Apache Webserver 模块放入其菜单中的 服务器 部分。

如何操作…

按照以下步骤在您的系统上设置 Apache:

  1. 按照第一章中安装软件包的步骤,找到并安装 Apache Web 服务器包。你应该使用可用的 Apache 2 包。

    注意

    根据你的系统,Apache 版本 2 包可能被命名为apache2或仅为httpd

  2. 如果你使用的是iptables防火墙,按照第三章中通过防火墙允许访问服务的步骤,允许通过端口80的传入连接,如果你计划使用 HTTPS,还需要通过端口443https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_08_01.jpg

  3. 导航到服务器 | Apache Web 服务器,点击启动 Apache链接来启动 Web 服务器(如果安装过程中没有自动启动)。

  4. 为了验证 Apache 是否正常工作,使用浏览器访问 URL http://your.server,其中 your.server 是你安装 Apache 的机器的域名或 IP 地址。

Apache 测试页面应该会问候你。它可能会简单地显示**它工作了!**或者提供更多关于如何在你的操作系统上运行 Apache 的信息。

它是如何工作的…

操作系统的包维护者为你的系统提供了一个工作的 Apache 默认配置。安装该包并启动 HTTP 服务器守护进程应该足以为进一步自定义提供一个功能正常的起点。

HTTP 服务器默认监听 80 和 443 端口。当你用浏览器访问 Web 服务器时,它会在发出标准的 http:// 请求时尝试连接到 80 端口,或者在发出安全的 https:// 请求时连接到 443 端口。你应该确保这些端口上的连接不会被系统防火墙丢弃。

可以配置 Apache 监听其他端口的连接,但此时每次连接都必须在 URL 字段中输入端口号。这类似于连接到 Webmin,它运行在非标准的 HTTP 端口 10000 上。

还有更多…

我们不希望每次服务器重启时都手动启动 Apache,因此我们应该激活软件包中包含的init脚本,让服务自动启动。我们还应该监控服务器,并在 HTTP 服务不可用时提醒我们。

设置 Apache 在系统启动时启动

按照以下步骤在系统启动时启动 Apache:

  1. 导航到系统 | 启动和关机

  2. 选择 Apache Web 服务器的 init 脚本旁边的复选框(它可能会被命名为apache2httpd或类似名称)。

  3. 点击开机启动按钮。

监控 Apache 是否正常运行

如果 HTTP 服务器崩溃,用户将无法连接到你的网站或使用你的 Web 应用程序。如果发生这种情况,你应该尽快收到通知,以便采取适当的措施重启并修复服务器。

第五章,监控你的系统,详细介绍了与监控服务器状态相关的话题。特别查看一下 接收服务停止时的电子邮件通知自动重启停止运行的服务 这两个配方。同时,从第二台机器监控你的服务器也是一个好主意,这样即使整个服务器不可用,你也能收到故障通知。更多信息,请查看配方 监控远程服务器

另见

  • Apache 拥有模块化架构,安装并激活额外组件可以扩展其功能。查看本章中的配方 启用 Apache 模块 以获取更多信息。

重启 Apache

每次你修改 Apache Web 服务器的配置,或者通过额外的模块(如 mod_wsgi)修改与 Apache 一起运行的运行时环境(如 PHP)或 Web 应用时,都需要重启服务器守护进程。

操作方法…

使用 Webmin 重启 Apache 非常简单:

  1. 导航到 服务器 | Apache Web 服务器

  2. 点击 应用更改 链接来重启服务器。

工作原理…

在 Webmin 的 Apache Web 服务器模块中点击 应用更改 会让 Apache 优雅地重启。这会使 Apache 完成所有请求的处理,但停止接受新的连接。当 Apache 完成发送最后一个响应后,它会重启并恢复接受连接。从用户的角度来看,这会导致一些请求完成的时间变长,但重启过程应该是透明的。重启后,Apache 会按照新的配置文件工作。

你也可以使用以下命令以类似的方式重启 Apache:

$ sudo apachectl graceful

还有更多…

通过 Webmin 修改 Apache 配置,可以避免语法错误的烦恼。然而,有时你需要手动进行自定义配置修改。这样做时,你应该在重启服务器之前检查配置语法,因为语法错误会导致 Apache 在重启后无法正常启动。

验证 Apache 配置语法

为了检查配置文件是否没有错误(否则 Apache 无法启动),请执行以下命令:

$ sudo apachectl configtest

如果一切正常,命令将返回 Syntax OK 的消息。

启用 Apache 模块

Apache HTTP 服务器采用模块化架构。可以通过添加额外的模块来扩展服务器功能。虽然这些模块可以编译进服务器本身,但在大多数系统中,它们是作为共享库单独安装的。Apache 的配置文件决定了服务器启动时加载哪些模块。

Webmin 提供了一个简单的表单来启用和禁用 Apache 模块。在这个配方中,我们将激活 mod_rewrite 模块。

操作方法…

按照以下步骤启用 Apache 模块:

  1. 转到 服务器 | Apache Webserver | 全局配置 | 配置 Apache 模块

  2. 选中 rewrite 模块的复选框。

  3. 点击 启用所选模块 按钮。

它是如何工作的……

Webmin 会向 Apache 的配置中添加一行,加载选定的模块。在 Apache 1 版本中,加载模块的指令是 AddModule,而在版本 2 中是 LoadModule

在某些系统中,Apache2 实际上并不将 LoadModule 行存储在主配置文件(/etc/apache2/httpd.conf)中,而是将每个模块存储在 /etc/apache2/mods-available/ 目录中的单独文件中。这些模块通过在 /etc/apache2/mods-enabled 目录中创建符号链接来激活,所有这些文件在服务器启动时会包含在配置中。在使用这种配置方式时,系统提供了特别的脚本来处理根据需要创建或删除这些符号链接。实际上,我们可以通过执行以下命令并重启 Apache 来启用 rewrite 模块:

$ sudo a2enmod rewrite

可以通过以下命令禁用该模块:

$ sudo a2dismod rewrite

还有更多……

Apache HTTP 服务器软件包包括大多数常用模块,但可以作为软件包安装或从源代码编译安装其他模块。

从软件包安装额外的模块

如果你想包含一个额外的 Apache 模块,而这个模块并没有随服务器捆绑一起,你可以在系统软件包仓库中搜索它。带有 Apache 模块的包名可能因发行版而异。例如,如果你想安装 mod_wsgi 模块,你可以在名为 libapache2-mod-wsgiapache2-mod-wsgi 或仅为 mod_wsgi 的包中找到它,具体取决于你的系统。按照 第一章 中 安装软件包 的步骤,安装该软件包。

创建静态 HTML 网站

Apache 服务器可以执行的最简单任务是提供静态网站。当浏览器向此类网站发送 HTTP 请求时,Apache 会处理传入的 URL,将路径映射到磁盘上的文件,并将该文件的内容返回给浏览器。如果文件包含 HTML 代码,浏览器将渲染网页。

一个 Apache 实例可以为多个网站提供服务,但在本教程中,我们将仅配置一个网站作为 Apache 的默认站点。如果这是你唯一的配置,它将在无论传入请求关联的 IP 地址或域名是什么的情况下使用。

在本教程中,我们将配置 Apache 作为单站点服务器。它将从目录 /var/www/default 响应传入的请求,并提供静态文件。

如果你希望在不同的域名下提供不同的网站,你需要为每个域名创建虚拟主机配置。这个主题在 创建虚拟主机 的教程中进行了介绍。

如何操作……

我们将指示 Apache 监听所有传入的请求,并在端口 80 上创建一个单站点服务器,具体如下:

  1. 导航到服务器 | Apache Web 服务器。在全局配置选项卡中,选择网络和地址

  2. 监听地址和端口设置为所有地址上的端口80

  3. 清除名称虚拟服务器的地址字段。https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_08_02.jpg

    现在我们可以设置服务器的根文档目录,文件将从该目录提供服务。

  4. 创建一个目录来存放静态网站的 HTML 文件:/var/www/default

  5. 通过创建一个名为/var/www/default/index.html的文件,并包含以下内容来创建一个基本的 HTML 页面:

    <!DOCTYPE html>
    <html>
      <body>
        <h1>Hello World!</h1>
      </body>
    </html>
    
  6. 导航到默认 Apache 服务器的配置部分:服务器 | Apache Web 服务器 | 现有虚拟主机

  7. 点击默认虚拟主机的图标。在大多数情况下,这个配置将被称为默认服务器,但是如果您的安装附带了一个虚拟服务器配置,并且设置为处理任何地址并自动调整所有服务器名称,如下图所示,请使用这个配置:https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_08_17.jpg

  8. 点击文档选项,并将文档根目录设置为/var/www/default

  9. 点击保存按钮。

  10. 点击应用更改链接。

  11. 在浏览器中输入服务器的 IP 地址或域名:http://your.server。您应该会看到我们刚刚创建的index.html文件中的Hello World!

现在您可以将整个静态网站上传到/var/www/default目录并在您的服务器上托管它。

它是如何工作的……

Apache 配置分为三个主要部分:全局设置、默认服务器设置和虚拟主机设置。如果请求的主机名或 IP 地址与已配置虚拟 Web 服务器的名称或地址匹配,则使用虚拟主机设置。如果没有找到匹配的虚拟主机配置,请求将传递到默认主机。

在我们的配置中,我们没有指定虚拟主机,因此默认主机将处理每个传入的请求。我们将默认主机配置为从/var/www/default目录提供文件,这相当于在主 Apache 配置文件中设置DocumentRoot指令。

另见

  • Apache 是一个功能非常丰富的 web 服务器,因此有许多选项可以设置,Webmin 可以帮助您完成其中的许多操作。浏览本章中的所有其他示例,了解如何自定义您的服务器。

创建虚拟主机

一个 Apache 服务器可以同时托管多个网站。如果您的服务器有多个网络接口,每个网站可以托管在单独的 IP 地址上,但更常见的做法是所有网站共享相同的 IP 地址,并通过与网站关联的域名来区分。

注意

单个 Web 服务器通过同一个 IP 地址托管多个不同域名的网站,这是 HTTP 协议的一个特点。当你在地址栏输入http://example.com时,浏览器会查找与example.com域名关联的服务器 IP 地址,并打开与该 IP 的端口 80 的连接。Web 主机的名称(example.com)作为请求的Host:头部信息传递。

单个 Apache 实例可以支持多个配置。服务器会检查每个传入请求的 IP 地址和Host:头部信息,并根据这些信息决定使用哪个配置。如果你有与example.com关联的特殊配置(虚拟主机),Apache 会将其应用于所有发往http://example.com的请求。如果没有该地址的配置,则会使用默认的服务器配置。

准备工作

在这个教程中,我们将为域名example.com创建一个虚拟服务器配置。

你可以通过与域名提供商设置 DNS 条目来配置一个域名指向你的服务器。如果你的域名还没有指向你的服务器,你可以在测试过程中通过在客户端计算机的/etc/hosts文件中添加条目来模拟这一过程。你将从该计算机连接并测试你的服务器。

提示

如果你使用的是 Windows 机器进行测试,你需要在目录%SystemRoot%\system32\drivers\etc中找到hosts文件。

维基百科提供了不同系统中hosts文件的位置:en.wikipedia.org/wiki/Hosts_%28file%29#Location_in_the_file_system

hosts文件条目包含服务器的 IP 地址和你希望指向该 IP 的主机名,两者由空格分隔,例如:

198.51.100.1    example.com

如何操作…

执行以下步骤来创建虚拟主机:

  1. 创建一个目录,用于存放静态站点的 HTML 文件 /var/www/example.com

  2. 创建一个基础的 HTML 页面,方法是创建一个名为/var/www/example.com/index.html的文件,内容如下:

    <!DOCTYPE html>
    <html>
      <body>
        <h1>Welcome to Example.com</h1>
      </body>
    </html>
    
  3. 进入Servers | Apache Webserver

  4. 选择Create virtual host标签。

  5. Document Root设置为/var/www/example.com

  6. Server Name设置为example.comhttps://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_08_04.jpg

  7. 点击Create Now按钮。

  8. 点击Apply Changes链接。

现在,你应该能够通过浏览器访问新站点,网址为http://example.com

工作原理…

Webmin 通过在 Apache 配置文件中添加以下部分来创建虚拟服务器:

<VirtualHost *:80>
ServerName example.com
DocumentRoot "/var/www/example.com"
</VirtualHost>

上述指令指定服务器应监听80端口上的连接,如果遇到任何指向Host: example.com的请求,它应该使用这个配置来服务这些请求。在这个VirtualHost部分中的唯一另一行指示 HTML 文件应该从哪个目录提供。这个虚拟主机的其他选项将被添加到这个VirtualHost部分,以进一步自定义虚拟服务器的配置。

还有更多…

Apache 虚拟主机具有高度可定制性。你可以通过导航到服务器 | Apache Web 服务器 | 现有虚拟主机,然后点击带有Server Name example.com的服务器旁边的图标,找到新创建的虚拟服务器的配置界面。

创建基于 IP 的虚拟主机

如果你的机器配备了多个网络接口,Apache 也可以在不同的 IP 地址上创建独立的虚拟主机。这个过程与之前描述的步骤非常相似,但你应该设置处理 连接到地址特定地址,并提供虚拟主机的 IP 地址,而不是指定Server Name

https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_08_05.jpg

另见

  • 你可以创建一个虚拟主机,使用加密的 HTTPS 协议,而不是标准的 HTTP。有关详细信息,请查看示例设置带 SSL 的加密网站

设置目录、文件和位置的选项

Apache 允许你在目录或文件级别上自定义设置。这意味着,匹配你服务器上特定路径的请求将与对网站其他部分的请求处理方式不同。

每个目录的选项可以通过 Apache 的配置文件中的<Directory>指令来设置。以这种方式设置的选项将应用于所选目录及其所有子目录。对子目录设置的<Directory>选项将覆盖更高层级目录的设置。

本地设置也可以通过将它们放置在一个特殊文件中(默认情况下称为.htaccess)来指定,该文件位于一个目录中。必须在目录上设置AllowOverride选项,才能使.htaccess文件生效。

在这个例子中,我们将创建一个特定目录的配置,这允许在该目录及其子目录中使用.htaccess文件。

准备工作

我们将在默认服务器配置中设置特定的选项,针对目录/var/www/default。在开始之前,请注意你想要设置配置指令的目录的完整路径,并确认哪个虚拟主机提供该目录中的文件(如果不是默认虚拟服务器)。

如何操作…

执行以下步骤以设置目录、文件和位置的选项:

  1. 导航到服务器 | Apache Web 服务器 | 现有虚拟主机

  2. 选择你想要自定义的虚拟主机,例如默认服务器

  3. 创建每目录、文件或位置选项部分,将类型设置为目录

  4. 选择精确匹配并将路径设置为/var/www/default

    提示

    你还可以输入通配符路径,如/var/www/default/site*。以这种方式设置的选项将应用于所有匹配的目录。

    如果你需要更大的灵活性,可以选择匹配正则表达式选项,并使用正则表达式指定路径。

    https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_08_06.jpg

  5. 点击创建按钮。

  6. 你将被带到虚拟服务器选项界面,在每目录选项部分会有一个新的条目。点击标有目录 /var/www/default的图标。

  7. 在目录配置界面中,点击标有文档选项的图标。

  8. 选项文件可以覆盖部分,选择**选择下面的…**并勾选所有框。https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_08_07.jpg

  9. 点击保存按钮。

  10. 点击应用更改链接。

它是如何工作的…

当我们选择设置每目录选项时,Webmin 会为我们创建一个<Directory>指令并填充所选选项。在我们展示的示例中,我们选择允许所有设置被本地.htaccess文件覆盖。这样就创建了以下配置部分:

<Directory "/var/www/default">
AllowOverride All
</Directory>

如果我们选择编辑默认服务器,<Directory>指令将被创建在主 Apache 配置文件中。这些设置将始终应用于该目录,无论是使用哪个虚拟主机访问它。如果你想创建每目录设置,只有在选择的虚拟服务器中应用,你可以在现有虚拟主机标签中选择该服务器。通过这种方式创建的设置将保存在特定的<VirtualHost>部分内。

还有更多内容…

Webmin 允许你通过每目录选项用户界面设置大多数本地选项,这些选项适用于你所使用的 Apache 版本。四处浏览,熟悉这个部分,你就能在需要时快速调整设置。

Apache 允许你通过匹配目录的文件系统路径设置本地选项,但你也可以匹配请求文件或 URL 地址的名称。

设置匹配模式文件名的选项

Apache 允许你对与特定模式匹配的文件设置特定选项。例如,允许外部用户读取.htaccess和其他本地 Apache 配置文件的内容并不是一个好主意。你可以通过以下步骤来防止访问所有这些文件(统一匹配正则表达式^\.ht):

  1. 导航到服务器 | Apache Web 服务器 | 现有虚拟主机

  2. 选择默认服务器选项。

  3. 创建每目录、文件或位置选项部分,将类型设置为文件

  4. 选择匹配正则表达式,并将路径设置为正则表达式^\.ht

  5. 点击创建按钮。

  6. 点击标有文件正则表达式 ^.ht的图标。

  7. 点击标有访问控制的图标。

  8. 限制访问部分,将唯一的操作设置为拒绝所有请求https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_08_08.jpg

  9. 点击保存按钮。

  10. 点击应用更改链接。

为特定 URL 设置选项

您可能希望将自定义设置应用于特定的 URL,这些 URL 不一定匹配某个特定的底层文件系统路径或文件名。在这种情况下,可以使用 Apache 的<Location>指令,Webmin 将协助您进行配置。

以动态生成的/server-status页面为例,该页面在启用mod_status模块时为您提供服务器概况。您的磁盘中没有名为server-status的路径,但您仍然可以通过创建基于位置的配置来控制对该 URL 的请求。

您可能希望服务器信息仅对有限的用户组可用。我们可以将对该 URL 的访问限制为仅来自127.0.0.1的本地主机 IP 请求:

  1. 导航至服务器 | Apache Web 服务器 | 现有虚拟主机

  2. 选择默认服务器选项。

  3. 创建每个目录、文件或位置选项部分,将类型设置为位置

  4. 选择精确匹配,并将路径设置为/server-status

  5. 点击创建按钮。

  6. 点击标有位置/server-status的图标。

  7. 点击标有访问控制的图标。

  8. 限制访问部分,将访问检查顺序设置为先允许再拒绝

  9. 将唯一的操作设置为允许来自 IP 的请求…,并指定127.0.0.1

  10. 点击保存按钮,然后再次进入访问控制

    注意

    Webmin 始终在列表中提供一个空条目。当您再次进入该部分时,您将能够添加第二个访问限制。

  11. 限制访问部分,添加第二个操作拒绝所有请求https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_08_09.jpg

  12. 点击保存按钮。

  13. 点击应用更改链接。

更改匹配的路径或模式

如果您已经创建了一组本地设置,但需要更改它们应用的路径,请按照以下步骤操作:

  1. 导航至服务器 | Apache Web 服务器 | 现有虚拟主机

  2. 点击您希望自定义的虚拟主机图标。

  3. 每个目录选项中,点击您希望重新定位的本地设置图标。

  4. 修改应用于部分的匹配模式。

使用.htaccess文件设置选项

使用.htaccess文件是一种便捷的方式,可以让没有服务器管理权限的用户在目录级别自定义 Apache 服务器的本地设置。只要用户能够修改设置文件,他们就可以调整服务器,而无需管理员的支持。通过.htaccess文件进行的设置更改不需要重新启动服务器。

注意

你应该注意到,使用 .htaccess 文件会降低 Apache 的性能,因为服务器在每次请求时都必须在请求的目录中查找设置文件(并且可能还会查找更高级目录中的 .htaccess 文件)。

以下是创建 .htaccess 选项文件的步骤:

  1. 导航到 服务器 | Apache Webserver | 全局配置 | 每目录选项文件

  2. 输入你想为其写 .htaccess 文件的目录路径,例如 /var/www/example.com,然后点击 创建选项文件 按钮。

你将进入一个屏幕,允许你通过 .htaccess 文件修改本地设置。

创建受密码保护的网站

HTTP 协议提供了一种基本的用户身份验证功能。当请求发送到受保护的网站或网站中的受保护区域时,浏览器会提示用户输入用户名和密码。如果提供的值与授权用户匹配,则授予对该网站的访问权限。

注意

基本的 HTTP 身份验证方法在 Apache 上设置非常简单,特别是在 Webmin 的帮助下。此功能的主要缺点是其安全性较差,且不太具备自定义性。如果你打算在开放的互联网中使用这种身份验证方法,确保它与加密的 HTTPS 协议结合使用。

准备工作

在开始之前,确保在你的 Apache 配置中启用了 auth_basic 模块。有关更多信息,请查看配方 启用 Apache 模块

如何操作…

执行以下步骤以创建一个受密码保护的网站

  1. 导航到 服务器 | Apache Webserver | 现有虚拟主机

  2. 选择你希望用密码保护的虚拟服务器。

  3. 如果你已经有了要保护的目录的设置部分,可以跳到第 7 步。

  4. 创建每目录、文件或位置选项 部分,将 类型 设置为 目录

  5. 选择 精确匹配,并将 路径 设置为你网站的根文档,例如 /var/www/example.com

    提示

    你可以通过为子目录创建每目录设置来用密码保护你网站的某个子部分。

  6. 点击 创建 按钮。

  7. 每目录选项 部分,点击目录配置部分的链接。

  8. 点击标有 访问控制 的图标。

  9. 认证领域名称 部分,指定一个描述,当用户提示输入密码时将显示该描述,例如 请输入您的 ISIS 密码

  10. 认证类型 设置为 基本

  11. 通过登录限制访问 设置为 所有有效用户

  12. Basic login user file types 设置为 文本文件

  13. 用户文本文件 设置为 /etc/apache2/htpasswd/etc/httpd/htpasswd,具体取决于你的 Apache 配置目录的位置。

    提示

    密码文件永远不应通过 Web 服务器访问。你应该将其保存在文档根目录之外。如果你需要将其保存在文档根目录中,按照为匹配模式的文件设置选项部分的步骤限制对它的访问。

    https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_08_10.jpg

  14. 点击保存按钮,然后通过点击应用更改链接来重启 Apache。

创建用户账户

执行以下步骤创建用户账户:

  1. 再次输入访问控制以配置该目录。

  2. 点击标记为编辑用户的新链接,位于用户文本文件一行中。

  3. 点击添加新用户链接。

  4. 明文指定用户名和密码。https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_08_11.jpg

  5. 点击保存按钮。

它是如何工作的…

Webmin 通过在 Apache 配置中创建<Directory>指令,并为auth_basic模块添加相应的指令,来创建一个受密码保护的网站。例如,前面提到的指令将把以下部分添加到 Apache 配置中:

<Directory "/var/www/example.com">
AuthName "Please enter your ISIS password"
AuthType Basic
require valid-user
AuthBasicProvider file
AuthUserFile /etc/apache2/htpasswd
</Directory>

Webmin 还帮助你创建有效的用户名和密码对,这些将被视为有效用户。此信息存储在由AuthUserFile指令指定的文件中。

还有更多…

Apache 密码与系统的用户账户信息分开存储。如果你希望这些账户保持同步,Webmin 可以通过为你执行该任务来大大帮助你。

保持 Apache 和系统账户同步

执行以下步骤以保持 Apache 和系统账户同步:

  1. 导航到服务器 | Apache Web 服务器 | 现有虚拟主机

  2. 选择受密码保护的虚拟服务器。

  3. 每目录选项部分,点击链接进入受密码保护的目录配置部分。

  4. 点击标记为访问控制的图标。

  5. 点击标记为编辑用户的新链接,位于用户文本文件一行中。

  6. 勾选标记为当 Unix 用户被添加时添加用户当 Unix 用户被更改时更改用户当 Unix 用户被删除时删除用户的复选框。

  7. 点击保存按钮。

另见

  • 如果你想在互联网上使用 HTTP 基本认证,请确保将其与 SSL 连接加密结合使用。详情请参阅设置加密网站与 SSL部分。

  • 同时确保htpasswd文件无法通过 Web 服务器访问。有关防止访问其位置的方法,请参考为目录、文件和位置设置选项部分。

显示目录中文件的列表

Web 服务器是一个很好的可下载文件存储库。这种文件分发方式在很大程度上取代了匿名 FTP,因为它为用户提供了更无缝的体验。如果您希望为用户提供具有自动生成索引的文件目录访问权限,Apache 是完成此任务的合适工具。

注意

在大多数情况下,列出网站目录中的文件并不必要,有时甚至可能暴露敏感信息给潜在的攻击者。仅在有意义的地方使用目录列表。

准备工作

在此步骤中,我们将展示目录/var/www/example.com/downloads的文件列表,该目录由虚拟主机example.com通过 URLhttp://example.com/downloads提供服务。请注意文件路径、虚拟主机名称和您实际使用的 URL,并进行适当替换。

如何操作…

执行以下步骤以显示目录中文件的列表:

  1. 创建目录/var/www/example.com/downloads,并在其中放置一些可供下载的文件。

  2. 导航到服务器 | Apache Webserver | 现有虚拟主机

  3. 选择将提供文件服务的虚拟主机,例如服务器名称 example.com

  4. 创建每目录、文件或位置选项部分,将类型设置为目录

  5. 选择精确匹配,并将路径设置为您的站点根文档,例如/var/www/example.com/downloads

  6. 点击创建按钮。

  7. 每目录选项部分,点击标有目录 /var/www/example.com/downloads的链接。

  8. 点击标有文档选项的链接。

  9. 目录选项设置为如下所选

  10. 生成目录索引设置为

  11. 点击保存按钮。

  12. 点击标有目录索引的按钮。

  13. 目录索引选项设置为如下所选

  14. 勾选标有显示精美目录索引的复选框。

  15. 使用此表单设置目录列表的显示偏好。

  16. 点击保存按钮。

  17. 点击应用更改链接。

现在,您应该能够看到 URLhttp://example.com/downloads下的文件列表。

它是如何工作的…

Webmin 通过在您的 Apache 配置中创建<Directory>指令来生成目录列表配置。例如,上述步骤会将以下部分添加到虚拟主机配置中:

<Directory "/var/www/example.com/downloads">
Options Indexes
IndexOptions FancyIndexing
</Directory>

还有更多…

默认情况下,Apache 的目录列表页面包含一个包含目录路径的头部和一个包含有关服务器和 Apache 信息的底部。您可以通过将名为HEADER.htmlREADME.html的文件放置在目录中来自定义头部和底部的内容。在这些文件中放置的任何 HTML 代码都会显示在文件列表页面上。如果您希望防止 Apache 列出这些文件,请转到目录索引选项屏幕,并在要在目录索引中忽略的文件字段中输入它们的名称(每行一个文件名)。

另请参见

重定向传入请求

您可以使用 Apache 的 HTTP 重定向将传入请求转发到另一个地址。如果您的网页地址发生变化,或者您希望创建一个易于记忆的 URL 地址,该地址会重定向到特定页面的更长地址,这将非常有用。

假设我们曾经在oldsite.com/articles/托管了许多文章,而我们决定将网站迁移到另一个域名,现在相同的文章将托管在http://example.com/info/

我们可以在旧站点上配置 Apache,将所有传入请求重定向到新域。

准备就绪

在开始之前,请确保在 Apache 配置中启用了alias模块。有关更多信息,请查看配方启用 Apache 模块

如何操作…

在您的旧服务器上,按照以下步骤将请求重定向到新域:

  1. 导航到服务器 | Apache Web 服务器 | 现有虚拟主机

  2. 选择将执行重定向的虚拟主机,例如默认服务器

  3. 点击标有别名和重定向的图标。

  4. 填写正则表达式 URL 重定向表单,输入以下数据:

    • From: /articles/(.*)

    • 状态: 301

    • To: http://example.com/info/$1

    注意

    From字段中由(.*)标记的正则表达式组捕获任何在/articles/之后的字符串,并将捕获的内容放置在To字段的$1占位符中。

    HTTP 重定向状态301表示资源已被永久移动。如果重定向是临时的,通常使用状态302

  5. 点击保存按钮。

  6. 点击应用更改链接。

它是如何工作的…

Webmin 通过在您的虚拟主机配置文件中添加RedirectMatch指令来创建重定向。前面示例中的步骤将创建以下指令:

RedirectMatch 301 /articles/(.*) "http://example.com/info/$1"

如果我们不使用正则表达式,一个更简单的Redirect指令就足够了,例如:

Redirect 301 /articles/ "http://example.com/info/"

还有更多…

一个名为mod_alias的 Apache 模块提供了Redirect指令。这些指令允许您在地址之间创建简单的转发。另一个名为mod_rewrite的模块提供了一种更加复杂的重定向机制,可以根据 URL 的每一部分、文件系统测试、服务器和环境变量、HTTP 头、时间戳等重定向传入请求。不幸的是,mod_rewrite指令的语法可能非常独特和复杂,因此手动编辑其配置文件仍然是最好的选择。

更多信息可以在 Apache 官网找到:httpd.apache.org/docs/current/rewrite/

创建文件系统别名

如果你想从服务器的文档根目录之外的目录提供文件,或者希望从多个位置提供同一目录的文件,可以使用本地别名而不是重定向。重定向会将用户转发到另一个 URL,而别名对用户透明,它从相同的 URL 提供不同的内容。

例如,我们可以将站点的图片存储在目录/var/www/resources/images中,但使用别名从 URL/images/提供它们。最终用户不会察觉文件是直接提供的还是通过别名提供的。

按照以下步骤,从以/images/开头的 URL 提供位于/var/www/resources/images的文件:

  1. 导航到服务器 | Apache Webserver | 现有虚拟主机

  2. 选择执行重定向的虚拟主机,例如默认服务器

  3. 点击标记为别名和重定向的图标。

  4. 填写文档目录别名表单,内容如下:

    • : /images/

    • : /var/www/resources/images

提示

在你能从另一个文件系统位置提供文件之前,可能需要创建一个特定目录的 Apache 配置,这样服务器才能将这些文件公开。有关更多信息,请查看配方为目录、文件和位置设置选项

设置加密网站与 SSL

HTTP 协议是以明文形式通过互联网传输的。这意味着通信可能被网站的最终用户和服务器管理员以外的人截获和读取。在大多数情况下,交换的信息是公开的,这种安全漏洞是可以接受的。在其他需要交换密码或其他机密信息的情况下,不应使用简单的 HTTP。幸运的是,感谢 HTTPS 协议,它通过增加加密层,保障了网络通信的安全。

注意

HTTPS 使用的 SSL 加密是在实际 HTTP 会话开始之前添加的。这意味着基于名称的虚拟服务器,通常在 HTTP 头中指定,不能与 HTTPS 一起使用。实际上,这意味着每个 SSL 保护的网站必须通过一个专用的 IP 地址提供。

如果你只打算在服务器上创建一个 HTTPS 网站,那就没问题。但如果你计划创建更多的安全网站,你需要为每个站点为服务器添加一个独立的网络接口,并为每个站点分配独立的 IP 地址。

如果你的服务器只有一个 IP 地址,并且你必须提供多个 HTTPS 站点,你可以使用一种名为服务器名称指示SNI)的技术。有关更多信息,请查看这个维基百科页面:en.wikipedia.org/wiki/Server_Name_Indication

准备工作

在开始之前,请确保ssl模块已在 Apache 配置中启用。有关更多信息,请查看配方启用 Apache 模块

下一步将是获取密钥和证书,这些将用于签署和加密 HTTPS 通信。您可以选择创建自己的自签名证书,或从商业证书机构购买签名证书。您可以快速且免费地生成自签名证书,但访问浏览器将向用户报告您的网站无法完全信任,因为没有外部认证机构认证用于加密通信的证书。第三方也可能伪造自签名证书,因此无法保证别人不会冒充您。

商业证书稍微难以获得,每年需要支付几美元,但您的用户将能够信任他们连接到您的网站,并且不会看到警告,而是在浏览器地址栏中看到一个漂亮的彩色锁定图标。

创建 SSL 证书的过程需要在您的系统上安装openssl软件包。如果您需要安装它,请查看第一章中的安装软件包部分,设置您的系统。密钥和证书不一定要在服务器上生成;您可以在任何具有openssl命令的机器上生成它们。

生成私钥

SSL 建立在非对称加密的基础上,使用两把密钥:一把是公开的,另一把是私密的(或称为私钥)。公开密钥用于加密消息或验证其签名,而私钥用于解密消息并创建签名。私钥应该仅为其所有者所知,并保存在受保护的文件中。

使用此命令生成强大的 RSA 私钥,并将其保存到文件key.pem中:

$ openssl genrsa -out key.pem 2048

拥有您的私钥的人可以冒充您,即使您购买了签名证书。更改密钥文件的权限,使只有 root 用户可以读取它,并确保它不会落入不正确的手中。使用以下命令更改权限:

$ chmod 400 key.pem

创建自签名证书

您可以使用以下命令创建自签名证书。该证书将保存到文件cert.pem中,并由您的私钥(来自key.pem)签名,且有效期为 365 天:

$ openssl req -new -key key.pem -x509 -nodes -days 365 -out cert.pem

在生成证书时,您将被要求回答一系列问题,包括国家名称、州或省、城市、组织、组织单位和电子邮件地址。如果您想留空任何字段,请输入一个点(.)并按Enter键。您还需要为证书提供一个常用名称,在本例中,它将是您网站的完整域名(例如,www.example.com)。请记住,证书中的常用名称必须与您的域名完全匹配,因此为www.example.com生成的证书无法在example.com上使用,反之亦然。

提示

如果你需要一个可以在多个域名上使用的证书,你可以准备一个通配符证书,或者一个在Subject Alt Name字段中指定多个域名的证书。

获取商业签名的证书

为了获得商业签名的证书,你需要生成一个由私钥签名的证书签名请求CSR)文件。你将这个文件发送给商业证书颁发机构,该机构会验证你的身份,处理支付,并将签名证书返回给你。

你可以使用以下命令根据你的私钥(key.pem)生成 CSR 文件(csr.pem):

$ openssl req -new -key key.pem -out csr.pem

你将被问到与生成自签名证书时相同的一系列问题。确保准确指定这些信息;如果这些数据与提供给证书颁发机构的信息不一致,可能会导致认证过程出现问题。

检查证书数据

一旦你拥有了证书(cert.pem),可以通过以下命令查看其中包含的信息:

$ openssl x509 -noout -text -in cert.pem

如何操作…

按照以下步骤设置由 Apache 运行的 SSL 保护的 HTTPS 网站:

  1. 准备以下内容:

    • 私钥文件(key.pem

    • 证书文件(cert.pem

    • 将与 SSL 一起使用的 IP 地址(例如,198.51.100.1

    • 证书中指定的域名作为通用名称(例如,www.example.com

    • 包含网站文件的目录路径(例如,/var/www/www.example.com

    • 系统中 Apache 配置目录的路径(例如,/etc/apache2

  2. key.pemcert.pem 文件复制到 Apache 配置目录。

    注意

    在任何情况下,这些文件都不应该出现在公开可用的文档目录中。请将它们保存在仅根用户可访问的安全位置。

  3. 确保 key.pem 文件的权限设置如下,具有严格限制:

    $ sudo chmod 400 key.pem
    
    
  4. 导航到服务器 | Apache Webserver | 创建虚拟主机,并根据以下设置准备一个虚拟服务器。更多信息请参考“创建虚拟主机”教程:

    • 处理到特定地址的连接:198.51.100.1

    • 端口443

    • 文档根目录/var/www/www.example.com

    • 服务器名称www.example.com

    https://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_08_14.jpg

  5. 导航到新创建的虚拟服务器的选项屏幕,然后点击SSL 选项图标。

  6. 设置启用 SSL?

  7. 设置证书/私钥文件/etc/apache2/cert.pem

  8. 设置私钥文件/etc/apache2/key.pemhttps://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_08_15.jpg

  9. 点击保存按钮。

  10. 点击应用更改链接。

现在,你可以使用浏览器连接到你网站的 HTTPS 地址 https://www.example.com

如何工作…

Webmin 通过将以下指令添加到 Apache 虚拟主机的配置中来启用 SSL:

SSLEngine on
SSLCertificateFile /etc/apache2/cert.pem
SSLCertificateKeyFile /etc/apache2/key.pem

这种基本配置使得使用 HTTPS 协议与服务器通信成为可能。当浏览器发起 HTTPS 连接时,请求会发送到服务器的 443 端口。在 HTTP 对话开始之前,进行 SSL 握手,所有随后的通信都将加密。

还有更多…

如果您准备了一个监听 HTTPS 请求的虚拟服务器,使用 443 端口,客户端将无法通过标准的 HTTP 请求连接到此服务器的 80 端口。您可能想为同一域准备一个第二个虚拟主机,将所有传入流量重定向到以https://开头的 URL。有关更多信息,请查看重定向传入请求的做法。

记录传入的请求和错误

托管网站的服务器会引起很多关注。它被用户访问,被索引搜索机器人扫描,并且被潜在的攻击者审视,以查看是否能够突破。您的 Web 服务器应该记录所有这些流量的信息,您应该定期查看这些日志,以确保一切正常运行。

默认情况下,Apache 保留两种类型的日志文件:访问日志,包含有关每个传入请求的信息;错误日志,包含关于遇到问题的信息。您可以配置 Apache 保持单一的日志文件对,但在大多数情况下,为每个虚拟服务器保留单独的访问日志和错误日志更为有用。

准备就绪

Apache 的日志功能高度可定制,您可以设置服务器以多种不同方式输出日志条目。一些格式已经被公认为标准,目前,推荐的日志标准被昵称为合并日志格式。它记录了许多信息,其中包括:

  • 远程 IP 或主机名(%h

  • 如果请求经过身份验证,远程用户(%u

  • 时间(%t

  • 请求的第一行,包含所使用的 HTTP 方法和请求路径(%r

  • HTTP 响应状态:200 表示成功,404 表示未找到,等等(%>s

  • 响应大小(以字节为单位)(%O

  • 发起此请求的页面(%{Referer}i

  • 标识请求浏览器类型和版本的用户代理字符串(%{User-Agent}i

所有这些字段形成了合并日志格式,表示为:

%h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"

您应该确保在服务器配置中启用了昵称为“combined”的格式。如果没有,您可以按照以下方式将其添加:

  1. 导航到默认 Apache 服务器的配置部分,路径为服务器 | Apache Web 服务器 | 现有虚拟主机 | 默认服务器

  2. 点击日志文件

  3. 确保列表中包含名为combined的日志格式。如果缺少此格式,请添加一条条目,使用昵称combined和以下格式字符串:

    %h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"
    
  4. 默认日志格式设置为combinedhttps://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_08_03.jpg

  5. 点击保存按钮。

  6. 点击应用更改链接。

您可以在 Apache 文档中找到更多关于日志格式的信息:

httpd.apache.org/docs/current/mod/mod_log_config.html

操作步骤…

在这个教程中,我们将为服务于域名example.com的虚拟主机设置日志记录。我们将指导 Apache 将访问日志条目保存在/var/log/apache2/example.com-access.log中,错误日志保存在/var/log/apache2/example.com-error.log中。如果您的系统使用/var/log/httpd或其他目录来存储 Apache 日志,请相应地修改路径。按照以下步骤记录传入请求和错误日志:

  1. 导航至服务器 | Apache Web 服务器 | 现有虚拟主机

  2. 点击您想要设置日志选项的主机图标。

  3. 点击日志文件

  4. 错误日志设置为设置为文件,并输入日志文件路径:/var/log/apache2/example.com-error.log

  5. 错误日志级别设置为警告条件(warn)

  6. 默认日志格式设置为combined

  7. 访问日志文件下,将格式设置为默认,并将写入文件路径设置为/var/log/apache2/example.com-access.loghttps://github.com/OpenDocCN/freelearn-linux-pt5-zh/raw/master/docs/webmin-adm-cb/img/5849_08_16.jpg

  8. 点击保存按钮。

  9. 点击应用更改链接。

工作原理…

Webmin 通过在<VirtualHost>部分添加以下指令来配置虚拟服务器的日志记录:

ErrorLog /var/log/apache2/example.com-error.log
LogLevel warn
LogFormat "combined"
TransferLog /var/log/apache2/example.com-access.log

这些指令告诉 Apache 在哪里保存该主机的访问日志和错误日志,访问日志使用什么格式(LogFormat),以及错误报告的详细程度(LogLevel)。

另见

  • Apache 日志文件在流量高的站点上增长非常快。请查看第五章中的教程配置日志文件轮换,了解如何使用logrotate来处理增长的日志文件。

  • Webmin 可以为您显示收集到的日志文件消息;请查看本章节中添加其他日志文件到 Webmin的教程,位于第五章,监控您的系统

  • 一个叫做 Webalizer 的程序可以帮助你分析 Apache 日志文件。查看本章节中的教程使用 Webalizer 分析日志文件,了解更多信息。

使用 Webalizer 分析日志文件

Web 服务器的日志文件包含了大量有用的信息,但它们太长且冗余,不容易阅读。为了全面了解网站的状态,您需要一个工具来分析其访问日志文件的内容。一个这样的工具叫做Webalizer;它易于安装并且与 Webmin 集成良好。Webalizer 解析日志文件并生成 HTML 格式的图形报告,将日志文件转化为清晰的图表和表格。

准备工作

请按照第一章中安装软件包的教程,安装webalizer软件包。

操作步骤…

记下你想要分析的 Apache 访问日志文件的位置。在这个例子中,我们将为托管在example.com上的网站准备 Webalizer 报告,访问日志文件存储在/var/log/apache2/example.com-access.log。执行以下步骤以使用 Webalizer 分析日志文件:

  1. 创建一个目录来存储这个网站的 Webalizer 报告。比如,/var/stats/example.com可能是一个合适的位置。

  2. 转到服务器 | Webalizer 日志文件分析

  3. 点击添加新的日志文件进行分析链接。

  4. 基础日志文件路径设置为/var/log/apache2/example.com-access.log

    提示

    即使你使用logrotate旋转日志,Webalizer 也会读取整个日志文件家族,包括压缩的备份日志归档文件。

  5. 写入报告的目录设置为你创建的报告目录/var/stats/example.com

  6. 以用户身份运行 webalizer设置为root

  7. 是否始终重新处理日志文件? 设置为

  8. 报告生成后是否清除日志文件? 设置为

  9. 报告选项设置为使用全局选项

  10. 计划报告生成设置为启用,并选择下方的时间

  11. 使用简单计划,设置为每日(午夜时分)

  12. 点击创建按钮。

新的 Webalizer 分析条目将出现在列表中。如果你不想等到第二天,可以立即生成报告:

  1. 点击新创建的日志分析条目。

  2. 点击生成报告按钮,然后在下一屏幕点击查看已完成的报告链接。

从现在起,你可以随时进入服务器 | Webalizer 日志文件分析,点击屏幕右侧的链接查看每日更新的 Webalizer 报告。

运行原理…

Webmin 会创建一个 cron 任务,每晚午夜执行webalizer二进制文件。Webalizer 解析指定的日志文件并生成一个图形报告,报告以 HTML 页面的形式展示。当你查看报告时,Webmin 会在浏览器中显示 Webalizer 生成的 HTML 页面。

还有更多内容…

你可以自定义 Webalizer 生成报告的某些方面。你可以通过进入服务器 | Webalizer 日志文件分析页面,并点击编辑全局选项按钮来全局编辑设置。

你还可以通过以下步骤为报告设置自定义选项:

  1. 转到服务器 | Webalizer 日志文件分析

  2. 点击你想要自定义报告的日志文件名称。

  3. 报告选项设置为自定义选项

  4. 点击保存按钮。

  5. 返回列出 Webalizer 报告的屏幕,再次点击日志文件名称。

  6. 点击屏幕底部的新编辑选项按钮。

  7. 自定义报告设置,然后点击保存按钮。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值