wcm_io_devops.apache

wcm_io_devops.apache

CI

一个可以在 RHEL/CentOS、Debian/Ubuntu、SLES 和 Solaris 上安装 Apache 2.x 的 Ansible 角色。

wcm.io 分支

wcm.io 开始维护自己的分支,以更快地将更改集成到原始 geerlingguy.apache 仓库中。

wcm.io 分支在原有功能的基础上添加了以下特性:

命名空间

此角色发布在 wcm-io-devops 命名空间内。

版本管理

该分支的版本号将与 原仓库 的版本保持一致。

为了保持原始版本,wcm.io 的发布将增加第四个 版本号,以 - 分隔,随着每次 wcm.io 的发布而递增,例如 3.0.0-13.0.0-2

需求

如果您使用 SSL/TLS,您需要提供您自己的证书和密钥文件。您可以使用如下命令生成自签名证书:openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout example.key -out example.crt

如果您在 Apache 中使用 PHP,建议使用 geerlingguy.php 角色来安装 PHP,您可以选择使用 mod_php(通过将适当的软件包添加到 php_packages 中,例如 libapache2-mod-php5 针对 Ubuntu),或者使用 geerlingguy.apache-php-fpm 通过 FPM 将 Apache 连接到 PHP。有关更多信息,请查看该角色的 README。

角色变量

可用的变量列表及其默认值如下(见 defaults/main.yml):

apache_enablerepo: ""

用于安装 Apache 的仓库(仅在 RHEL/CentOS 系统上使用)。如果您希望使用比操作系统核心仓库中可用的更新版本的 Apache,请使用 EPEL 等仓库(可以通过 geerlingguy.repo-epel 角色安装)。

apache_listen_ip: "*"
apache_listen_port: 80
apache_listen_port_ssl: 443

Apache 应该侦听的 IP 地址和端口。如果您有其他服务(比如反向代理)侦听在 80 或 443 端口,并需要更改默认值,这个设置会很有用。

apache_create_vhosts: true
apache_vhosts_filename: "vhosts.conf"
apache_vhosts_template: "vhosts.conf.j2"

如果设置为 true,将创建一个 vhosts 文件,由此角色的变量管理(见下文),并放置在 Apache 配置文件夹中。如果设置为 false,您可以将自己的 vhosts 文件放入 Apache 的配置文件夹中,跳过由此角色添加的方便(但较基本)文件。如果需要进一步自定义虚拟主机的布局,您还可以覆盖所使用的模板,并设置指向您自己模板的路径。 如果将 apache_create_vhosts 设置为 false,vhosts.conf 将在配置过程中被删除。

apache_remove_default_vhost: false

在 Debian/Ubuntu 和 RedHat/CentOS 上,默认虚拟主机包含在 Apache 的配置中。将其设置为 true 将删除该默认虚拟主机配置文件。

apache_remove_default_vhost_ssl: false

在基于 RedHat/CentOS 的系统中,ssl.conf 中存在默认的虚拟主机。将其设置为 true 将从 ssl.conf 配置文件中删除该虚拟主机。

apache_global_vhost_settings: |
  DirectoryIndex index.php index.html
  # 在后续行添加其他全局设置。

您可以使用此变量在角色提供的 vhosts 文件中添加或覆盖全局 Apache 配置设置(假设 apache_create_vhosts 为 true)。默认情况下,仅设置 DirectoryIndex 配置。

apache_vhosts:
  # 附加可选属性:'serveradmin, serveralias, extra_parameters'。
  - servername: "local.dev"
    documentroot: "/var/www/html"

为每个虚拟主机添加一组属性,包括 servername(必需)、documentroot(必需)、allow_override(可选:默认为 apache_allow_override 的值)、options(可选:默认为 apache_options 的值)、serveradmin(可选)、serveralias(可选)和 extra_parameters(可选:您可以在这里添加任何额外的配置行)。

以下是使用 extra_parameters 添加 RewriteRule 以重定向所有请求到 www. 站点的示例:

  - servername: "www.local.dev"
    serveralias: "local.dev"
    documentroot: "/var/www/html"
    extra_parameters: |
      RewriteCond %{HTTP_HOST} !^www\. [NC]
      RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

| 表示 YAML 中的多行标量块,因此换行符在生成的配置文件输出中被保留。

apache_vhosts_ssl: []

默认情况下没有配置 SSL 虚拟主机,但您可以使用与 apache_vhosts 相同的模式添加它们,并添加一些额外指令,例如以下示例:

