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とアプリケーションを繋ぐミドルウェア製品のスペシャリスト。トレンドな技術は積極的に触れるほど好奇心旺盛。最近はプロアクティブなサポートを目指して粉骨砕身。趣味はボードゲーム。

アシスト データベース ウェビナー


■商標に関して
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • EDB
2021.08.26

EDBのDBMS_SCHEDULERでセキュアなジョブをスケジューリングする方法

EDBのDBMS_SCHEDULERを使うことでDBのネイティブな機能だけでセキュアにジョブをスケジュールすることができます。今回はスーパーユーザーでのスケジュール方法と非スーパーユーザでジョブをスケジュールするセキュアな方法をご紹介いたします。

  • EDB
2021.07.02

PostgreSQL/EPAS13新機能:パラレルVacuumは高速に処理できるのか?

PostgreSQL管理者を悩ませる「肥大化」は可能な限り迅速にバキューム処理で対応する必要があります。PostgreSQL13では、単一テーブルに作成された複数のインデックスのバキューム並列を実行可能にする Parallel Vacuum機能が導入されました。本記事では検証結果をご紹介します。

  • EDB
  • PostgreSQL
2021.07.01

Postgres Vision 2021 に登壇しました!

毎年恒例のEnterpriseDB社主催イベント「Postgres Vision」が2021年6月22日・23日にバーチャル形式で開催。「アジアにおけるPostgresの採用と利用に関するパネルディスカッション」に日本PostgreSQLユーザ会(JPUG)理事長も務めるアシストの喜田紘介が登壇しました。

ページの先頭へ戻る