概要
次の投稿では、Debianにリモートデータベースを使用してWordPressをインストールするシナリオについて説明します。つまり、2つの別々のサーバーがあり、1つはWordPressのみがインストールされ(つまり、Webサイトのみをホストします)、もう1つはデータベースのみがあります(データベースサーバーとしてのみ機能します)という環境があります。 。
この種の環境がセットアップされる理由はたくさんあります。1つは、ウェブサイトのメンテナンスとデータベースのメンテナンスのしやすさ、パフォーマンスの向上です(つまり、1台のサーバーに依存しないため、WordPressのリソースが大幅に削減されます)。
ただし、欠点は–現在2台のサーバーがあるため、サーバーのメンテナンスが増えることです。
このセットアップは、2台のDebianサーバー(両方とも同じネットワーク/同じLAN内)で構成されます。
スタックはLEMP– Nginx Webサーバー、PHP、MariaDBサーバーになります。
データベースサーバーの構成
まず、データベースサーバーに焦点を当てます:
1.MariaDBサーバーをインストールします
sudo apt install mariadb-server
mysql_secure_installation
を実行しますsudo mysql_secure_installation
2.データベース構成ファイルを編集し、bind-addressパラメーターを変更して、データベースサーバーのプライベートアドレスを入力します。
編集するファイル:
sudo /etc/mysql/mariadb.conf.d/50-server.cnf
編集する行– bind-address =127.0.0.1
bind-address =192.168.56.252
保存して終了し、再起動して、mariadb.serviceを有効にします。
sudo systemctl restart mariadb.service sudo systemctl enabled mariadb.service
データベースサーバーのIPアドレスを確認するには、–ipaコマンドを実行します。
3.データベース、ユーザーを作成し、特権を設定します(コマンドの情報を例として使用します)
sudo mysql -u root -p CREATE DATABASE wptest; GRANT ALL ON wptest.* TO 'wpadmin'@'192.168.56.251' IDENTIFIED BY 'StrongPassword'; FLUSH PRIVILEGES; exit
データベース上で、リモートユーザー、つまりWordPressインストールがデータベースへの接続に使用するユーザーアカウントを作成する必要があります。 WordPressサーバーのIPアドレスを前もって知って、それを指定するか、リモートユーザーアカウントにバインドする必要があります。
ファイアウォール構成
データベースサーバーで実行中のファイアウォールがある場合、Webサーバーからの接続を受け入れてデータベースにアクセスするには、ポート3306を開く必要があります。安全のために、ウェブサーバーからの接続のみを受け入れるようにルールを設定することをお勧めします。
UFWファイアウォール設定
sudo ufw allow from 192.168.56.251 to any port 3306
IPTABLES構成
iptables -I INPUT -p tcp -s 192.168.56.251 --dport 3306 -j ACCEPT
Webサーバーの構成
1. WordPressを実行し、データベースサーバーおよびmysql / mariadbクライアントと通信するために、他の必要なphpライブラリとともにNginxWebサーバーをインストールします。
sudo apt install nginx php-cli php-fpm php-mysql php-json php-opcache php-mbstring php-xml php-gd php-curl sudo apt install mariadb-client
Webサーバーからこのコマンドを実行すると(基本的に、データベースにリモートでログインする)、データベースサーバーへの接続をテストできます。
sudo mysql -u remote-admin -h 192.168.56.252 -p
2. WordPressをインストールして構成し、Nginxを構成します。ここでは、リモートデータベースサーバーのアドレスを追加する必要があるWordPressの部分のみを構成します。 WordPressのインストール方法とNginxの構成方法の詳細な手順が必要な場合は、この投稿で手順を確認できます。
cd /var/www/html/wordpress/ sudo mv wp-config-sample.php wp-config.php sudo nano wp-config.php
データベース行で、ローカルホストをデータベースサーバーのIPアドレスに置き換えます。例として次の図を参照してください:
3. Nginx confファイルを作成し、デフォルトのファイルを削除します:
sudo nano /etc/nginx/sites-available/wordpress.conf sudo ln -s /etc/nginx/sites-available/wordpress.conf /etc/nginx/sites-enabled/
使用できるNginxconfは、前述したのと同じ投稿にあります。
sudo rm /etc/nginx/sites-available/default sudo rm /etc/nignx/sites-enabled/default
この構成が完了すると、WordPressを実行し、リモートデータベースにアクセスして、WordPressのインストールを完了することができるようになります。
これで、Webサーバーとデータベースサーバーが別々になっているWordPressサイトが実行されているはずです。セットアップに満足したら、ここで停止できます。これらは、リモートデータベースを使用してWordPressをインストールするために必要な手順であり、この時点で、すべてが稼働しているはずです。それ以外の場合は、次の最後の章に進み、Webとデータベースサーバー間のデータベース接続とトラフィックを保護および暗号化し、セットアップをより安全にする方法を説明します。
SSLを使用してデータベース接続を保護および暗号化します(オプションですが推奨)
また、Webサーバーとデータベースサーバー間のトラフィックを保護および暗号化することも、優れたセキュリティ慣行であり、セキュリティの追加レイヤーです。その理由は、安全で暗号化されていない場合、攻撃者が何らかの方法でプライベートサブネット(サーバーが配置されているプライベートLANネットワーク)またはWebサーバーに侵入した場合、攻撃者はトラフィックを傍受して盗聴する可能性があるためです(監視してデータを取得する)これにより、Webサイトやサーバーが侵害されたりハッキングされたりする可能性があります。
データベースサーバー証明書
1.両方のサーバー(Webとデータベース)で、証明書(sslまたはcertsの例)をホームディレクトリに保存するための一時ディレクトリを作成します。例として、または保存しやすい場所に作成します。例として、ここで作成します。ホームディレクトリのcertsディレクトリ:
cd mkdir certs
まずデータベースサーバーから始めます。作成したばかりの新しいcertsディレクトリに切り替えます。
cd certs
2.データベースサーバーで、CAキー、証明書、および秘密キーを生成します。プロンプトに従い、プロンプトが表示されたらそれに応じて答えます。以下の写真を参考にしてください。注意すべきことの1つは、Common name(これは非常に重要です)プロンプトです。データベースサーバー名を要求しています。ここで、サーバーのIPアドレス(私たちが持っているような)またはサーバーのドメイン名(ホスト名がある場合)を追加する必要があります。一致するサーバー証明書とクライアントキーを作成するため、情報は一致している必要があります。:
sudo openssl genrsa 4096 > ca-key.pem sudo openssl req -new -x509 -nodes -days 1825 -key ca-key.pem -out cacert.pem
2番目のコマンドでは、属性-days 1825は、作成された証明書が5年間(1825日)有効であることを示しています。必要に応じて曜日を設定できます。
3.次に、RSA秘密鍵を作成し、証明書に署名します。
sudo openssl rsa -in server-key.pem -out server-key.pem
sudo openssl req -newkey rsa:4096 -days 1825 -nodes -keyout server-key.pem -out server-req.pem
sudo openssl x509 -req -in server-req.pem -days 1825 -CA cacert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
これで、証明書を恒久的な場所に移動できます:
sudo mkdir /etc/mysql/ssl sudo mv *.* /etc/mysql/ssl cd /etc/mysql/ssl
Webサーバー証明書
4.クライアント証明書を生成します。プロンプトはデータベースサーバーの場合と同じですが、一般名の質問に、WodpressがインストールされているWebサーバーの詳細(WebサーバーのIPアドレスなど)を入力します。 RSAを作成し、証明書に署名します:
sudo openssl req -newkey rsa:2048 -days 1825 -nodes -keyout client-key.pem -out client-req.pem sudo openssl rsa -in client-key.pem -out client-key.pem sudo openssl x509 -req -in client-req.pem -days 1825 -CA cacert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
両方のサーバーのSSL構成
データベースサーバーのセットアップ
1.次のステップは、作成した証明書を使用するようにサーバーを構成し、Webサーバーとデータベースサーバー間のSSL接続を有効にすることです。まず、MariaDBサーバー構成で構成を編集します:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
そして、次の行を見つけて、コメントを外し、作成した証明書のディレクトリとファイルに一致する行を書き直します。
ssl-ca=/etc/mysql/ssl/cacert.pem ssl-cert=/etc/mysql/ssl/server-cert.pem ssl-key=/etc/mysql/ssl/server-key.pem>
ファイルを保存して終了します。
2.次に、rootとしてMariDBにログインし、次のクエリを実行して、SSLを使用した場合にのみWebサーバーからの接続を許可するサーバーで有効にします。
sudo mysql -u root -p GRANT ALL PRIVILEGES ON wptest.* TO 'wpadmin'@'192.168.56.251' REQUIRE SSL; FLUSH PRIVILEGES; exit
データベースサーバーを再起動します:
sudo systemctl restart mariadb.service
Webサーバーのセットアップ
3.ディレクトリ/etc/ mysql / sslにいる間(またはここに移動)、scpツールを使用して、クライアント証明書をWebサーバーにコピーします(webuserとIPアドレスは、実際のユーザー名とIPアドレスに置き換えられます) Webサーバー):
scp cacert.pem client-cert.pem client-key.pem [email protected]:~/certs
次に、Webサーバーに切り替えてログインし、証明書を永続的な場所に移動します(データベースサーバーの場合と同じ):
sudo mkdir /etc/mysql/ssl cd certs sudo mv /certs/*.* /etc/mysql/ssl
最初のステップでインストールしたMariaDBクライアントの構成ファイルを編集します。サーバーと同じ場所にあります:
sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf
そして、データベースサーバーで行ったのと同じSSL([mysql]セクションの下にあるはずです)行を見つけて、/ etc / mysql/sslディレクトリに追加した証明書の場所とファイル名と一致させます。
[mysql] ssl-ca=/etc/mysql/ssl/cacert.pem ssl-cert=/etc/mysql/ssl/client-cert.pem ssl-key=/etc/mysql/ssl/client-key.pem
ファイルを保存して終了します。
接続がリモートログインで機能しているかどうかをテストできます:
mysql -u wpadmin -h 192.168.56.252 -p
4.最後に編集するファイルはwp-config.phpです。 SSL構成行もそこにある必要があります:
sudo nano /var/www/html/wordpress/wp-config.php
データベース名の行の前に行を追加します:
define(‘MYSQL_CLIENT_FLAGS’、MYSQLI_CLIENT_SSL);
写真を参照してください:
Nginx Webサーバーを再起動し、WebブラウザーからWordPressのインストールを完了します。稼働している必要があります。
概要
この記事を要約すると、リモートデータベースでWordPressをインストールする方法の手順を説明しました。また、2つのサーバー間の接続を保護するプロセスについても説明しました(自己署名証明書の前に経験したことがない場合、および操作方法については、上記の手順をスキップできます。必須ではなく、推奨事項のみです)。 。 WordPressをリモートデータベースにインストールする方法の基本的なプロセス自体はそれほど難しくなく、いくつかの利点があります。1つは、Webサーバーのパフォーマンスとメンテナンスがかなり簡単になり、メンテナンスが必要な場合のダウンタイムを減らすことができることです。