ひょんなことからApache+WordPress+PostgreSQLの組み合わせを使うことがあったので、そのときのメモです。
wp-config.phpの編集
/** WordPress のためのデータベース名 */
define('DB_NAME', 'database_name_here');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'username_here');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'password_here');
/** MySQL のホスト名 */
define('DB_HOST', 'localhost');
/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');
認証用ユニークキーを設定
https://api.wordpress.org/secret-key/1.1/salt/ から自動生成したものを使用
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
セキュリティのためにDBテーブルの接頭辞を変更
$table_prefix = 'wp_';
PostgreSQL for WordPressプラグインをインストール
$ cd wp-content/plugins/
$ wget http://downloads.wordpress.org/plugin/postgresql-for-wordpress.1.3.0.zip
$ unzip postgresql-for-wordpress.1.3.0.zip
$ mv postgresql-for-wordpress/pg4wp ./
$ rm -rf postgresql-for-wordpress
$ rm postgresql-for-wordpress.1.3.0.zip
db.phpをwp-content直下に移動
$ mv pg4wp/db.php ../
PostgreSQL for WordPressの設定
db.phpの以下の2カ所を編集
define( 'PG4WP_LOG_ERRORS', false); // エラーを記録したい場合はtrue
define( 'PG4WP_INSECURE', false); // 動作しない場合trueに変更
wordpress/wp-content/plugins/pg4wp/driver_pgsql.php の末尾に以下を追記
function wpsql_errno($connection) {
$result = pg_get_result($connection);
$result_status = pg_result_status($result);
return pg_result_error_field($result_status, PGSQL_DIAG_SQLSTATE);
}
WordPressインストールディレクトリに戻り、一部ファイル・ディレクトリのパーミッションを変更
$ sudo chmod 660 wordpress/wp-config.php
$ mkdir wordpress/wp-content/uploads
$ sudo chmod 775 wordpress/wp-content/uploads
WordPressの各ファイルの所有グループをapacheに変更する
$ sudo chgrp -R apache wordpress/
WordPress用のデータベースを作成する
$ sudo su - postgres
$ psql
=> create database wordpress;
CREATE DATABASE
=>\q
$ exit
php-pgsqlをインストール(入れていない場合)
$ sudo yum install php-pgsql
ブラウザから/wordpress/wp-admin/install.php にアクセスしてインストール。
インストール完了時に以下のようなDB構文エラーが発生するもののとりあえずは問題なく利用可能
WordPress database error: [ERROR: syntax error at or near "," LINE 1: DELETE a, b FROM wp_options a, wp_options b WHERE ^]
DELETE a, b FROM wp_options a, wp_options b WHERE a.option_name LIKE '\_transient\_%' AND a.option_name NOT LIKE '\_transient\_timeout\_%' AND b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) ) AND b.option_value < 1403947144
WordPress database error: [ERROR: syntax error at or near "," LINE 1: DELETE a, b FROM wp_options a, wp_options b WHERE ^]
DELETE a, b FROM wp_options a, wp_options b WHERE a.option_name LIKE '\_site\_transient\_%' AND a.option_name NOT LIKE '\_site\_transient\_timeout\_%' AND b.option_name = CONCAT( '_site_transient_timeout_', SUBSTRING( a.option_name, 17 ) ) AND b.option_value < 1403947144
あえて各ファイル・ディレクトリの所有者は変更せずグループのみapacheにしてますが、問題が発生するようなら該当箇所のパーミッションを適宜変更するか、所有者をapacheに変更するなどの対応が必要になります。