PHP アプリケーションを Ansible を使ってデプロイするプロセスは、いくつかのステップに分かれます。特に重要なのは、SSH キーの設定とファイアウォールの設定です。このガイドでは、Ansible を用いて PHP アプリケーションを安全かつ効率的にデプロイするために必要なステップを順を追って説明します。
1. Ansible のインストール
まず、Ansible をインストールする必要があります。以下のコマンドを使用して、Ansible をインストールできます。
bashsudo apt update sudo apt install ansible
インストールが完了したら、次のコマンドでインストールが正しく行われたか確認します。
bashansible --version
2. SSH キーの生成
アプリケーションのデプロイにおいて、SSH キーは非常に重要です。SSH キーを使用することで、パスワードなしでサーバーに接続でき、セキュリティが向上します。次のコマンドを使用して、SSH キーを生成します。
bashssh-keygen -t rsa -b 2048
このコマンドを実行すると、SSH キーの保存場所を聞かれます。通常はデフォルトの位置(~/.ssh/id_rsa
)を使用します。その後、パスフレーズを設定するか、空のままで進むことができます。
生成された公開鍵(id_rsa.pub
)をターゲットサーバーにコピーします。これを行うには、以下のコマンドを使用します。
bashssh-copy-id user@target_server
これにより、ターゲットサーバーに対してパスワードなしで接続できるようになります。
3. Ansible インベントリの設定
次に、Ansible のインベントリファイルを設定します。インベントリファイルは、Ansible が操作するサーバーを定義するためのもので、通常は /etc/ansible/hosts
というファイルに保存されます。
インベントリファイルにサーバー情報を追加します。例えば、次のように記述します。
ini[web_servers]
target_server ansible_ssh_user=user ansible_ssh_private_key_file=~/.ssh/id_rsa
これで、target_server
サーバーに対して Ansible を使用できるようになります。
4. PHP アプリケーションの設定
次に、PHP アプリケーションのデプロイに必要なパッケージをインストールします。Ansible の apt
モジュールを使用して、必要なパッケージをインストールできます。
Ansible プレイブックの例を次に示します。
yaml---
- name: Install PHP and dependencies
hosts: web_servers
become: yes
tasks:
- name: Update apt cache
apt:
update_cache: yes
- name: Install PHP
apt:
name: php
state: present
- name: Install PHP extensions
apt:
name:
- php-mysql
- php-fpm
state: present
このプレイブックは、PHP とその依存関係をインストールします。
5. アプリケーションのファイル転送
次に、PHP アプリケーションのファイルをターゲットサーバーに転送します。Ansible の copy
モジュールを使用して、アプリケーションファイルをターゲットサーバーにコピーできます。
以下は、アプリケーションファイルを /var/www/html
にコピーするプレイブックの例です。
yaml---
- name: Deploy PHP application
hosts: web_servers
become: yes
tasks:
- name: Copy PHP application files
copy:
src: /local/path/to/your/php/application/
dest: /var/www/html/
owner: www-data
group: www-data
mode: '0755'
これにより、ローカルの PHP アプリケーションファイルがターゲットサーバーにコピーされ、適切な所有者と権限が設定されます。
6. ファイアウォールの設定
PHP アプリケーションが適切に動作するためには、必要なポート(通常はポート 80 と 443)を開放する必要があります。Ansible を使用してファイアウォールを設定できます。以下は、ufw
(Uncomplicated Firewall)を使用してポート 80 と 443 を開放する例です。
yaml---
- name: Configure firewall
hosts: web_servers
become: yes
tasks:
- name: Allow HTTP and HTTPS traffic
ufw:
rule: allow
name: 'Apache Full'
このタスクは、HTTP と HTTPS のトラフィックを許可する ufw
ルールを追加します。
7. サービスの再起動
最後に、PHP アプリケーションをデプロイした後、必要なサービスを再起動して変更を反映させます。例えば、apache2
や php-fpm
サービスを再起動する必要があります。
yaml---
- name: Restart PHP and web services
hosts: web_servers
become: yes
tasks:
- name: Restart Apache service
service:
name: apache2
state: restarted
- name: Restart PHP-FPM service
service:
name: php7.4-fpm
state: restarted
このプレイブックは、apache2
と php7.4-fpm
サービスを再起動して、PHP アプリケーションが正しく動作するようにします。
8. デプロイの実行
すべての設定が完了したら、次のコマンドでプレイブックを実行します。
bashansible-playbook -i /path/to/inventory file.yml
これにより、設定したすべてのタスクが順番に実行され、PHP アプリケーションがターゲットサーバーにデプロイされます。
結論
Ansible を使用して PHP アプリケーションをデプロイするための手順は、SSH キーの設定、インベントリの設定、PHP のインストール、アプリケーションファイルの転送、ファイアウォールの設定、サービスの再起動など、いくつかのステップに分かれています。これらを自動化することで、デプロイ作業を効率化し、安全に実行することができます。また、Ansible のプレイブックを利用することで、他のサーバーへのデプロイも簡単に行えるようになります。