サイト改変でおおわらわ
24日深夜から25日早朝にかけて、本ブログにアクセスしてくださった方がいらっしゃったらごめんなさい。サイトがおかしくなっていました。レンタルサーバー(さくらインターネット)のせいではなく、私のサイトメンテナンスが原因です。
当ブログを開設して1年半ほど経ちますが、今更ながら、自分宛の連絡方法を投稿のコメント以外に用意していないことに気づきました :?。サイト本体を、しばらく何もいじってなかった*1こともあり、メールフォームでも、どこかに作ろうかと考えました。本ブログはWordPressで構築しておりますので、WordPress用のメールフォーム提供プラグイン*2を入れようとしたのが今回のトラブルの発端でした。
こう書くと、まるでそのプラグインがいけないみたいに読めますが、先に言っておきたいと思いますが、プラグイン自体は悪くありません。あくまでも私の導入ミスです。
メールフォームを作りたいと思い、まずはグーグル先生に相談しました。「WordPress AND “メールフォーム” AND プラグイン」で検索。結果、ダントツ*3で「Contact Form 7」というプラグインがお奨めの様でした。
さっそくインストール*4したのですが…
なんか変なのです。説明では、インストールすると設定用のページが作成され、サイトのメンテナンスページにリンクができるとあるのですが、どこにも見当たらない。それどころか、今まであったリンクもいくつか消えているし、プラグインのオン/オフを切り替えるリスト*5上にも、リンクが残っているプラグインしか載っていない 🙁
あれれと思い、WordPressのメンテナンスページから の再インストールを試みる*6)も、「WordPressのバージョンを新しくしろ」とのつれないメッセージが…
うーん、そういえば結構放っておいたなぁと思い、いい機会だと思い、WordPressを最新版にすることに。WordPressのバージョンアップは、これまた簡単(本来は)。サイトメンテナンスのページのバージョンアップ用のリンクからオンラインアップデートを実行するだけです。念のために、データのバックアップも取る様に書かれていたので、その通りにする。
で、それだけでいいはずだったのですが、実際にやってみると、MySQLのバージョンが低くてダメと言われてしまって、一瞬途方に暮れました。改めてMySQLの状態を調べてみると、レンタルサーバーにおいて、次のメジャーバージョン(MySQL 5.1)が提供されていることが判明。バージョンアップで特段の不利益もなさそうなので、やってみることに。
ここまでで、プラグイン追加→WordPressのバージョンアップ→データベースのバージョンアップと、やらなければいけないことが次々と芋づる式に出てきて、しかもどんどん大事になっていくという、頭を抱える状況に
ほかのレンタルサーバーの利用経験がない(MySQLの様な、本格的なデータベースのメンテナンス経験もない)ので、これがさくらインターネットだけの話なのかはわからないのですが、データベースのバージョンアップにおいては、いったん今まで記録されているデータをサーバー上から削除する必要があります。
管理用のツール(phpMyAdmin)は用意されているので、まずバックアップを作成。その後に、(どきどきしながら)データを削除。これでMySQLのバージョンを変更できる様になったので、新バージョンに切り替えます。しかる後に、先ほどのバックアップからデータを戻すわけですが、ここでかなり手こずりました。
これも、グーグル先生に教えてもらったいくつかのサイトの情報を見ながら進めたわけですが、作成されたファイルは、コメントらしきエリアと肝心のデータエリアのテキストエンコーディングが違うもの(EUCとUTF8)になっていました。まあこんなもんなのかな、とか、深く考えずに新バージョンで読み込ませようとしたのですが、なぜかエラーが出る。
やっぱりテキストエンコーディングかなと考え、Safariでファイルを2枚のウインドウで開き*7、それぞれをEUCとUTF8に設定し、別にテキストエディターで新規にUTF8のテキストファイルを作成して、そこに正しい表示をコピーしていくという原始的なやり方で直しました。
今度は大丈夫かなと、データベースに読み込ませてみると、先ほどはすぐにエラーが出たものが、今度はアクセス中の状態が続いたので、終わるまで放っておくことに。参考にしたサイトにも、データファイルが数MBになると、けっこう時間が掛かると書かれていたので。…でも、1時間以上経っても終わらない。タイムアウトにもならない。いくらなんでも、なんか変だぞと、一回中断してみることに。結果、その時点では、何も読み込まれておらず。もう少し待てば良かったのかなと、もう一回やってみたら、今度はすぐにエラー ❗
おいおい。でも、エンコーディングを修正する前はずらずらと長く表示されていたエラー内容が、今度は数行に。何々、すでに作成されているデータベースと同名のデータベースを作成しようとしているらしい。ということで、データファイルの一部を書き換えて、データベースを作成しないようにして再チャレンジ*8。結果は、ものの数十秒で読み込み完了。
うーん、なんだろう、この脱力感
さて、データベースのバージョンアップも無事に済んだので、WordPressのアップデートに戻ることに。といっても、サーバーにアップロードしたWordPressのファイルの内の、アップデート用のページを、Webブラウザーで開き、ボタンをクリックするだけ*9。もうだいぶ時間を食っているので、サクサクと実行。
見慣れたページデザインで、記事がでてきた……と思ったら、文字化け
しかも、やけに?が多い。これはページ上で文字化けしているのではなく、元のデータがおかしいんだなと思いつつも、テキストエンコーディングの変更を試すが、やはり玉砕。
またまたまたグーグル先生に頼ると、この方法で読み込ませると、文字化けして登録されるという情報が。なんですとー! と言っていても仕方がないので、一旦、読み込ませたデータを削除し*10、先の情報にある対処方法を試す。で、ブログにアクセスしてみると、データベースの更新をしろとのメッセージが出たので、ボタンをクリック。まだ文字化け直らないー ❗
なんで? なんで? と慌てながらも、さらにネットで情報検索*11。少し状況が違うけど、こんな直し方もあるんだという情報を見つけるも、けっこう手間なので最後の手段とすることにして、さらに検索。まったく逆の状況の様ですが、気になる情報を見つけ、この中から、「set names ujis」という記述に目がとまりました。そういえば、データファイルを開いたときに、最初の方にujisという表記があったなぁ。データファイルを開いて確認すると、/*と*/で挟まれた、いかにもコメントっぽい*12中に、!40101 SET NAMES ujisという表記が。コメントっぽいけど、頭が!で始まるところは埋め込みスクリプトっぽくもあるということで、「!40101 SET NAMES ujis」で検索。こんなページを発見。ストライク!?
で、(データをまた削除して)試して見るも、エラーが出る。エラーメッセージを見ると、SET NAMES utf8の後ろに余分な物があるとのこと。ああ、先のページから持ってくるときに、utf8に続いて書かれていたsedのパラーメータ指定の/gまで一緒にペーストしてました
というわけで、/gを削除して再挑戦。読み込みは成功。またデータベースの更新を行って、やったー! 元に戻ったー
これが顛末です
幸い、データは復旧できているみたいなのですが、こんなことしていたので、まだ肝心のメールフォームが調整できていません
まあ、それは近いうちにということで。
- 記事の投稿すら、間が開いていたし [↩]
- 簡単に機能を追加・改変できる仕組み [↩]
- 全く関係ない話だけど、この間テレビでどこかのおじさんが「ダントツでトップ」と言っていたのを聞いて、違和感を覚えた。「ダントツ」というのは、「断然トップ」を略した言葉なので、トップが重なってしまっているわけですな。まあ、「白いワイシャツ」とかと同じ話で、気にする方がどうかしているのかもしれないけど [↩]
- プラグインファイルを入手して、サーバーのプラグインファイルにアップロードし、サイトメンテナンス用のページで有効化という手順 [↩]
- WordPressでは、インストール(単に、サーバーの決められたディレクトリにプラグインファイルの入ったフォルダーをアップロードするだけ)したまま、そのプラグインの有効/無効を簡単に切り替えできる様になっている [↩]
- そういうこともできる。というか、本来はその方が簡単だったけれど、今回は検索したページにダウンロードリンクがあったので、ついそちらからダウンロードしてしまい、ついでだからと手動でインストールしてしまった ; [↩]
- 手元にあるいくつかのテキストエディターで試したが、エンコーディングが混在しているために、どちらかのエンコーディングで強制的に表示というのができなかった。その点、Webブラウザーは簡単にそういうことができる [↩]
- テキストエディターで、データファイルをいじっている内に、どうやらこのファイルは、データのラベルとデータ本体、そしてそれを登録するためのデータベースコマンドが、実行順に記述されている、一種のバッチファイル(あるいはスクリプトファイル)の様なものだと気づいた。で、ファイルの最初の方で、CREATE DATABASE `データベース名`;と、いかにもデータベースの作成を行っているコマンドっぽい箇所があったので、それをコメントアウトしてみた。先ほど調べてみたところ、mysqldumpというshellコマンドで出力した物と同様みたい。というか、phpMyAdminがUIフロントエンドになって実行したんだろうね [↩]
- 実際には、データベースのバージョンアップに伴い、アクセス用の情報に変更が出るために、その設定も行う [↩]
- バージョンアップに伴ってやったのは「データベース自体の削除」だけど、ここでは「登録したデータ(テーブル)の削除」 [↩]
- もちろんグーグル先生 [↩]
- C言語でのコメント構造だな [↩]
コメント無し
RSS feed for comments on this post.