HyperDB亡き後の救世主。プラグイン「LudicrousDB」

wordpressでdbレプリケーションを実現!

mysqlのバージョンアップに伴いHyperDBが使えなくなってしまいました。
このため、マスターとスレーブに分散接続していたサービスで、やむを得ず、web1からはマスターへ、web2からはスレーブへと接続するようにしていました。

記事の更新などはhostsファイルでマスターに必ず接続するようにし、スレーブへ書き込むことはありませんでした。

しかし、先日プラグインからのdb書き込みができず、エラーが発生。とりあえず、マスターへ接続するようにして対応しました。

その後、HYperDBの更新がされているかもしれないとい思い、ググったところHyperDBのgithubでその後継としてludicrousDBというものがあることを知り、調べると現在も管理されているようなので、インストールしました。

問題なく動いていますので簡単にインストールの手順をご紹介します。
ポイントはiudicrousdb.phpをpluginファルダ内に配置することです。

githubなどでは、その点が詳しく書かれておらず、参考になれば幸いです。

インストール手順

1)下記urlのgithubからファイルをダウンロードして解凍する

https://github.com/stuttter/ludicrousdb/archive/refs/heads/master.zip

2)コンフィグレーションファイルdb-config.phpを編集する。

<例>

/master writter/
$wpdb->add_database(
    array(
        ‘host’ => DB_HOST,
        ‘user’ => DB_USER,
        ‘password’ => DB_PASSWORD,
        ‘name’ => DB_NAME,
        )
);
//DB_HOST 、DB_USER 、DB_PASSWORD 、DB_NAME はwp-configに設定されているものを引き継ぐ。
//writeとreadパラメーターはデフォルトが可(1)なので記述していない。
//同様にdatasetもglobalがデフォルトなので記述していない

/slave reader/
$wpdb->add_database(
    array(
        ‘host’ => ‘172.16.0.2’,
        ‘user’ => DB_USER,
        ‘password’ => DB_PASSWORD,
        ‘name’ => DB_NAME,
        ‘write’ => 0,
        ‘read’ => 1,
        ‘dataset’ => ‘global’,
    )
);
//hostには読み取り専用のホスト名を記述する。
//DB_USER 、DB_PASSWORD 、DB_NAME はwp-configに設定されているものを引き継ぐ。
//writeは0として書き込み系のsqlは飛ばさない。
//readは1として読み込み系のsqlが飛ぶようにする。
//readは2,3など数値を増やすと、接続頻度(mastar: slave)が1:2、1:3というように調整が可能。

3)ファイルの配置

/db-config.php
/wp-content/db-error.php
/wp-content/db.php
/wp-content/plugins/ludicrousdb.php
/wp-content/plugins/ludicrousdb/
/wp-content/plugins/ludicrousdb/includes/class-ludicrousdb.php
/wp-content/plugins/ludicrousdb/includes/functions.php

プラグインディレクトリにludicrousdb.phpを配置するとwpは自動的にludicrousdbプラグインを読み込む。
HyperDBではwp-congfig.php内で
define(‘DB_CONFIG_FILE’, ABSPATH . ‘db-config.php’);
というように書き加えていたが、LudicrousDBは不要。
functions.php内でDB_CONFIG_FILEの設定を行っている。

4)プラグインの有効化

プラグインが有効化されていなかったら、有効にしてください。

以上です。

wordpressのメディアライブラリでグリッド表示ができない

wordpressの再インストールで解決

いろいろググって試しました。

テーマを変更する
function.phpを再度アップしたり、全角スペースが無いか確認。
admin-ajax.phpの書き換え。

どれもだめで半分諦めていましたが、「バージョン6.2.2–jaを再インストール」をクリックしたら解決しました。

MW WP Form でページが遷移しない。LazyLoad Background Imagesが原因でした。

タイトルどおりです。ググっても何もヒットせず、仕方ないので、MW WP Formが動いていた移行にインストールしたプラグインを一人ずつ外して確認しました。

その結果、LazyLoad Background Imagesが悪さをしていることがわかりました。

重くなりがちな背景画像を遅延表示しくれる便利がプラグインなのですが、コンテンツの置換を行うプラグインですので、本来置換してはいけないコードを差し替えてしまっていたのでしょう。

