Help us understand the problem. What is going on with this article?

WordPressをPostgreSQLで使うメモ

More than 3 years have passed since last update.

ひょんなことから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に変更するなどの対応が必要になります。

kasano
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした