gcoop-libre.apache

Apache 2.x

RHEL/CentOS、Debian/Ubuntu、SLES、SolarisにApache 2.xをインストールするためのAnsibleロールです。

要件

このロールは、SSL/TLSを使用するサイトの証明書とキーのファイルを管理しません。

ApacheにPHPが必要な場合は、apache_packages変数にPHPパッケージを追加できます。また、PHPをApacheのモジュールではなくFPMとして使用する場合は、geerlingguy.phpロールやgeerlingguy.apache-php-fpmロールを利用できます。

ロール変数

利用可能な変数は以下に示し、デフォルト値も記載しています(defaults/main.ymlを参照):

apache_enablerepo: ''

Apacheをインストールする際に使用するリポジトリ(RHEL/CentOSシステムでのみ使用)。OSの基本リポジトリにないApacheの後続のバージョンを望む場合は、EPELのようなリポジトリを使用してください。

apache_listen_ip: '*'
apache_listen_port: 80
apache_listen_port_ssl: 443

ApacheがリッスンすべきIPアドレスとポートです。他のサービス(リバースプロキシなど)がポート80または443でリッスンしている場合にデフォルトを変更するのに役立ちます。

apache_keepalive: true
apache_keepalive_requests: 500
apache_keepalive_timeout: 5

HTTPの持続接続を有効にし、タイムアウトや最大リクエスト数をカスタマイズできます。

apache_prefork_server_limit: 256
apache_prefork_start_servers: 5
apache_prefork_min_spare_servers: 5
apache_prefork_max_spare_servers: 10
apache_prefork_max_clients: 256
apache_prefork_max_requests_per_child: 0

サーバーのMPMモジュールの設定。これらのプロパティは、MPM PreforkモジュールとMPM Workerモジュールに適用されます。DebianのApache 2.4では、MPMモードを異なる値で設定できますが、これはファイルが分かれているためです。

apache_worker_server_limit: 16
apache_worker_start_servers: 3
apache_worker_min_spare_threads: 75
apache_worker_max_spare_threads: 250
apache_worker_max_clients: 400
apache_worker_max_requests_per_child: 0
apache_worker_thread_limit: 64
apache_worker_threads_per_child: 25

MPM Workerモジュールの設定。これはDebian GNU/LinuxのApache 2.4でのみ利用可能です。

apache_event_server_limit: 16
apache_event_start_servers: 3
apache_event_min_spare_threads: 75
apache_event_max_spare_threads: 250
apache_event_max_clients: 400
apache_event_max_requests_per_child: 0
apache_event_thread_limit: 64
apache_event_threads_per_child: 25

MPM Eventモジュールの設定。これもDebian GNU/LinuxのApache 2.4でのみ利用可能です。

apache_remove_default_aliases: True

デフォルトのApache設定に付属するデフォルトのエイリアスを削除します。

apache_base_dir: '/var/www'

ウェブサイトが配置されるベースディレクトリ。次の3つとともに、明示的なドキュメントルートを持たない仮想ホストのためにドキュメントルートを生成するために使用されます。

apache_web_subdir: 'web'
apache_ssl_subdir: 'ssl'
apache_private_subdir: 'private'

HTTPウェブファイル用、HTTPSウェブファイル用、htpasswdファイル用のサブディレクトリです。仮想ホストにドキュメントルートがない場合、このロールは次の3つのディレクトリを生成します:

  • apache_base_dir/SITENAME/apache_web_subdir

  • apache_base_dir/SITENAME/apache_ssl_subdir

  • apache_base_dir/SITENAME/apache_private_subdir

    apache_create_vhosts: true apache_vhosts_filename: 'vhosts.conf'

trueに設定すると、グローバルなvhosts設定ファイルとこのロールの変数で管理される各仮想ホストのファイルがApache設定フォルダに作成されます。falseに設定すると、自分のvhostsファイルをApacheの設定フォルダに配置でき、このロールによって追加された便利(でも基本的な)ものをスキップできます。

apache_remove_default_vhost: false

Debian/Ubuntuでは、Apacheの設定にデフォルトの仮想ホストが含まれています。この設定をtrueにすると、そのデフォルト仮想ホストの設定ファイルを削除できます。

apache_global_vhost_settings: |
  DirectoryIndex index.php index.html
  # その他のグローバル設定をここに追加します。

この変数を使用して、ロール提供のvhostsファイル内でグローバルApache設定を追加または上書きできます(apache_create_vhostsがtrueの場合)。デフォルトでは、DirectoryIndex設定のみが設定されます。

apache_global_vhost_access_log_format_combined: '%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"'
apache_global_vhost_access_log_format_proxy: '%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"'

このプロパティを使用して、Combinedログ形式とプロキシ経由でのリクエストをログするためのログ形式をカスタマイズできます。

apache_global_vhost_aliases:
  - name: /images
    dest: /var/www/images

vhost.confに追加するエイリアスのリスト。すべての仮想ホストで使用可能になります。apache_create_vhostsを有効にする必要があります。

apache_global_vhost_custom_errors:
  - code: error-code
    action: error-action

Apacheエラーページのカスタマイズ。actionの値についてはApacheのドキュメンテーションを参照してください。

