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
コマンド終了後の、現在のディレクトリ構成は次のようになっています。
(別にコマンドでなくても、エクスプローラで移動させても同じです)
/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 拡張モジュールがインストールされていませんよ」と叱られた場合は、Cygwin の setup-x86_64.exe をダブルクリックして、Cygwin Setup を実行してインストールします。
上図のマル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
にアクセスしてみます。
上のような「データベース接続エラー」が出れば、まず 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
にアクセスしてみます。
テスト環境に過ぎませんが、ユーザー名とパスワードはメモしておきましょう。忘れると再設定などの手間になります。
WordPress の設定を確認します
上の画面まで出せれば、今回のミッションは完了です。
MySQL と PostgreSQL の WordPress、両方試してみてください。
お疲れ様でした。
-
Cygwin で PostgreSQL を速攻セットアップする
このページでは Cygwin に PostgreSQL をセットアップして実行する手順を追っていきます。 フリーの DB ...
続きを見る
-
Cygwin で Apache と PHP を速攻セットアップする
Cygwin を使って Apache を速攻セットアップする手順です。 本ページはこんな方におすすめ Windows 上 ...
続きを見る
-
Cygwin で MySQL を速攻セットアップする
Cygwin に MySQL(MariaDB) をセットアップして実行する手順です。 MySQL を Cygwin でセ ...
続きを見る
-
Windows に Cygwin をセットアップする入門編
Cygwin は Windows 上で Linux ディストリビューションと同様の機能が使えるようにする、オープンソース ...
続きを見る