Database Support Blog

  • EDB
  • PostgreSQL
2021.09.09

WordPress のデータベースをPostgreSQLに変更する方法

当記事はエンタープライズDB社のブログ記事の翻訳の紹介および弊社考察を加えています。

Mohsin Ejaz. (2020, Sep, 23). How to deploy WordPress with highly available PostgreSQL.
The EDB Blog.
https://www.enterprisedb.com/postgres-tutorials/how-deploy-wordpress-highly-available-postgresql


WordPressは、デフォルトのデータベース管理システムとしてMySQLを使用しています。PostgreSQLを使用したいユーザーからは、"MySQLではなくPostgreSQLでWordPressを使用する方法はありますか?"という質問がよくあります。

このガイドでは、その方法の概要をご紹介します。


はじめに

WordPressは、Webサイトやブログ、アプリケーションを作成するためによく使われるオープンソースソフトウェアです。WordPressには多くのデザインや機能、プラグインが用意されており、インストールしたWordPressに追加することができます。また、必要に応じて使用できる多くの商用プラグインも用意されています。

柔軟なコンテンツマネジメントシステム(CMS)により、コンテンツの管理が容易になります。下書きの作成、公開スケジュールの設定、記事の修正状況の確認などが可能です。また、WordPressには、コンテンツの公開、非公開を選択することができ、投稿やページをパスワードで保護することもできます。WordPress は無料で、Free Software Foundation の GPLv2(またはそれ以降)のライセンスのもとで利用できます。


前提要件

WordPressを動作させるには、最低でもPHPバージョン5.2.4以上、データベース(ここではPostgreSQLを使用します)、ApacheまたはNginxサーバーが必要です。また、環境に応じて最新のバージョンをインストールするようにしてください。なぜなら、これらのバージョンの中には製造中止になっているものがあり、サイトがセキュリティ上の脆弱性にさらされる可能性があるからです。


PG4WPとは?

前述の通り、WordPressはデフォルトではMySQLデータベースエンジンを使用しています。もし、WordPressをPostgreSQLで使用したい場合は、何らかのプラグインが必要になります。PostgreSQL for WordPress(PG4WP)はそのようなプラグインのひとつで、PostgreSQLデータベースをバックエンドとしてWordPressをインストールして使用することができます。


Centos7にPostgreSQLでWordPressをインストールする方法

今回の例では、OSにCentos 7を使用しています。

前提要件

上述したように、Centos7 Linuxサーバーには、以下の項目をインストールする必要があります。

 ・WebサーバーとしてのApacheまたはNginx
 ・PHPバージョン5.6以上(ここではv7.4を使用します)
 ・任意のバージョンのPostgreSQL(ここではv12を使用しています)


STEP1:システムのアップデートとPORTがブロックされていないことを確認

システムのファイアウォール/iptablesやSELinuxが、必要なPORTをブロックしていないことを確認する必要があります。そうしないと、適切なユーザー権限の問題に直面する可能性があります。

SELinux を無効にするには、以下のコマンドを使用します。

 
 sudo setenforce 0
 

SELinux を無効にした後はシステムのアップデートを行い、システムが最新の状態であることを確認します。これは、次のコマンドを実行することで行うことができます。

 
 sudo yum clean all
 sudo yum -y update
 

この操作は、システムソフトウェアの使用年数やインターネットの速度によって時間がかかる場合があります。


STEP2:Apacheウェブサーバーの設定

Apacheをインストールするには、以下のコマンドを実行する必要があります。

 
 sudo yum -y install httpd
 

これでApacheがインストールされ、下記のようなインストール完了のメッセージが表示されます。

次に、以下のコマンドを実行して、サービスを開始します。

 
 sudo systemctl start httpd
 

Apacheを起動時にスタートさせ、手動でのコマンドを必要とせずに自動的に起動させたい場合は、次のように実行します。

 
 sudo systemctl enable httpd
 

Apacheが起動していることを確認するには、以下のコマンドでステータスを確認します。

 
 sudo systemctl status httpd
 

このコマンドを実行すると、以下のようにサービスステータスが実行中(running)と表示されます。

また、任意のブラウザを開き、「localhost」またはシステムのIPを入力して起動確認することもできます。これにより、以下に示す「Testing 123」のページが表示されます。

以上でApacheの設定は完了です。


STEP3:PHPの設定

最新バージョンのWordPressは、PHPバージョン5.6以上で動作します。以下では、PHPの最新安定版であるバージョン7.4をインストールする手順をご紹介します。

まず、必要なリポジトリを追加する必要があります。以下のコマンドを実行してください。

 
 sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
 sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
 

