LoginSignup
11
11

More than 5 years have passed since last update.

WordPressをPostgreSQLで使うメモ

Posted at

ひょんなことからApache+WordPress+PostgreSQLの組み合わせを使うことがあったので、そのときのメモです。

wp-config.phpの編集

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/ から自動生成したものを使用

wp-config.php
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テーブルの接頭辞を変更

wp-config.php
$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カ所を編集

db.php
define( 'PG4WP_LOG_ERRORS', false);  // エラーを記録したい場合はtrue
define( 'PG4WP_INSECURE', false);    // 動作しない場合trueに変更

wordpress/wp-content/plugins/pg4wp/driver_pgsql.php の末尾に以下を追記

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に変更するなどの対応が必要になります。

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11