WordPress PostgreSQL

Cygwin PC-UNIX Windows WordPress ソフトウェア データベース 設定

WordPress のデータベースを PostgreSQL にする

Cygwin に Apache と PHP、PostgreSQL が設定されている状況で、WordPress を PostgreSQL にする手順です。

設定環境


CYGWIN_NT-10.0 PC 3.1.4(0.340/5/3) 2020-02-19 08:49 x86_64 Cygwin
Apache/2.4.39 (Unix) May 1 2019 19:37:31
postgres (PostgreSQL) 12.2
psql (PostgreSQL) 12.2
WordPress 5.4 日本語版
PHP 7.3.7 (cli) (built: Jul 21 2019 18:10:35) ( NTS )
GNU Wget 1.19.1 built on cygwin.

Apache プラス PHP で WordPress するには、定番は MySQL(MariaDB)です。WordPress は昔から MySQL 前提でコードが書かれているところがあるので、他のデータベースにすると何らかの支障が出るかもしれません。そのなかでも、PostgreSQL は 2000 年代から地道に対応してきているので、嫌な支障はあまりありません。

今回のミッション

  • PostgreSQL を WordPress で動かす
使いやすさと扱いやすさ優先で設定していきます。

  • Apache を動かす
  • PostgreSQL を動かす
  • データベースを PostgreSQL にするプラグインをセットアップする
  • WordPress の動作確認をする

PostgreSQL 接続の確認を行う

Cygwin で PostgreSQL を速攻セットアップする」で設定が完了している場合は、管理者モードで Cygwin のターミナルを立ち上げて、サービスを起動します。

 cygwin
# cygrunsrv -S cygserver
 cygwin
$ /etc/rc.d/init.d/postgresql startlocal

あるいは、

 cygwin
$ /usr/sbin/postmaster

あるいは原始的に

 cygwin
/usr/sbin/pg_ctl -D /srv/pgdata start

で PostgreSQL サーバーを起動できます。
エラーが出てしまった場合は、ユーザー権限、設定とディレクトリのパーミッションなどを見直す必要があります。

無事に起動できていれば、ps とやると postgres が起動しているのがわかります。

 cygwin
$ ps
~(略)   TTY     UID    STIME COMMAND
~(略)  ?     197608 00:05:00 /usr/sbin/postgres
~(略)  pty0  197608 00:08:03 /usr/bin/ps
~(略)  ?     197608 00:05:00 /usr/sbin/postgres
~(略)  ?     197608 00:05:00 /usr/sbin/postgres
~(略)  pty0  197608 00:04:48 /usr/bin/bash
~(略)  ?     197608 00:05:00 /usr/sbin/postgres
~(略)  pty0  197608 00:04:58 /usr/sbin/postgres
~(略)  ?     197608 00:05:00 /usr/sbin/postgres
~(略)  ?     197608 00:05:00 /usr/sbin/postgres

 cygwin
$ psql testdb
psql (12.2)
"help"でヘルプを表示します。
testdb=# \l
                                     データベース一覧
   名前    | 所有者 | エンコーディング | 照合順序 |(略)
-----------+--------+------------------+----------+(略)
 postgres  | grazie | SQL_ASCII        | C        |(略)
 template0 | grazie | SQL_ASCII        | C        |(略)
           |        |                  |          |(略)
 template1 | grazie | SQL_ASCII        | C        |(略)
           |        |                  |          |(略)
 testdb    | grazie | SQL_ASCII        | C        |(略)
(4 行)
testdb=# \q

として、無事にクライアントから接続できることを確認します。

使用するデータベースと環境

データベース名 : testdb
ユーザー名 : wpadmin
パスワード : 12345678
WordPress のプラグインディレクトリ : /srv/www/htdocs/wordpress/wp-content/plugins

WordPress の PostgreSQL 接続用プラグインをインストールする

公式の WordPress サイトの PostgreSQL 接続の「postgresql-for-wordpress」プラグインはここ数年以上更新されていないため、github.com にあるものを使います。

https://github.com/kevinoid/postgresql-for-wordpress
から WordPress 用の PostgreSQL 接続のプラグインをダウンロードします。ダウンロード方法そのものは好きな方法でかまいませんが、ここでは wget で行いました。

インストール先は wp-content/ 以下に行い、解凍した db.php を wp-content/ に移動する作業が必要です。

 cygwin
$ cd /srv/www/htdocs/wordpress/wp-content/
$ wget https://codeload.github.com/kevinoid/postgresql-for-wordpress/zip/wordpress4-compat
codeload.github.com (codeload.github.com)|54.251.140.56|:443 に接続しています... 接続しまし た。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [application/zip]
`wordpress4-compat' に保存中
wordpress4-compat          [ <=>                         ]  18.11K  --.-KB/s 時間 0.03s
2020-04-26 23:42:21 (577 KB/s) - `wordpress4-compat' へ保存終了 [18541]
$ unzip wordpress4-compat
Archive:  wordpress4-compat
f2a05dddbeec902ec5a095b1e0698accf89d832d
   creating: postgresql-for-wordpress-wordpress4-compat/
   creating: postgresql-for-wordpress-wordpress4-compat/pg4wp/
  inflating: postgresql-for-wordpress-wordpress4-compat/pg4wp/core.php
  inflating: postgresql-for-wordpress-wordpress4-compat/pg4wp/db.php
  inflating: postgresql-for-wordpress-wordpress4-compat/pg4wp/driver_mysql.php
  inflating: postgresql-for-wordpress-wordpress4-compat/pg4wp/driver_pgsql.php
  inflating: postgresql-for-wordpress-wordpress4-compat/pg4wp/driver_pgsql_install.php
  inflating: postgresql-for-wordpress-wordpress4-compat/readme.txt

