搜索

2.6. 配置 HTTP 服务器

download PDF

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>

此模板遵循 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",
  }
}

这可实现:

  • 我们为服务器配置文件 /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
}

这会将 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)
...

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.