2.6. 配置 HTTP 服务器


HTTP 服务器现已安装并启用。下一步是提供一些配置。HTTP 服务器已在 /etc/httpd/conf/httpd.conf 中提供一些默认配置,它在端口 80 上提供一个 Web 服务器。我们将添加一些额外的配置,以便在用户指定的端口上提供额外的 Web 服务器。

我们使用模板文件来存储配置内容,因为用户定义的端口需要变量输入。在我们的模块中,创建一个名为 templates 的目录,并在新目录中添加名为 myserver.conf.erb 的文件。在文件中添加以下内容:

Listen <%= @httpd_port %>
NameVirtualHost *:<%= @httpd_port %>
<VirtualHost *:<%= @httpd_port %>>
  DocumentRoot /var/www/myserver/
  ServerName <%= @fqdn %>
  <Directory "/var/www/myserver/">
    Options All Indexes FollowSymLinks
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>
Copy to Clipboard Toggle word wrap

此模板遵循 Apache Web 服务器配置的标准语法。唯一的区别是包含 Ruby 转义字符来注入我们模块的变量。例如,httpd_port,我们用来指定 Web 服务器端口。

另请注意包含 fqdn 的变量,它是存储系统的完全限定域名的变量。这称为系统事实。系统事实是在生成各个系统的 Puppet 目录之前从每个系统收集而来。Puppet 使用 facter 命令收集这些系统事实,您也可以运行事实来查看这些事实的列表。

编辑 httpd.pp 清单并添加突出显示的行:

class mymodule::httpd {
  package { 'httpd':
    ensure => installed,
  }
  service { 'httpd':
    ensure => running,
    enable => true,
    require => Package["httpd"],
  }
  file {'/etc/httpd/conf.d/myserver.conf':
  notify => Service["httpd"],
    ensure => file,
    require => Package["httpd"],
    content => template("mymodule/myserver.conf.erb"),
  }
  file { "/var/www/myserver":
    ensure => "directory",
  }
}
Copy to Clipboard Toggle word wrap

这可实现:

  • 我们为服务器配置文件 /etc/httpd/conf.d/myserver.conf 添加文件资源声明。
  • 我们使用 notify abrt Service[" httpd "] 属性在配置文件和 httpd 服务之间添加一个关系。这会检查配置文件是否有更改。如果文件已更改,Puppet 将重新启动服务。
  • 在添加此文件之前,我们检查是否安装了 httpd 软件包。
  • /etc/httpd/conf.d/myserver.conf 文件的内容是我们之前创建的 myserver.conf.erb 模板。
  • 我们添加第二个 file resource 声明。这个目录为我们的 Web 服务器创建一个目录 /var/www/myserver/

我们还需要将 httpd_port 参数包含在我们的主清单文件中。编辑 init.pp 清单,添加以下文本,以粗体显示:

class mymodule (
  $httpd_port = 8120
) {
  include mymodule::httpd
}
Copy to Clipboard Toggle word wrap

这会将 httpd_port 参数设置为默认值 8120。您可以使用 Satellite 服务器覆盖这个值。

再次运行 puppet apply 命令,以测试对模块的更改:

# puppet apply mymodule/tests/init.pp --noop
...
Notice: /Stage[main]/Mymodule::Httpd/File[/var/www/myserver]/ensure: current_value absent, should be directory (noop)
...
Notice: /Stage[main]/Mymodule::Httpd/File[/etc/httpd/conf.d/myserver.conf]/ensure: current_value absent, should be file (noop)
...
Copy to Clipboard Toggle word wrap

这些输出会看到消息显示创建配置文件和 Web 服务器目录。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat