さくらサーバー – MySQLのアップグレード

概要

2021年11月、さくらインターネットのカスタマーセンターよりメールがあり、内容はMySQL5.1, 5.5から5.7へのアップグレードを推奨するものだった。5.5のサポート終了やWordPressなどCMSの推奨環境のバージョンアップなどの背景によるもの。

私の環境はさくらレンタルサーバーのスタンダードプラン。後述の経緯もあって少しとまどったが、アップグレードとWordPressの設定を終えた。

状況としては、

  • MySQL5.5と並んで、既にMySQL5.7が稼働していた
  • WordPressで使っていたのはMySQL5.5の方

手順の概要は

  1. 5.7のWordPress用データベースを削除
  2. 5.5のWordPress用データベース以外を削除
  3. アップグレード予約・実行
  4. wp-config.php書き換え

経緯

今回の経緯は以下のとおり。

  1. 2016年、さくらレンタルサーバー(スタンダードプラン)の利用開始
    • このときにMySQL、WordPressも運用開始
  2. その後2021年6月までの間に5.5→5.7へアップグレード
    • アップグレード後も5.5は存続
    • このときにWordPressの設定は変更せず
    • このため、これ以降も投稿等は5.5の方に記録
  3. 2021年11月に5.7へのアップグレード推奨メール
  4. 2021年12月に再度アップグレードとWordPress設定変更完了

確認作業

データベース構成

メールを受けてさくらサーバーのコントロールパネルで確認したところ、以下の2つのデータベース(以下、DB)が存在。

  • mysql57.アカウント名.sakura.ne.jp→MySQL5.7
    (mysql2019.db.sakura.ne.jp)
    →システムの管理で使われるホスト名
  • mysql304.db.sakura.ne.jp→MySQL5.5

5.5のデータベースは以下のとおり。

  • information_schemaはMySQLの管理用
  • _wp1はWordPress用のDB
  • _main_testの2つはテスト用に自分で作成したもので、特に重要ではない

5.7のデータベースは以下のとおり。こちらにもWordPress用の_wp1があり、他のDBも5.5と同じ。

WordPress用データベース

MySQL5.5、5.7ともアカウント名_wp1のテーブル構成は同じで、以下のとおり。

ここで、5.5と5.7でwp_ts01_postsに以下のような違いがあった。

5.5の投稿数。投稿日付は2016年6月16日~2021年12月13日で確認時点の日付まで。

5.7の投稿数。2016年6月16日~2021年2月8日まで。

5.5に対して5.7の投稿数が少なく、途中までの投稿記録で途切れている。

wp-config.phpのMySQLホスト名を確認すると、以下のようにMySQL5.5の方のホスト名になっていて、MySQL5.7運用開始後もWordPressは5.5を使っている。

したがってMySQL5.7運用開始後もWordPressでは利用されず、投稿等は5.5の方に記録されていることになる。このことから5.7のWordPress用データベースを破棄して5.5のデータベースに入れ替え、設定変更することにする。

アップグレード

要点

アップグレードの要点は、さくらインターネットのサイトによると以下のとおり。

  • MySQLの5.5→5.7へのアップグレードは、既に5.7が存在していても可能
  • アップグレード先の5.7に5.5と同じ名前のDBが存在する場合はアップグレード不可
  • アップグレードはDBを指定して実行時間を予約
  • アップグレード後にWordPress等の設定変更が必要

データベースの整理方針

5.5のデータベースをアカウント名_wp1のみ残して削除し、アップグレード先の5.7の同じ名前のDBを削除。

  • 5.5の他のデータベースは自分で作成したテスト用のものだけなので、削除しても問題ない
  • 5.7のアカウント名_wp1は途中までしか投稿記録がなく、不要と判断
  • 双方のinformation_schemaは残置

アップグレードの予約

アップグレードの予約はコントロールパネルで行った。

  • さくらのコントロールパネルで
    • 5.7のアカウント名_wp1を削除
    • 5.5のアカウント名_wp1以外を削除
  • information_schemaはコントロールパネルでは表示されないが5.5、5.7とも残置
  • 12/21の02時にアップグレード予約

アップグレードの確認

翌朝確認したところ、MySQL5.7の方にアカウント名_wp1が作成されており、コンソールで確認したところ昨日までの最新の投稿が記録されていた。

コメントが2件、2時以降についていたが、いずれもspam判定のもので、内容も確認して無視。

WordPressの設定変更

コンソールでも可能だが、さくらインターネットサイトにあるとおりファイルマネージャーで実行。

  1. コントロールパネル左の”Webサイト/データ”→”インストール済み一覧”を選択して、でWordPressのインストール先を確認
  2. “Webサイト/データ”→”ファイルマネージャー”を開いて上記のディレクトリーに移動
  3. wp-config.phpを確認
  4. コンソールでwp-config.phpのコピーを別名で保存(バックアップ用)
  5. ファイルマネージャーでwp-config.phpを右クリック→編集
    • MySQLのホスト名の変更
    • DB名は同じ名前なので変更しない
    • パスワードも変更していないのでそのまま
  6. ファイルマネージャーで”保存”、”閉じる”

