開発運用

PHPアプリのAnsibleデプロイ

PHP アプリケーションを Ansible を使ってデプロイするプロセスは、いくつかのステップに分かれます。特に重要なのは、SSH キーの設定とファイアウォールの設定です。このガイドでは、Ansible を用いて PHP アプリケーションを安全かつ効率的にデプロイするために必要なステップを順を追って説明します。

1. Ansible のインストール

まず、Ansible をインストールする必要があります。以下のコマンドを使用して、Ansible をインストールできます。

bash
sudo apt update sudo apt install ansible

インストールが完了したら、次のコマンドでインストールが正しく行われたか確認します。

bash
ansible --version

2. SSH キーの生成

アプリケーションのデプロイにおいて、SSH キーは非常に重要です。SSH キーを使用することで、パスワードなしでサーバーに接続でき、セキュリティが向上します。次のコマンドを使用して、SSH キーを生成します。

bash
ssh-keygen -t rsa -b 2048

このコマンドを実行すると、SSH キーの保存場所を聞かれます。通常はデフォルトの位置(~/.ssh/id_rsa)を使用します。その後、パスフレーズを設定するか、空のままで進むことができます。

生成された公開鍵(id_rsa.pub)をターゲットサーバーにコピーします。これを行うには、以下のコマンドを使用します。

bash
ssh-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 アプリケーションをデプロイした後、必要なサービスを再起動して変更を反映させます。例えば、apache2php-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

このプレイブックは、apache2php7.4-fpm サービスを再起動して、PHP アプリケーションが正しく動作するようにします。

8. デプロイの実行

すべての設定が完了したら、次のコマンドでプレイブックを実行します。

bash
ansible-playbook -i /path/to/inventory file.yml

これにより、設定したすべてのタスクが順番に実行され、PHP アプリケーションがターゲットサーバーにデプロイされます。

結論

Ansible を使用して PHP アプリケーションをデプロイするための手順は、SSH キーの設定、インベントリの設定、PHP のインストール、アプリケーションファイルの転送、ファイアウォールの設定、サービスの再起動など、いくつかのステップに分かれています。これらを自動化することで、デプロイ作業を効率化し、安全に実行することができます。また、Ansible のプレイブックを利用することで、他のサーバーへのデプロイも簡単に行えるようになります。

Back to top button