普通に解凍すると「postgresql-for-wordpress-wordpress4-compat」フォルダが作成され、その下の pg4wp というフォルダが本体です。

 cygwin
# cd /srv/www/htdocs/wordpress/wp-content/postgresql-for-wordpress-wordpress4-compat
# mv pg4wp/db.php ..
# mv pg4wp ..
# cd ..
# rm -f postgresql-for-wordpress-wordpress4-compat

コマンド終了後の、現在のディレクトリ構成は次のようになっています。
(別にコマンドでなくても、エクスプローラで移動させても同じです)

WP pg4wp ディレクトリ構成

/srv/www/htdocs/wordpress/wb-content の中に db.php があれば大丈夫です。

次にデータベースのプラグインのパラメータを書き換えます。
具体的に触るファイルは db.php で、接続制限を緩く設定します。

 
define( 'PG4WP_INSECURE', true);

エディタの起動が面倒な方は以下のようにします。

 cygwin
$ cd /srv/www/htdocs/wordpress/wb-content
$ sed -i 's@define( 'PG4WP_INSECURE', false);@define( 'PG4WP_INSECURE', true);@g' db.php

PostgreSQL と PHP をつなぐモジュールの確認を行う

まず、Apache(httpd)を起動します。

 cygwin
$ /usr/sbin/httpd -k start

として、Apache をまず起動します。
次に、ブラウザの URL 欄を
http://localhost/wordpress/wp-admin/install.php
にしてアクセスできるかどうかチェックします。

PostgreSQL PHOP モジュール欠如

上のような、「PostgreSQL 拡張モジュールがインストールされていませんよ」と叱られた場合は、Cygwin の setup-x86_64.exe をダブルクリックして、Cygwin Setup を実行してインストールします。

Cygwin PostgreSQL PHP モジュール

上図のマル1を「Full」に、マル2を「pgsql」として検索すれば、「php-pgsql」というモジュールが出てきます。マル3で適切なバージョン(普通は最新版)を選んでマル4をクリックしてインストールします。
モジュールを有効化するために、Apache を再起動します。

 cygwin
$ /usr/sbin/httpd -k stop
$ /usr/sbin/httpd -k start

再度、ブラウザで
http://localhost/wordpress/wp-admin/install.php
にアクセスしてみます。

WP データベース接続エラー

上のような「データベース接続エラー」が出れば、まず db.php の設定はうまく進んでいます。
ユーザー名とパスワードは以前の MySQL の時と同じに設定しているので、本サイトの通りに設定を進めた方は、上の接続エラーが出ずに接続できてしまうかもしれません。その場合は、次のステップに進んでください。
上のエラーは、/srv/www/htdocs/wordpress/wp-config.php のファイルを書き換えることで対応できます。
wp-config.php をエディタで開いて、28行目から 38行目あたりを書き換えます。

 
/** WordPress のためのデータベース名 */
define( 'DB_NAME', 'testdb' );
/** MySQL データベースのユーザー名 */
define( 'DB_USER', 'wpadmin' );
/** MySQL データベースのパスワード */
define( 'DB_PASSWORD', '12345678' );
/** MySQL のホスト名 */
define( 'DB_HOST', 'localhost' );

WordPress の設定を PostgreSQL で書き込みます

設定のため、ブラウザで
http://localhost/wordpress/wp-admin/install.php
にアクセスしてみます。

ワードプレス DB2 設定

テスト環境に過ぎませんが、ユーザー名とパスワードはメモしておきましょう。忘れると再設定などの手間になります。

WordPress の設定を確認します

ワードプレス DB2 設定成功

上の画面まで出せれば、今回のミッションは完了です。
MySQL と PostgreSQL の WordPress、両方試してみてください。
お疲れ様でした。


関連記事
PostgreSQL インストール
Cygwin で PostgreSQL を速攻セットアップする

Cygwin に PostgreSQL をセットアップして実行する手順です。 世間的(世界的)には MySQL(Mari ...

続きを見る


関連記事
Apache 設定
Cygwin で Apache と PHP を速攻セットアップする

Cygwin を使って Apache を速攻セットアップする手順です。 設定環境 CYGWIN_NT-10.0 PC 3 ...

続きを見る


関連記事
MySQL 設定
Cygwin で MySQL を速攻セットアップする

Cygwin に MySQL(MariaDB) をセットアップして実行する手順です。 設定環境 CYGWIN_NT-10 ...

続きを見る


関連記事
Cygwin
Windows に Cygwin をセットアップする入門編

Cygwin は Windows 上で Linux ディストリビューションと同様の機能が使えるようにする、オープンソース ...

続きを見る

-Cygwin, PC-UNIX, Windows, WordPress, ソフトウェア, データベース, 設定
-, ,

© 2021 ネーテルス