WordPressの設定後確認

設定変更後、以下を確認した。

  • WordPressが正常に表示される
  • 新規投稿を書き込み、投稿が反映されること、その内容がMySQLのDBのテーブルに反映されていることを確認
  • 新規投稿を削除し、削除が反映され、テーブルにも削除経緯が反映されることを確認

 

WordPress – QuickLatexのエラー

QuickLatexにエラー発生

2021年11月のある日、WordPressで作業していてQuickLatexでエラーが出てしまった。

certificateに関するエラーらしいがよくわからない。

下記サイトに対処方法が整理されていて助かった。感謝したい。

参考サイト:数樂管理人のブログ~Cannot connect to QuickLaTeX server:…

手順

古い証明書の退避

さくらサーバーにssh接続して、証明書ファイルの確認。

このca-bundle.crtを別の名前にリネーム(.bakを付けるなど)。

新しい証明書の導入

このgithubサイトのWordPressページに証明書の内容が掲載されているので、その内容でca-bundle.crtファイルをローカルに作成し、先のディレクトリーにアップロード。

これで元の様にQuickLatexがコンパイルされるようになった。

 

QuickLaTeX – 数式の番号について

概要

QuickLaTeXでディスプレイ数式を書くとき、通常のequationやeqnarrayを使うと自動的に番号が付けられるが、番号をつけない方法とまとめて整理した。

ディスプレイ数式

番号付き

equationブロックにする。

(1)    \begin{equation*} y = a x + b \end{equation*}

番号なし

equation*を使う。

     \begin{equation*} y = a x + b \end{equation*}

連立方程式

番号付き

eqnarrayブロックにする。

QuickLaTeXの場合、式番号は連立方程式群に一つの番号がつく。個別の式に番号をつけるためのnumcases、subnumcasesは機能しない。

等号を揃えるには、等号の前後を&で挟む。

(2)    \begin{eqnarray*} x &=& y + z \\ u + v &=& w \end{eqnarray*}

番号なし

eqnarray*を使う。

     \begin{eqnarray*} x &=& y + z \\ u + v &=& w \end{eqnarray*}

囲碁 – WordPressの棋譜プラグイン

インストール

  1. プラグイン→新規追加→”プラグインを追加”のページ
  2. キーワード”igo”で検索→プラグイン”Glift Go Game”がヒット
  3. Glift Go Gameをインストール→有効化

使用方法

SGFファイルの準備とアップロード

  1. 棋譜エディタなどで棋譜を作成してSGFファイルをローカルに保存
  2. マルチバイト文字でコメントを入れている場合、テキストエディタでSGFファイルを開き、文字コードがUTF-8になっていなければUTF-8に変更して保存
  3. サーバにアップロード

ショートコードの埋め込み

棋譜画面を表示させたい場所に、以下のようにショートコードを埋め込む。

SGFファイルのURLは相対パスではなく、http://~で始まる絶対表示。

このサイトの場合は以下のようになる。

SGFファイルの場所は、WWWディレクトリ以下のSGFファイルへのパス。

使用例

以下の例は、本因坊秀策の耳赤乃局の棋譜の例。コメントもきちんと表示されている。

 

 

 

 

 

WordPress – PHPを使う

概要

WordPressでPHPをHTML内に書いても、拡張子phpのファイルにならないため、そのままでは実行されない。

.htaccessを変更することでhtmlファイルでもPHPが呼ばれるようになるらしいが、それよりもPHPを外部ファイルとして持っておいて、HTMLからそこで定義された関数を呼び出す方法の方が、改変部分が少なそう。

方法1:親テーマのfunctions.phpに加える

親テーマディレクトリ下のfunctions.phpにショートコードの関数を書き加え、HTMLから呼び出す方法。

たとえばfunctions.phpの最後に以下を追加。場所は最後の方がよいか。

そして、WordPressのエディタ画面で以下を記述。

これで上記の記述の部分でショートコードが実行され、この部分に”Hello World!”が表示される。

ただしこの方法は、親テーマのfunctions.phpを加工しているので望ましくない。

方法2:子テーマのfunctions.phpに加える

子テーマのfunctions.phpに以下を記述する。今回はコード全体を<?php?>で囲んでいる。

そして方法1と同じように、HTMLからショートコードを呼び出す。

この方法だと、親テーマのバージョンアップなどの影響を受けないのでよい。

ただし、ショートコードが増えると、一つのfunctions.phpファイルで管理をするのが大変になってくる。

方法3:別ファイルのPHPを呼ぶ

functions.phpに以下を記述。

以下の内容のファイルを、ファイル名を”php_in_wp.php”として、functions.phpと同じ場所に置く。

そして、以下のようにHTMLから外部ファイルを呼び出す。

下の行は、実際に上記を実行した結果。

Hello WordPress!

参考リンク

WordPress投稿ページにPHP利用→ショートコードを使おう!

 

WordPress – 子テーマを作る

概要

テーマをカスタマイズしたり、テーマディレクトリ下のfunctions.phpを変更したりした後に、テーマをアップデートすると、カスタマイズや変更の内容が元に戻ってしまう。