必要なリポジトリをインストールしたら、次のコマンドを実行して、PHP 7.4をインストールします。

 
 sudo yum -y install yum-utils
 sudo yum-config-manager --enable remi-php74
 sudo yum -y install php php-cli
 

完了すると、次のようなインストール完了メッセージが表示されます。

これでPHPがインストールされましたが、PHPをPostgreSQLと一緒にセットアップする必要があります。そのためには、以下のコマンドを実行して他のモジュールをいくつかインストールする必要があります。

 
 sudo yum -y install php-mysqlnd php-pgsql
 

完了すると、以下のようなインストール完了メッセージが表示されます。

PHP v7.4をインストールした後は、Apacheのサービスを再起動する必要があります。これは、以下のコマンドを実行することで行うことができます。

 
 sudo systemctl restart httpd.service
 

STEP4:PostgreSQLデータベースのインストール

PostgreSQLをインストールするには、まずリポジトリをインストールする必要があります。これは、以下のコマンドを実行することで行うことができます。

 
 wget https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
 

リポジトリファイルのダウンロードが完了したら、次のコマンドを実行してインストールします。

 
 sudo rpm -ivh pgdg-redhat-repo-latest.noarch.rpm
 

これによりリポジトリがインストールされます。完了したら、PostgreSQLのインストールに進ことができます。ここでは、以下のコマンドを実行して、バージョン12をインストールします。

 
 sudo yum install -y postgresql12-*.
 

以上でPostgreSQLのインストールが完了です。


STEP5:DBクラスターの設定

PostgreSQLのインストールが完了したら、クラスタの設定を行う必要があります。そのためには、「/usr/pgsql-12/bin/」にあるbinディレクトリを参照し、以下のコマンドを実行します。

 
 sudo su - postgres
 cd /usr/pgsql-12/bin/
 ./initdb -D /tmp/testdata --no-locale -E UTF8
 

これにより、以下のようにデータベースが初期化されます。

次に、以下のコマンドを実行してサービスを開始します。

 
 ./pg_ctl -D /tmp/testdata start "-o -p 5444"
 

STEP6:PostgreSQLデータベースとユーザの作成

データベースを作成するには、ターミナルを開き、PostgreSQLのbinディレクトリに移動して、以下のコマンドを順に実行します。

 
 sudo su - postgres
 psql -p 5444
 create database testdb;
 create user testuser with password 'testpassword';
 grant all privileges on database testdb to testuser;
 

これにより、以下のように、testtdb と testuser が作成され、必要な権限が付与されます。


STEP7:WordPress最新版のダウンロードと解凍

今度は、WordPressの最新バージョンをダウンロードします。

Apacheサーバーのディレクトリ(/var/www/html)に移動し、以下のコマンドを実行してファイルをダウンロードします。

 
 wget https://wordpress.org/latest.zip
 

ダウンロードが完了したら、フォルダを解凍して、内容を必要なフォルダにコピーします。ここでは、「var/www/html」に「test-with-postgres」という名前のフォルダを作成しました。この作業は、以下のコマンドを実行することで行うことができます。

 
 wget latest.zip
 mkdir test-with-postgres
 cp -rp wordpress/* test-with-postgres/
 

STEP8:PG4WPプラグインの設定

問題を回避するために、WordPressの設定を行う前にPG4WPプラグインをインストールすることをお勧めします。これは、プラグインが正常に読み込まれるようにデータベースを起動するのに役立ちます。

オリジナルのPG4WPプラグインは、WordPressのサイトにあります。時間が経つにつれ、多くの改良がなされ、人々はpg4wpプラグインのフォークされたバージョンをリリースしました。今回の例では、Kevin Locke氏が開発したバージョンを使用します。これまでのところ、どのバージョンのワードプレスとも互換性があることがわかっています。

フォークされたバージョンをクローンする必要があるので、git が必要になります。git をインストールするには、次のコマンドを実行します。

 
 yum install git
 

wp-contentディレクトリ(今回は「/var/www/html/test-with-postgres/wp-content」にあります)に行き、以下のコマンドを使ってPG4WPプラグインをクローンします。

 
 git clone https://github.com/kevinoid/postgresql-for-wordpress.git
 

コンテンツを wp-content ディレクトリに移動します。

 
 mv postgresql-for-wordpress/pg4wp pg4wp
 

また、db.php ファイルを wp-content ディレクトリにコピーする必要がありますが、これは以下のコマンドを実行することで可能です。

 
 cp pg4wp/db.php db.php
 

STEP9:データベースの認証情報を含むwp-config.phpの更新

wp-config-sample.php というサンプルファイルが webroot ディレクトリ(ここでは「/var/www/html/test-with-postgres」)に作成されます。ディレクトリに移動してコピーを作成し、以下のコマンドを実行して wp-config.php という名前に変更します。

 
 cd /var/www/html/test-with-postgres
 cp -rp wp-config-sample.php wp-config.php
 

これで、ステップ6で作成したデータベース名、ユーザー名、パスワードを使って、wp-config.phpファイルを以下のように設定することができます。

 
 // ** MySQL settings - You can get this info from your web host ** //
 /** The name of the database for WordPress */
 define( ‘DB_NAME’, ‘testdb’ );
  
 /** MySQL database username */
 define( ‘DB_USER’, ‘testuser’ );
  
 /** MySQL database password */
 define( ‘DB_PASSWORD’, ‘testpassword’ );
  
 /** MySQL hostname */
 define( ‘DB_HOST’, ‘localhost’ );
  
 /** Database Charset to use in creating database tables. */
 define( ‘DB_CHARSET’, ‘utf8’ );
  
 /** The Database Collate type. Don’t change this if in doubt. */
 define( ‘DB_COLLATE’, ‘’ );
 

