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記事で確認できます。ここでFalse
やno
を使用すると、ヘッダー設定をスキップできます。このグローバル設定は、仮想ホストごとに上書きできます。
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_certificate
をfalse
に設定します。この場合、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によって作成されました。
ansible-galaxy install gcoop-libre.apache