これを回避するために、適用しているテーマの「子テーマ」を作って、これをカスタマイズする。

テーマの場所

WordPressのテーマは複数のファイルで構成され、テーマ名と同じディレクトリにそれらが格納されている。

たとえば”First”というテーマはfirstというディレクトリで、その内容は次のようになっている。

子テーマ作成の流れ

  1. 子テーマのディレクトリを作る
  2. ディレクトリ下に必要なファイルを準備する
    • style.css
    • カスタマイズ対象ファイル(header.php、footer.phpなど)
    • functions.php(カスタマイズする場合)
  3. 子テーマを有効化する

子テーマのディレクトリを作る

子テーマのディレクトリの場所は、親テーマと同じwp-content/themes/の下。ディレクトリ名は親テーマ名に接尾辞-childを付けることが推奨されている。Firstというテーマなら、first-child

必要なファイルを準備する

ここでは、必須のstyle.cssだけを準備する。たとえば”First”の子テーマを作る場合は以下を記述。

コメント行のうち必須なのは、TemplateとTheme Nameの2つ。

  • Templateには親テーマのディレクトリ名を設定(テーマ名ではない)
  • Theme Nameには子テーマのテーマ名を設定(ディレクトリ名ではない)

@import文は、url()の内容をインポートして適用する。ここで親テーマのcssを設定することで、親テーマのスタイルのすべてがインポートされる。

その後の行で、必要に応じてスタイルをカスタマイズ。

子テーマを有効化する

ダッシュボードの「外観」→「テーマ」で確認すると、子テーマが加えられているので、これを有効化する。

wp-child-theme

子テーマをオーバーライドする

style.css

@import url()で親テーマのスタイルを継承した以降、独自のスタイル設定を記述することで親テーマのスタイルをオーバーライドできる。

たとえば以下の例では、h1タグの色を青にするよう設定している。

実行結果は以下の通りで、h1タグの内容の前景色が青になっている。

wp-child-theme-override-example

 

 

WordPress – functions.phpの場所

functions.phpは各テーマのディレクトリ下に存在する。

functions.phpは各テーマごとに生成されるため、意図をもってその内容を変更した後にテーマをアップデートすると、変更内容が失われる。

テーマをアップデートしても変更内容が失われないようにするには、元のテーマに対する「子テーマ」を作り、そのfunctions.phpに付加する内容を書くとよい。

 

WordPressでのBrythonの扱い方

注意点

WordPressでBrythonを使うとき、以下の点に気を付けなければならない。

  1. brython.jsを読み込むのはheadセクションだが、カスタムセクションにこれを書くなど、WordPressとしての扱いが必要
  2. onload時にbrython()を実行させる処理が必要
  3. スクリプトをHTML内に直接書くときに、WordPressのエディタの仕様が問題になる(勝手に<p>タグがつけられる)。

Brythonの読み込み

通常はHTMLドキュメントのheadセクションでbrython.jsを読み込むが、WordPressの場合は別途処理しなければならない。

このページでは、Custom CSS and JavaScriptでターゲットを指定している。

onload時の処理

<body>タグがPHPに含まれているので触り難いが、以下のようなjavascriptファイルをheadセクションで読み込んでおけば、onload時に関数が呼ばれてbrython()が実行される(WordPressでのonload処理を参照)。

このページでは、上記ファイルをonload_brython.jsとしてサーバ上に置き、先のBrythonの読み込みの後に、Custom CSS and JavaScriptで読み込んでいる。

スクリプトを直接書く時の注意

Brythonを展開するのに、直接HTMLファイルにスクリプトを書く方法と、外部スクリプトファイルに分ける方法の2つがあるのは他のスクリプトと同じ。

ただしWordPressのエディタのテキストモードでスクリプトをHTML内に直接書く場合、スクリプト中に空行があると勝手に<p>タグが挿入されるので、実行時にエラーとなる。<p>タグを付加するのを抑制するか、あるいは空行なしで書けば正常に実行される。

以下の例は、このページ中に直接Brythonのスクリプトを書いたもの。

あるいは下の例のように、スクリプトを外部ファイルにすれば、問題なく実行される。

 

WordPressで<body onload=…>を使う

WordPressでは<body>タグはphpのコードに書かれているが、それとは別にonload時の実行を、以下のようなjavascriptコードで実現できる。

まず以下のようなjsファイルをアップロードしておく。

custom_jsなどを利用して、headセクションでこのファイルを読み込む。

このページのonload時に、上のファイルが実行されてダイアログが表示されたはず。

 

WordPressでカテゴリをクリックしても表示されない

WordPressでカテゴリをクリックしても「ページが見つかりませんでした」と表示される現象が生じた。

ネット上で同様の現象が挙げられており、「タグやカテゴリをクリックすると404エラーで表示されない」というものが多かった。それらのうち以下の方法で解決したので記録しておく。

  1. ダッシュボードメニューの「設定」→「パーマリンク設定」
  2. 下部の「カテゴリーベース」が”.”となっていたのを”category”に書き換え
  3. 保存

他にもパーマリンクの設定を保存しなおすだけで直る、というのもあったが、こちらは効かなかった。