apache_vhosts:
  - servername: 'local.dev'
    serveralias:
      - 'alias1.local'
      - 'alias2.local'
    serveradmin: webmaster@localhost
    documentroot: '/var/www/html'
    enabled: true
    separate_logs: true
    separate_logs_proxy_format: true
    custom_errors:
      - code: error-code
        action: error-action
    frame_options: SAMEORIGIN
    deflate: true
    deflate_dont_vary: User-Agent
    fileetag: true
    aliases:
      - name: alias-url
        dest: alias-path
    setenvif:
      - attribute: 'X-Forwarded-For'
        pattern: '(.*)'
        var: 'ENV_VAR'
        value: 'true'
    redirect_to_https: false
    allowoverride: 'All'
    rewritebase: '/'
    custom_rewrites:
      - pattern: regex
        substitution: text
        flags: '[R=301,L]'
        conditions:
          - test_string: '%{HTTP_HOST}'
            pattern: '^old\.site\.com$'
            flags: '[NC]'
    redirect_to_servername: True
    exclude_from_redirect:
      - 'valid.alias.com'
    redirect_to_file: '/index.php'
    include_htaccess: False
    documentroot_extra_parameters: 'カスタムドキュメントルート設定'
    restricted_access:
      - path: '/secret'
        regex: false
        all: false
        ips:
          - '127.0.0.1'
          - '192.168.0.1'
        hosts:
          - 'www.site.com'
        env_variables:
          - 'ENV_VAR'
        htpasswd: '/.htpasswd'
    extra_parameters: 'カスタムVHost設定'

仮想ホストごとのプロパティセットを追加します。必須なのはservernameだけです。ドキュメントルートがない場合は、前述のように生成されます。

すべてのServerAliasへのリクエストは、指定されたexclude_from_redirectプロパティ以外のServerNameに301コードでリダイレクトされます。

restricted_access内のパスは、ドキュメントルートに対して相対的である必要があります。仮想ホストに明示的なドキュメントルートがない場合、htpasswdファイルは__apache_private_subdir__ディレクトリに置かれます。

|はYAML内のマルチラインスカラーblocksを示していますので、新しい行は生成される設定ファイル出力に保持されます。

apache_vhosts_ssl: []

デフォルトではSSL仮想ホストは設定されていませんが、apache_vhostsと同様のパターンで追加できます。

apache_vhosts_ssl:
  - servername: 'local.dev',
    certificate_file: '/path/to/certificate.crt'
    certificate_key_file: '/path/to/certificate.key'
    certificate_chain_file: '/path/to/certificate_chain.crt'
    sts: true
    sts_max_age: '63072000'
    sts_subdomains: true
    redirect_to_http: false

最初の3つのプロパティで証明書のパスを設定します。次の3つは、グローバルSTS設定の上書きを許可します。最後はすべてのリクエストをHTTPホストにリダイレクトします。

apache_vhosts_ordered: False

このプロパティは、Apacheがapache_vhostsおよびapache_vhosts_sslリストに表示される順序で仮想ホストをロードするよう強制します。さもなければ、Apacheは設定ファイルをアルファベット順に処理します。

他のSSL関連のロール変数で管理できるSSLディレクティブもあります。

apache_ssl_protocol: 'All -SSLv2 -SSLv3'
apache_ssl_cipher_suite: 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'

クライアントがサーバーに安全な接続を行う時に使用/許可されるSSLプロトコルと暗号スイート。これらは安全で合理的なデフォルトですが、最大のセキュリティと互換性のために、設定を調整する必要があるかもしれません。詳細については、Cipherli.st: Strong Ciphers for Apache, nginx and Lighttpdを参照してください。

apache_frame_options: SAMEORIGIN

このプロパティは、サイトがフレームまたはIFrame内で読み込まれるときのセキュリティポリシーを設定します。有効なオプションはこちらのWikipedia記事で確認できます。ここでFalsenoを使用すると、ヘッダー設定をスキップできます。このグローバル設定は、仮想ホストごとに上書きできます。

apache_sts: true
apache_sts_max_age: '63072000'
apache_sts_subdomains: true

HTTP Strict Transport Securityはデフォルトで有効で、最大年齢は1年、サブドメインが含まれます。このグローバル設定は、仮想ホストごとに上書きできます。

apache_mods_enabled:
  - rewrite
  - ssl
apache_mods_disabled: []

これらのプロパティはDebianおよびUbuntu専用です。どのApacheモジュールを有効または無効にするか。利用可能なモジュールは、Apacheの設定ディレクトリ内のmods-availableフォルダー(デフォルトでは/etc/apache2/mods-available)を参照してください。

apache_packages:
  - [platform-specific]

インストールされるパッケージのリスト。これはRedHatまたはDebianベースのシステムに特有のパッケージのセットにデフォルト設定されています(デフォルト値については、vars/RedHat.ymlおよびvars/Debian.ymlを参照)。

apache_state: started

このロールが実行されるときに強制されるApacheデーモンの初期状態を設定します。通常はstartedに維持されますが、Playbook実行中にApacheの設定を修正する必要がある場合や、他の方法でApacheを起動したくない場合は、stoppedに設定できます。

apache_ignore_missing_ssl_certificate: true

vhostの証明書が存在する場合(例:Let’s Encryptを使用する場合)にのみSSL vhostsを作成したい場合は、apache_ignore_missing_ssl_certificatefalseに設定します。この場合、Playbookを複数回実行してすべてのvhostsが構成される必要があります(Playbookの他の部分がSSL証明書を生成する場合)。

依存関係

なし。

例のPlaybook

- hosts: webservers
  vars_files:
    - vars/main.yml
  roles:
     - gcoop-libre.apache

vars/main.yml

apache_listen_port: 8080
apache_vhosts:
  - servername: example.com

ライセンス

GPLv2

著者情報

このロールは2016年にgcoop Cooperativa de Software Libreによって作成されました。

プロジェクトについて

Apache 2.x for RHEL/CentOS, Debian/Ubuntu, SLES and Solaris

インストール
ansible-galaxy install gcoop-libre.apache
ライセンス
gpl-2.0
ダウンロード
320