UbuntuでMySQLを使用してリモートデータベースをセットアップし、サイトパフォーマンスを最適化する方法

Ubuntu

アプリケーションやウェブサイトが成長するにつれて、現在のサーバー構成では対応しきれない場合があります。ウェブサーバーとデータベースのバックエンドを同じマシンでホスティングしている場合、これらの機能を分離し、それぞれが独自のハードウェアで動作できるようにすると、訪問者のリクエストに応答する負荷を分散させることができます。

このガイドでは、リモートMySQLデータベースサーバーを設定し、ウェブアプリケーションがそのサーバーに接続できるように構成します。例としてWordPressを使用しますが、この手法はMySQLをバックエンドとして使用する他のアプリケーションにも広く適用可能です。

前提条件

このチュートリアルを始める前に、以下のものが必要です:

  1. 2台のUbuntuサーバー:
    • データベースサーバー: MySQLをホスティングします。
    • ウェブサーバー: ウェブアプリケーションをホスティングし、リモートMySQLデータベースに接続します。
  2. インストール済みのソフトウェア:

ステップ1 — データベースサーバーでMySQLをリモート接続用に構成する

アプリケーションの規模が大きくなると、1台のマシンで全ての役割を果たすのが難しくなることがあります。その場合、データベースを別のサーバーに移すのは、パフォーマンスの向上と将来的なインフラ拡張のための基本的な構成を提供する良い方法です。

MySQLをインストールした後、他のコンピューターからの接続を許可するために、いくつかの設定を変更する必要があります。これらの設定変更のほとんどは、mysqld.cnfファイルで行います。このファイルは通常、/etc/mysql/mysql.conf.d/ディレクトリにあります。

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

このファイルには、[mysqld]というセクションがあります。このセクション内のbind-addressパラメータを見つけます。このパラメータは、MySQLが接続を待機するネットワークアドレスを指定します。

デフォルトでは、127.0.0.1に設定されており、MySQLはローカル接続のみを受け入れるように構成されています。これを、サーバーの外部IPアドレスに変更します。

[mysqld]
. . .
bind-address = db_server_ip

次に、MySQL接続を暗号化してデータを安全に保つために、以下の行をbind-addressの後に追加します。

[mysqld]
. . .
require_secure_transport = on
. . .

ファイルを保存して閉じた後、MySQLが新しい設定を読み込むように、データベースを再起動します。

sudo systemctl restart mysql

次に、MySQLが外部インターフェースでリッスンしていることを確認するために、以下のコマンドを実行します。

sudo ss -plunt | grep mysqld

これで、MySQLがリモート接続を受け入れるようになりました。

ステップ2 — データベースサーバーでWordPress用のデータベースとリモート認証情報を設定する

次に、WordPress用のデータベースと、リモートアクセスが可能なユーザーを作成します。まず、MySQLにrootユーザーとしてログインします。

sudo mysql

新しいデータベースを作成します。ここでは、wordpressという名前で作成します。

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

次に、ローカル専用のユーザーlocal_db_userと、リモートアクセス用のユーザーremote_userを作成し、それぞれの権限を設定します。

CREATE USER 'local_db_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'local_db_user'@'localhost';

CREATE USER 'remote_user'@'web_server_ip' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'remote_user'@'web_server_ip';
FLUSH PRIVILEGES;

これで、リモートアクセスが可能なユーザーが設定されました。

ステップ3 — リモートおよびローカル接続のテスト

設定が完了したら、データベースサーバーとウェブサーバーから接続をテストします。まず、ローカル接続をテストします。

mysql -u local_db_user -p

次に、ウェブサーバーからリモート接続をテストします。

ssh remote_user@web_server_ip
sudo apt update
sudo apt install mysql-client
mysql -u remote_user -h db_server_ip -p

この接続が成功すると、リモートでMySQLにアクセスできるようになります。

ステップ4 — WordPressインストールのためのウェブサーバー準備

WordPressとそのプラグインを使用するために、必要なPHP拡張機能をインストールします。

sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip
sudo systemctl restart php7.4-fpm

次に、Nginxの設定ファイルを更新します。

sudo nano /etc/nginx/sites-available/your_domain

ファイルに以下のような設定を追加し、保存して閉じます。

server {
    server_name your_domain www.your_domain;
    root /var/www/your_domain;

    index index.html index.htm index.php;

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt { log_not_found off; access_log off; allow all; }
    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
        expires max;
        log_not_found off;
    }

    location / {
       try_files $uri $uri/ /index.php$is_args$args;
    }
}

設定ファイルのシンタックスをテストし、Nginxを再読み込みします。

sudo nginx -t
sudo systemctl reload nginx

ステップ5 – ウェブサーバーにWordPressをインストールする

WordPressの最新バージョンをダウンロードしてインストールします。

cd /tmp
curl -LO https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
sudo cp -a /tmp/wordpress/. /var/www/your_domain
sudo chown -R www-data:www-data /var/www/your_domain

ステップ6 — WordPressの設定ファイルをセットアップする

WordPress設定ファイルを開き、データベース接続情報を入力します。

sudo nano /var/www/your_domain/wp-config.php

データベースの名前、ユーザー、パスワード、そしてホスト名を以下のように設定します。

define('DB_NAME', 'wordpress');
define('DB_USER', 'remote_user');
define('DB_PASSWORD', 'remote_user_password');
define('DB_HOST', 'db_server_ip');
define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);

設定を保存して閉じます。

ステップ7 — Webインターフェイスを通じてWordPressをセットアップする

ウェブブラウザで、ウェブサーバーのドメイン名に/wp-adminを付けてアクセスし、WordPressのセットアップを完了します。

http://your_domain.com/wp-admin

結論

このチュートリアルでは、リモートMySQLデータベースを設定し、SSLで保護された接続を使用してWordPressインストールと連携させる方法を学びました。この技術は、他のWebアプリケーションやプログラミング言語にも適用できますので、各アプリケーションや言語のデータベースドキュメントを参照してください。

購読
通知
0 Comments
Inline Feedbacks
View all comments