開発運用

Ansible で PHP アプリデプロイ

PHP アプリケーションを複数台の Ubuntu サーバーに Ansible を使用してデプロイする方法について、完全かつ包括的に説明します。この記事では、PHP アプリケーションの展開を自動化するための Ansible のセットアップから、実際のデプロイ手順までをステップバイステップで解説します。

1. はじめに

Ansible は、インフラストラクチャの自動化を行うための強力なツールです。PHP アプリケーションを複数の Ubuntu サーバーにデプロイする際、Ansible を使用することで、手作業を減らし、一貫性のあるデプロイを実現できます。このガイドでは、複数の PHP アプリケーションを管理し、デプロイするための基本的な流れと設定を紹介します。

2. 必要な環境

まず最初に、以下の環境を整えます。

  • Ansible がインストールされたマシン(制御ノード)
  • Ubuntu サーバー(ターゲットノード)に PHP を実行できるように設定されている
  • SSH アクセスが設定されている
  • ターゲットサーバーに対して適切な権限(sudo)が与えられている

3. Ansible のインストール

最初に、制御ノード(Ansible をインストールするマシン)に Ansible をインストールします。以下のコマンドでインストールができます。

bash
sudo apt update sudo apt install ansible

インストール後、Ansible が正しくインストールされたかを確認します。

bash
ansible --version

4. インベントリファイルの設定

次に、ターゲットノード(PHP アプリケーションをデプロイするサーバー)の情報を記載したインベントリファイルを作成します。インベントリファイルは、デプロイ対象のサーバーやグループを指定するために使用されます。

例えば、inventory.ini という名前で以下のようなインベントリファイルを作成します。

ini
[php_servers] 192.168.1.10 192.168.1.11

この例では、2 台のサーバーに PHP アプリケーションをデプロイする設定です。

5. PHP のインストール

ターゲットサーバーに PHP をインストールするために、Ansible プレイブックを作成します。プレイブックは、タスクを順番に実行する YAML ファイルです。

例えば、install_php.yml という名前で以下のようなプレイブックを作成します。

yaml
--- - name: Install PHP on Ubuntu servers hosts: php_servers become: yes tasks: - name: Update apt package list apt: update_cache: yes - name: Install PHP and dependencies apt: name: - php - php-cli - php-fpm - php-mysql - php-xml state: present

このプレイブックは、ターゲットサーバーに PHP とその依存関係をインストールします。以下のコマンドでプレイブックを実行します。

bash
ansible-playbook -i inventory.ini install_php.yml

6. PHP アプリケーションの配置

次に、PHP アプリケーションをサーバーに配置します。これには、アプリケーションファイルをリモートサーバーにコピーするために copy モジュールや git モジュールを使用します。

例えば、Git リポジトリからアプリケーションをクローンする場合は、以下のようなプレイブックを作成します。

yaml
--- - name: Deploy PHP application from Git hosts: php_servers become: yes tasks: - name: Clone the PHP application repository git: repo: 'https://github.com/example/php-app.git' dest: /var/www/html/php-app version: master

このプレイブックを実行すると、指定した Git リポジトリからアプリケーションがターゲットサーバーにクローンされます。

7. PHP-FPM と Nginx の設定

PHP アプリケーションを正しく動作させるためには、PHP-FPM と Nginx を設定する必要があります。まず、php-fpm サービスを起動し、その後に Nginx サーバーを設定します。

yaml
--- - name: Configure PHP-FPM and Nginx for PHP application hosts: php_servers become: yes tasks: - name: Start and enable PHP-FPM service: name: php7.4-fpm state: started enabled: yes - name: Install Nginx apt: name: nginx state: present - name: Start and enable Nginx service: name: nginx state: started enabled: yes - name: Configure Nginx for PHP app template: src: nginx_php_app.conf.j2 dest: /etc/nginx/sites-available/php-app notify: - Reload Nginx handlers: - name: Reload Nginx service: name: nginx state: reloaded

上記のプレイブックでは、Nginx をインストールし、PHP アプリケーション用の設定ファイルを適用します。この設定ファイル(nginx_php_app.conf.j2)は Jinja2 テンプレートとして管理し、実際の設定を行います。

8. Nginx の設定ファイル(テンプレート)

nginx_php_app.conf.j2 ファイルは、Nginx の仮想ホスト設定ファイルとして以下のようになります。

nginx
server { listen 80; server_name example.com; root /var/www/html/php-app; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }

この設定ファイルは、PHP アプリケーションのルートディレクトリと PHP-FPM のソケットを設定します。

9. アプリケーションのデプロイとサービスの起動

最後に、プレイブックを実行して、PHP アプリケーションのデプロイを完了させます。

bash
ansible-playbook -i inventory.ini deploy_php_app.yml

これで、PHP アプリケーションがターゲットサーバーにデプロイされ、Nginx サーバーが再起動して新しい設定が適用されます。

10. まとめ

このガイドでは、Ansible を使用して複数の Ubuntu サーバーに PHP アプリケーションを自動的にデプロイする方法を紹介しました。Ansible を活用することで、手動での作業を減らし、安定した運用が可能となります。デプロイメントの設定をプレイブックとして保存し、今後の運用に活用できるようにすることが重要です。

Back to top button