apache_vhosts_ssl:
  - servername: "local.dev"
    documentroot: "/var/www/html"
    certificate_file: "/home/vagrant/example.crt"
    certificate_key_file: "/home/vagrant/example.key"
    certificate_chain_file: "/path/to/certificate_chain.crt"
    extra_parameters: |
      RewriteCond %{HTTP_HOST} !^www\. [NC]
      RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

其他 SSL 指令可以通过其他与 SSL 相关的角色变量进行管理。

apache_ssl_protocol: "All -SSLv2 -SSLv3"
apache_ssl_cipher_suite: "AES256+EECDH:AES256+EDH"

在客户端进行安全连接时使用/允许的 SSL 协议和密码套件。这些是安全/合理的默认值,但为了最大安全性、性能和/或兼容性,您可能需要调整这些设置。

apache_allow_override: "All"
apache_options: "-Indexes +FollowSymLinks"

每个虚拟主机的 documentroot 目录的 AllowOverrideOptions 指令的默认值。虚拟主机可以通过指定 allow_overrideoptions 来覆盖这些值。

apache_mods_enabled:
  - rewrite.load
  - ssl.load
apache_mods_disabled: []

(仅限 Debian/Ubuntu)要启用或禁用的 Apache 模块(这些将被符号链接到适当的位置)。请参阅 Apache 配置目录中的 mods-available 目录(默认路径为 /etc/apache2/mods-available)以获取所有可用模块。

apache_packages:
  - [平台特定的]

要安装的软件包列表。默认情况下,这设置为 RedHat 或 Debian 基于系统的特定软件包(请参见 vars/RedHat.ymlvars/Debian.yml 中的默认值)。

apache_state: started

在运行此角色时强制设置 Apache 守护进程的初始状态。通常应保持为 started,但如果您需要在运行剧本时修复 Apache 配置,或者在运行此角色时不希望 Apache 启动,可以将其设置为 stopped

apache_packages_state: present

如果您启用了任何额外的仓库,例如 _ondrej/apache2_、geerlingguy.repo-epelgeerlingguy.repo-remi,您可能希望有一个简单的方法来升级版本。您可以将其设置为 latest(与 RHEL 上的 apache_enablerepo 配合使用),并可以直接从其他仓库升级到不同的 Apache 版本(而不是卸载并重新安装 Apache)。

apache_ignore_missing_ssl_certificate: true

如果您希望仅在虚拟主机证书存在时创建 SSL 虚拟主机(例如使用 Let’s Encrypt 时),请将 apache_ignore_missing_ssl_certificate 设置为 false。在这样做时,您可能需要多次运行剧本,以便配置所有虚拟主机(如果剧本的另一个部分生成 SSL 证书)。

#apache_rhel_custom_vhosts_path: /etc/httpd/vhosts.d

在 RHEL/CentOS 上,有时您可能希望使用自定义目录来存放虚拟主机文件,而不是 /etc/httpd/conf.d,那您可以使用此变量。

基于 .htaccess 的基本授权

如果您需要基本认证支持,您可以通过自定义模板或通过向虚拟主机配置添加 extra_parameters 来添加,例如:

extra_parameters: |
  <Directory "/var/www/password-protected-directory">
    Require valid-user
    AuthType Basic
    AuthName "请认证"
    AuthUserFile /var/www/password-protected-directory/.htpasswd
  </Directory>

要保护虚拟主机指令内的所有内容,请使用 Location 块,而不是 Directory

<Location "/">
  Require valid-user
  ....
</Location>

您需要在自己的剧本中生成/上传自己的 .htpasswd 文件。可能还有其他角色以更集成的方式支持此功能。

依赖

无。

示例剧本

- hosts: webservers
  vars_files:
    - vars/main.yml
  roles:
    - { role: wcm_io_devops.apache }

vars/main.yml

apache_listen_port: 8080
apache_vhosts:
  - {servername: "example.com", documentroot: "/var/www/vhosts/example_com"}

许可证

MIT / BSD

作者信息

此角色由 Jeff Geerling 创建于 2014 年,他也是 Ansible for DevOps 的作者。

此分支由 wcm.io 维护。

关于项目

Apache 2.x for Linux. (fork of geerlingguy.apache)

安装
ansible-galaxy install wcm_io_devops.apache
许可证
mit
下载
117.3k
拥有者
Tools for Configuration Management and Deployment