geerlingguy.apache
Ansibleロール: Apache 2.x
このAnsibleロールは、RHEL/CentOS、Debian/Ubuntu、SLES、SolarisにApache 2.xをインストールします。
必要条件
SSL/TLSを使用する場合は、自分自身の証明書とキーのファイルを提供する必要があります。openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout example.key -out example.crt
のようなコマンドで自己署名証明書を生成できます。
PHPを使用するApacheの場合、geerlingguy.php
ロールを使用してPHPをインストールすることをお勧めします。mod_php(例えば、Ubuntu向けにlibapache2-mod-php5
などの正しいパッケージをphp_packages
に追加)を使用するか、geerlingguy.apache-php-fpm
を使用してApacheをPHPに接続することができます。詳細はそのロールのREADMEを参照してください。
ロール変数
使用可能な変数は以下に示します。デフォルト値も含まれています(defaults/main.yml
を参照):
apache_enablerepo: ""
Apacheをインストールする際に使用するリポジトリ(RHEL/CentOSシステムのみに使用)。OSのコアリポジトリより新しいバージョンの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の設定フォルダーに置くことができ、このロールによって追加された便利(だがより基本的な)vhostsファイルをスキップできます。また、独自のテンプレートを設定して、VirtualHostsのレイアウトをさらにカスタマイズすることも可能です。
apache_remove_default_vhost: false
Debian/Ubuntuでは、Apacheの設定にデフォルトの仮想ホストが含まれています。この設定ファイルを削除したい場合はtrue
に設定してください。
apache_global_vhost_settings: |
DirectoryIndex index.php index.html
# 他のグローバル設定を続けて追加してください。
この変数を使用して、ロールが提供するvhostsファイル内でApacheのグローバル設定を追加または上書きできます。デフォルトでは、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
を使用してすべてのリクエストをwww.
サイトにリダイレクトするRewriteRuleを追加する例です:
- 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のvhostsは設定されていませんが、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_no_log: true
プレイブックを実行する際に、SSL関連のタスク出力をコンソールに表示するかどうか。
apache_ssl_protocol: "All -SSLv2 -SSLv3"
apache_ssl_cipher_suite: "AES256+EECDH:AES256+EDH"
クライアントがサーバーに安全に接続する際に使用/許可されるSSLプロトコルと暗号スイート。この設定は安全で妥当なデフォルトですが、最大限のセキュリティ、パフォーマンス、互換性のために設定を調整する必要があるかもしれません。
apache_allow_override: "All"
apache_options: "-Indexes +FollowSymLinks"
各vhostのdocumentroot
ディレクトリに対するAllowOverride
およびOptions
ディレクティブのデフォルト値。vhostはallow_override
またはoptions
を指定することによってこれらの値を上書きできます。
apache_mods_enabled:
- rewrite
- ssl
apache_mods_disabled: []
有効にするまたは無効にするApacheモジュール(適切な場所にシンボリックリンクされます)。利用可能なすべてのモジュールは、Apache設定ディレクトリ内のmods-available
フォルダー(Debian/Ubuntuの場合は/etc/apache2/mods-available
)を参照してください。
apache_packages:
- [プラットフォーム固有]
インストールするパッケージのリスト。この設定はRedHatまたはDebianベースのシステムのプラットフォーム固有のパッケージのセットにデフォルト設定されています(デフォルト値はvars/RedHat.yml
およびvars/Debian.yml
を参照)。
apache_state: started
このロールが実行されるときにApacheデーモンの初期状態を設定します。一般的にこれはstarted
のままであるべきですが、プレイブックの実行中にApacheの設定を修正する必要がある場合や、ロールが実行される時にApacheを起動しないようにしたい場合はstopped
に設定できます。
apache_enabled: yes
Apacheサービスのブート時の状態を設定します。一般的にはyes
のままでよいですが、サービスを無効にしたままAnsibleを実行する必要がある場合はno
に設定できます。
apache_packages_state: present
_ondrej/apache2_、geerlingguy.repo-epel、またはgeerlingguy.repo-remiのような追加のリポジトリを有効にした場合、バージョンを簡単にアップグレードしたい場合があります。これをlatest
に設定し(RHELのapache_enablerepo
と組み合わせ)、別のリポジトリから異なるApacheバージョンに直接アップグレードできます(Apacheをアンインストールして再インストールするのではなく)。
apache_ignore_missing_ssl_certificate: true
vhost証明書が存在する場合のみSSL vhostsを作成したい場合は(例:Let's Encryptを使用しているとき)、apache_ignore_missing_ssl_certificate
をfalse
に設定します。この場合、プレイブックの他の部分でSSL証明書が生成される場合、すべてのvhostsが設定されるまでプレイブックを複数回実行する必要があるかもしれません。
.htaccessを使用した基本認証
Basic認証サポートが必要な場合は、カスタムテンプレートを通じて追加するか、次のようにVirtualHost設定にextra_parameters
を追加できます:
extra_parameters: |
<Directory "/var/www/password-protected-directory">
Require valid-user
AuthType Basic
AuthName "Please authenticate"
AuthUserFile /var/www/password-protected-directory/.htpasswd
</Directory>
VirtualHostディレクティブ内のすべてをパスワード保護するには、Directory
の代わりにLocation
ブロックを使用します:
<Location "/">
Require valid-user
....
</Location>
独自の.htpasswd
ファイルを生成またはアップロードする必要があります。他のロールで、これをより統合的にサポートしている場合があります。
依存関係
なし。
サンプルプレイブック
- hosts: webservers
vars_files:
- vars/main.yml
roles:
- { role: geerlingguy.apache }
vars/main.yml
内:
apache_listen_port: 8080
apache_vhosts:
- {servername: "example.com", documentroot: "/var/www/vhosts/example_com"}
ライセンス
MIT / BSD
著者情報
このロールは2014年にJeff Geerlingによって作成されました。彼はAnsible for DevOpsの著者です。
ansible-galaxy install geerlingguy.apache