Marlock Homes Diary

備忘録。忘れないように書きます。

WordPressでPostgreSQLを使用する!!

こんにちは!!

ブログの管理に、WordPressを使ってみたいなと!!と思っていましたが、
デフォルトのデータベースがMySQLでした。。。
MySQLより、PostgreSQLの方が慣れているので、
PostgreSQL for WordPress (PG4WP)を使用して、
データベースをPostgreSQLに変更してみました!!

# 以下の手順はPostgreSQLをインストールしていることを前提にしています。

前提条件

1.OSのバージョン

# cat /etc/redhat-release
CentOS release 6.5 (Final)


2.WordPressのダウンロード

# cd /var/www/html/
# wget http://ja.wordpress.org/wordpress-3.9.1-ja.zip

3.WordPressの展開

# unzip wordpress-3.9.1-ja.zip

4.WordPress設定ファイルの修正

# cd wordpress
# cp -p wp-config-sample.php wp-config.php
# vi wp-config.php
(変更後)
// **PostgreSQLの設定
define('DB_NAME', 'wordpress');
define('DB_USER', 'postgres');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

//https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org の秘密鍵サービスで自動生成した値を記載
define('AUTH_KEY',         'xxxxx');
(以降、省略)

5.PostgreSQL for WordPress (PG4WP)の配置

# cd /var/www/html/wordpress/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 postgresql-for-wordpress.1.3.0.zip

6.PostgreSQL for WordPress (PG4WP)の設定

# cd pg4wp/
# vi db.php
(編集後)
define( 'PG4WP_INSECURE', true);
wb-content直下に移動させる
# mv db.php ../../

7.WordPress用のデータベース作成

# su - postgres
$ createdb wordpress

8.WordPressインストール
ブラウザから/wordpress/wp-admin/install.phpにアクセスしてインストール。

補足
a.Word-Pressインストール時のエラー対処

1.以下のメッセージがブラウザに出力された

Your PHP installation appears to be missing the PostgreSQL extension which is required by WordPress with PG4WP.

以下を実行

# yum install php-pgsql

2.ブラウザに何も表示されない。
apacheerror_logを確認

tail -f /var/log/httpd/error_log
PHP Fatal error:  Call to undefined function wpsql_errno() in /var/www/html/wordpress/wp-content/plugins/pg4wp/core.php(32) : eval()'d code on line 1531

以下を修正

# vi /var/www/html/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);
        }
||<        

参考URL
https://vitoriodelage.wordpress.com/2014/06/06/add-missing-wpsql_errno-in-pg4wp-plugin/

b.インストール完了時のメッセージ

(原因調査中)
>||
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

成功しました !

WordPress がインストールされました。もっと何か作業をしたかったですか ? がっかりさせてゴメンナサイ。これだけです