STEP10:WordPressのインストール

これでWordPressをインストールする準備が整いました。
「http://localhost/test-with-postgres/wp-admin/install.php」にアクセスして、以下のようにサイト名、ユーザー名、パスワード、メールアドレスを入力します。

“Install WordPress” を押すと、確認のメッセージが表示されます。

これで完了です!


STEP11:WordPressへのログインとバックエンドとしてのPostgreSQLの確認

新しく作成したWordPressサイトの管理画面にログインするには、「http://localhost/test-with-postgres/wp-admin/」にアクセスし、ステップ10で使用した認証情報を入力します。

また、「http://localhost/test-with-postgres/」にあるデフォルトのWordPressページにアクセスすることもできます。

PostgreSQLがバックエンドとして使用されていることを確認するために、クラスタにログインし、以下のコマンドを実行してデータベース内のレコードを確認します。

 
 sudo su - postgres
 psql -U testuser -p 5444 testdb
 \dt
 

このコマンドを実行すると、現在のデータベース内のすべてのリレーションが表示されるので、WordPressが作成したテーブルを見ることができ、PostgreSQLがWordPressのバックエンドとして使用されていることを確認できます。

この記事を参照していただき、PostgreSQLを使ったWordPressの展開が容易にできることを理解していただけましたら幸いです。

(以上、EDB社ブログ記事より翻訳)


まとめ

オープンソースのCMS 「WordPress」は非常に有名で、Webページの作成や更新を手軽にできるシステムとしてシェアを拡大しています。そのため、これからご利用される方も多くいるはずです。PostgreSQL ユーザーの方は、WordPress のバックエンドの DB を PostgreSQL に置き換えることで運用スキルを引き続き活用することができますので、これから WordPress を構築される機会がありましたら当記事を参考にご検討いただけましたら幸いです。


執筆者情報

やすだこうき プロフィール画像

2017年に中途入社。Oracle Database、EDB Postgres/PostgreSQL のサポート経験を経て、2020年からバックサポートを担当。DBとアプリケーションを繋ぐミドルウェア製品のスペシャリスト。トレンドな技術は積極的に触れるほど好奇心旺盛。最近はプロアクティブなサポートを目指して粉骨砕身。趣味はボードゲーム。...show more


■本記事の内容について
 本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。

■商標に関して
 ・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
 ・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
  文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • EDB
  • PostgreSQL
2024.01.16

EDBがもたらすデータベースの新たな価値 ~ EDB社Field CTO Ajit Gadge氏来日、セミナー講演レポート ~

EDB社のAjit Gadge氏を招き「PostgreSQLユーザーに捧ぐ、EDBを使ったDB機能向上とコスト削減の両立」セミナーを開催しました。DB市場の現状やトレンド、EDBの最新動向について紹介しております。アシストセッションのアーカイブ配信の視聴申し込みも可能です。ぜひご覧ください。

  • PostgreSQL
  • EDB
2023.12.20

PostgreSQLのSQLチューニングを体験してみよう!

35年以上教育事業を展開しているアシストが新たに取り組み始めた「ポスグレ学園」。連載最終回となる9回目の記事では、「PostgreSQL SQLチューニング実践」のワークショップ主管である 田中 健一朗 にインタビューしました。

  • PostgreSQL
  • EDB
2023.10.30

データベースの健康診断! ~ PostgreSQL DB稼働分析体験 ~

35年以上教育事業を展開しているアシストが新たに取り組み始めた「ポスグレ学園」。連載8回目となる今回の記事では、PostgreSQL DB稼働分析ワークショップの主管である保田 公貴にインタービューしました。

ページの先頭へ戻る