丸1日近く時間を使ってしまいました(汗

URIにスラッシュが抜けているのがいけないとか、ALL IN ONE SEOが悪いとか色々見つかりましたが、どれも違っていました。

wordpressのthemeでTheme Name:の記述が無い

すでに公開されているwordpressで作られたサイトのテーマファイルを確認していたら、style.cssにテーマ名の記述が無いんです。

/*
Theme Name: テーマの名前(必須)
Theme URL: テーマのサイトのURI
Description: テーマの説明
Author: 作者の名前
Version: テーマのバージョン
*/

というようにstyle.cssの上部に記述します。しかし以下のようになっていました。

/* ****************************************************
Title: layout.css
Created: 0000-01-29
Last Modified: 0000-01-29
Editor(s): **
***************************************************** */

規約違反?!ではないかと思いますが、wp管理ページの「外観>テーマ」にはちゃんとテーマ名が存在し、それが適用されているのです。

試しに、そのテーマのディレクトリ名を変更してみたら、その名前がテーマ名に変わりました。どうやら、styke.cssにTheme Name:の記述がないときは、テーマのディレクトリ名が使われるようです。

こっそりと追加しておきました💦

Amazon Linux 2でImageMagickとimagickをyumでインストール

AWSのEC2「Amazon Linux 2、php7.4」に設置したwordpressにImageMagicが必要だということでインストールしました。

ImageMagic自体はyumで難なくインストールできました。

$sudo yum install ImageMagick

これだけではphpからは使えないのでimagickモジュールも必要です。ぐぐってみるとpeclを入れて、更にソースからコンパイルするなどありましたが、yum listで確認したらあるじゃないです。

$sudo yum list | grep imagick
php-pecl-imagick.x86_64 3.5.1-1.amzn2 amzn2extra-php7.4
php-pecl-imagick-debuginfo.x86_64 3.4.4-1.el7 epel-debuginfo
php-pecl-imagick-devel.noarch 3.5.1-1.amzn2 amzn2extra-php7.4

というわけで

$sudo yum install php-imagick

これでインストールできたのでphp-fpmを再起動。

$sudo systemctl restart php-fpm

phpinfoで確認。

簡単です。

プラグイン「recaptcha-for-mw-wp-form」のエラー:「grecaptcha is not defined」に対応するために一部を修正しました

MW WP FormとreCAPTCHA for MW WP FormでGoogle reCAPTCHAを使うように設定したのですが、デベロッパーツールのコンソールで「Uncaught ReferenceError: grecaptcha is not defined」というjavascriptのエラーが出てしまいました。

他のサイトでは問題なかったのですが、htmlのコードが長いのと画像もあるためhtmlの読み込みが遅く、https://www.google.com/recaptcha/api.jsからの読み込みにずれが生じエラーとなってしまったようです。

続きを読む

wordpressのビジュアルモードにcssを適用する方法

wordpressの固定ページでフロント向けのcssを記述しても、管理画面上ではcssが効きません。なので、管理画面用のcssを記述すれば、なんとかなるかなと思ったのですが、これがうまくいきません。なぜならば、その領域はiframeで構成されているためでした。iframe内のコードに対して外からはcssを当てられないのです。

続きを読む

wordpressで管理画面が真っ白になる状態を解決しました

真っ白になるのはよくあるトラブルです。一番怪しいのはプラグインのコンフリクトやphpのバージョン違いによるエラーです。その次に怪しいのがテーマ内のphpでのおなくじバージョン違いによるエラーです。

テーマやプラグインの変更はログインしないとできないので、dbを直接いじります。

続きを読む

MW WP Formでエラーを解消:smtpサーバーを利用する

MW WP Formは日本語の解説ページが充実していて、wordpressで作られたサイトのお問い合わせフォームなどによく利用されます。管理画面で色々設定を変更できるので、開発者だけでなく、管理者にも使いやすいのです。

ですが、それ故に、あまりメール送信システムに関する知識が無くても、設置できてしまい、いざトラブルが発生してしまうと、どうしたら良いのかわからず、困る方が多いのも事実だと思います。

続きを読む