開発運用

AnsibleでPHPデータベース設定

PHP アプリケーションを複数展開する際に Ansible を使用してデータベースを設定する方法について、完全かつ包括的に解説します。Ansible は自動化ツールであり、複雑なインフラ管理やアプリケーションのデプロイメントを効率的に行うために広く利用されています。この記事では、Ansible を使用して PHP アプリケーションに必要なデータベース環境をセットアップする手順を詳細に説明します。

1. Ansible の概要と準備

1.1 Ansible のインストール

まず、Ansible がインストールされていない場合は、インストールする必要があります。以下は、Ubuntu におけるインストール手順です。

bash
sudo apt update sudo apt install ansible

インストール後、以下のコマンドでバージョンを確認します。

bash
ansible --version

1.2 インベントリファイルの作成

Ansible では、ターゲットサーバを管理するためにインベントリファイルを使用します。インベントリファイルは、管理対象のホストの情報を記述したファイルです。例えば、hostsというファイルを作成し、以下のように設定します。

ini
[webservers] web1 ansible_host=192.168.1.10 web2 ansible_host=192.168.1.11 [databases] db1 ansible_host=192.168.1.20

このファイルは、Webサーバとデータベースサーバをそれぞれ webserversdatabases のグループに分けています。

1.3 SSH 鍵の設定

Ansible は SSH を使ってリモートサーバにアクセスします。サーバにログインできるように、SSH 鍵を設定しておきます。以下のコマンドで SSH 鍵を生成し、ターゲットサーバにコピーします。

bash
ssh-keygen -t rsa -b 2048 ssh-copy-id [email protected] ssh-copy-id [email protected] ssh-copy-id [email protected]

2. データベースの準備

PHP アプリケーションに必要なデータベースを設定します。ここでは、MySQL を使用した例を示します。

2.1 データベースサーバの設定

MySQL をインストールし、データベースを作成するための Ansible プレイブックを作成します。以下の手順を行います。

2.1.1 プレイブックの作成

まず、setup-database.yml という名前でプレイブックを作成します。

yaml
--- - name: Set up MySQL database for PHP applications hosts: databases become: yes tasks: - name: Install MySQL Server apt: name: mysql-server state: present - name: Start MySQL service service: name: mysql state: started enabled: yes - name: Create a database mysql_db: name: my_php_app_db state: present - name: Create a user for the database mysql_user: name: php_user password: 'password123' priv: 'my_php_app_db.*:ALL' state: present - name: Grant privileges to the user mysql_user: name: php_user host: "%" password: 'password123' priv: 'my_php_app_db.*:ALL' state: present

このプレイブックは、以下の処理を行います:

  1. MySQL サーバをインストール
  2. MySQL サービスを起動
  3. データベース my_php_app_db を作成
  4. ユーザー php_user を作成し、データベースに対する全ての権限を付与

2.1.2 プレイブックの実行

次に、以下のコマンドを使用してプレイブックを実行し、データベースを設定します。

bash
ansible-playbook -i hosts setup-database.yml

これで、MySQL データベースとユーザーが作成され、必要な権限が付与されます。

2.2 データベースの確認

データベースが正しく作成され、ユーザーが権限を持っていることを確認するために、MySQL にログインします。

bash
mysql -u root -p

その後、以下のコマンドで作成したデータベースとユーザーを確認します。

sql
SHOW DATABASES; SHOW GRANTS FOR 'php_user'@'%';

3. PHP アプリケーションのデータベース接続設定

PHP アプリケーションが作成した MySQL データベースに接続するための設定を行います。以下のコードは、PHP で MySQL に接続するための基本的な設定です。

php
$servername = "db1"; // データベースサーバのホスト名 $username = "php_user"; $password = "password123"; $dbname = "my_php_app_db"; // MySQL に接続 $conn = new mysqli($servername, $username, $password, $dbname); // 接続確認 if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } echo "Connected successfully"; ?>

この設定を PHP アプリケーションの設定ファイルに追加することで、MySQL データベースへの接続が確立されます。

4. 複数の PHP アプリケーションにデータベースを統合

複数の PHP アプリケーションが同じデータベースを使用する場合、各アプリケーションの設定ファイルでデータベース接続情報を共有することができます。異なるアプリケーションが同じデータベースを参照できるようにするには、データベース接続設定を共通化します。

4.1 設定ファイルの統一

すべての PHP アプリケーションで、config.php という共通設定ファイルを作成し、データベース接続情報を記述します。

php
$servername = "db1"; $username = "php_user"; $password = "password123"; $dbname = "my_php_app_db"; function getDbConnection() { global $servername, $username, $password, $dbname; return new mysqli($servername, $username, $password, $dbname); } ?>

この設定ファイルを各アプリケーションでインクルードし、データベース接続を共通で管理します。

5. まとめ

Ansible を使用した PHP アプリケーションのデータベース設定は、効率的かつ再現性のある環境構築を実現します。今回の手順では、MySQL を使用してデータベースの作成、ユーザーの設定、PHP アプリケーションの接続設定を行いました。Ansible による自動化を活用することで、大規模なインフラでも簡単に管理でき、運用の手間を大幅に削減できます。

データベースの設定が完了した後は、PHP アプリケーションを適切にデプロイし、稼働させることができます。

Back to top button