Windowsバックアップ失敗

久しぶりだったのですっかり対処法を忘れていた。というわけで覚書。

久しぶりにWindowsバックアップが失敗していた。エラー内容をみると隠し状態になっているファイルのコピーに失敗したという。詳細はイベントログを見ろと言われるが、これを見ても大した情報は得られない。どこが詳細だよ。

で、この失敗、実は以前にも何度か経験してた。これ、Microsoft Security Essentialが予備スキャンで見つけたウィルスを隔離したファイルがMSEによってロックされているのでWindowsバックアップでコピー出来ないという罠なんだな。ところが、このMSEが隔離したウィルス、対処したかったら必ずMSEでフルスキャンをかけないと対処リストがそもそも表示されないというクソ仕様。つまり、ウィルスを削除するだけなのにフルスキャンで何時間も待たされるというわけ。防護してくれるだけマシといえばマシだけど、発見して隔離したウィルスがフルスキャンしない限り報告すらされないという仕様はなんとかならんのか。

で、これでウィルス本体を削除してあげるとようやく無事にWindowsバックアップが完了する様になる。同じ自社製品でありながら連携もできないどころか妨害してしかもエラーメッセージにはそれを解決する情報が何にもないってのが本当に腐ってる。せめてMSEがロックしたファイルがコピー出来ません、ぐらいの表示をすればMSEでウィルス除去すればいいって分かるのに。

ちなみに今回隔離されていたウィルスは例によってJavaウィルス。ほんと、Javaも今じゃ完全にお荷物状態。WindowsそのものからJavaをパージしてから長いけど、ブラウザがサイトからJavaウィルスを貰ってきてキャッシュにほりこんじゃうのは防ぎようがない。いい加減にしてほしいわ。

bbPressテーマ互換性

bbPressプラグインをインストールしただけではどうやらテーマに互換性がないので、BuddyPressのグループ内フォーラム機能は有効になるものの、bbPressの機能であるSiteWideフォーラムの機能は追加できないらしい。

で、テーマに互換性を持たせるには以下のページの指示に従って手動でインストール済みテーマにbbPressのテンプレートを追加する必要がある。

http://codex.bbpress.org/theme-compatibility/

そこで、まずはインストールしたいテーマのディレクトリに移動。今回はtwentyfourteenを選ぶ。

cd /var/www/wordpress/wp-content/themes/twentyfourteen

で、そこでまず、bbpressフォルダにSymbolic Linkを貼る。

ln -s ../../plugins/bbpress/templates/default/bbpress .

で、次にデフォルトのbbPress設置用テンプレートをテーマのトップ内にどばっとばらまく。

ln -s ../../plugins/bbpress/templates/default/extras/*.php .

以上でbbPress用のフォーラムテンプレートが有効になる。

ユーザー登録権限の委譲

BuddyPressのユーザーの追加をサイト管理者に委譲する方法について判明したので覚書。

まず、ネットワーク管理者のダッシュボードの設定から、新規ユーザーの追加をチェックして、各サイト管理者がユーザーを追加できるように設定する。

BuddyPress側ではアクティベーションを受け付けるページが必要になるので、設定→BuddyPressから固定ページでActivationページを作製しておく。これで、サイト管理者が新規ユーザー登録を行うとユーザーがActivationページに案内されてメールで送られてきたキーを入力することでユーザー登録が完了する。

どうやらパスワードは一度ログイン画面にいって「パスワードを忘れた」を選んでパスワードリセットを行わないと設定されないっぽい。

あと、サイトそのものが非公開になっているとユーザーがアクティベーションしようとしてもそのページが表示できないのでアクティベーションされない。サイトの設定で公開にチェックを入れておくことを忘れないように。

フォーラム機能の追加

一応、非公開グループを作製することで非公開ディスカッションが可能ではあるけれど、トピック単位でフォーラムを立てて非公開議論できた方が楽かもしれないので、フォーラム機能追加プラグインであるbbPressをインストール。管理ユーザーにフォーラム管理者の権限を付与しておく。

BuddyPressの日本語化

BuddyPressの日本語化もプラグインで可能。

新規プラグインでBuddyPress Translationsを検索し、インストールする。最近のWordPressではテストされていないと警告が出るが、これは単に翻訳ファイルをリポジトリから取ってくるだけのプラグインなので警告は無視する。

このプラグインはネットワーク全体で有効化しておく。これだけでブログの言語が日本語に設定されていればBuddyPressのインターフェースも自動的に日本語になるみたい。

BuddyPressのインストール

BuddyPressのインストールは簡単。WordPressにサイトネットワーク管理者でログインしてプラグインの新規追加でBuddyPressを検索してインストールする。

ここで注意しないといけないのは、初期のBuddyPressではサイトネットワークのトップであるID=1のブログにしかSNSがぶら下げられないこと。そこで、すべてのサイトで必要ならBuddyPressを有効にできるように以下の様にWordPressをカスタマイズする。

/var/www/wordpress/wp-config.php

define(‘BP_ENABLE_MULTIBLOG’, true);

この一行を以前にマルチサイトの設定を記述したところの下に追加する。これによってBuddyPressがID=1以外のブログでも付け加えることができるようになる。

プラグインをネットワークで有効化してしまうとすべてのブログに強制的にBuddyPressによるSNS機能が付与されてしまうので、プラグインそのものはネットワークでは無効化しておく。そうすることで、各ブログのダッシュボードから個別にプラグインを有効化できるようになる。

SNSの構築

某所よりプライベートなSNSを構築して欲しいという要請を受けて、現在のサーバーであるDebianで構築できそうなオープンソースのSNSプラットフォームをいろいろと検討してみた。ほとんどのメジャーなプラットフォームはPHP+MySQLという環境で構築できるので現在のDebianサーバーでも動かせることは動かせるのだが、どれもパッケージ化されていないので、バージョンアップ等のメンテナンスがすべて手動になってしまう。そのため、管理者の不注意によってはセキュリティが危うくなったりするかもしれないので、できればそういう無駄な労力は増やしたくないところ。

で、もっと自動で管理できて手間のかからない方法はないかということで辿り着いたのがWordPress上でSNSまがいなものが構築できるBuddyPress。これならWordPressプラグインなので、バージョンアップ時の更新はWordPressが自動的に行ってくれるはずだ。

というわけで、最終的にここに落ち着くことにしたので、BuddyPressによるSNSを構築する。唯一の気掛かりはBuddyPressだとユーザーが全部WordPressサーバーのユーザーとしてぶら下がることになるので、ユーザーがばかばか増えると管理が面倒だななということ。まあ、ユーザーにブログサイトを作らせると面倒だけど、SNSの投稿しかさせないことにすればユーザー管理の手間も最小限にできるだろう。できれば、BuddyPressの管理も外部にまかせてユーザーを登録する作業をお願いしてしまいたいところだが、その部分だけ権限委譲できるかどうかはちょっと要調査。

Debian Mailmanのお引越し

今度はMailmanのメーリングリストをお引越しする。まずはmailmanのサービスの停止。

service mailman stop

まずはlistユーザーにsuしてnewlistを使って旧サーバーと同じ名前で新サーバーで空のメーリングリストを作成しておく。最初はアーカイブが公開になっているので、非公開のメーリングリストはarichives/publicにあるシンボリックリンクを削除しておく。

旧サーバーでmailmanフォルダ内のlistsとarchives/privateをtarで固める。このとき、tar pzcfの様にpオプションを付けてパーミッションが保存されるようにしておく。このtarファイルを新サーバーにコピーする。

念の為、listsとarchives/privateをリネームして保存しておいてから、tarファイルをこれまたtar pzxfの様にpオプションを付けてパーミッション付きで展開する。その後、listsフォルダ内の全ファイルをlists:lists所有に、archives/private内の全ファイルをlists:www-data所有にchown -Rで変更する。

これで新サーバーでも旧サーバーと全く同じメーリングリストが設定される。後はmailmanを再起動すれば元通り。

service mailman start

Debian WordPressのお引越し

本来ならデータベースをダンプして、それを新サーバーに取り込むのがお作法なのだろうけど、それは面倒なので、エクスポート&インポートで再現することにする。

WordPress Importプラグインは最初はインストールされていないので、インストールしてネットワークで有効化しておく。

旧サーバーと同様に新サーバー上にユーザーとブログを作成したら、旧サーバーの各ブログのダッシュボードから全コンテンツをエクスポート。そのファイルを今度は新サーバーのブログのダッシュボードからインポートする。これでカテゴリーやらエントリーやらコメントやらはすべて元通りになる。

後は見栄えのカスタマイズを手でコネコネと再現するだけ。

Debian 細々とした管理のための追加設定

管理するのに便利なように細々とした設定を追加。

ひと通り必要なパッケージはインストールが終わったので、これ以後はaptでパッケージの更新をする時に必ず更新内容が表示されるようにする。

すでにapt-listchangesはデフォルトでインストールされているので、dpkg-reconfigure apt-listchangesで最後の質問でインストール前に更新内容を表示するように変更する。

次に更新があったパッケージをroot宛にメールで通知するようにする。これは単純にapticronをインストールするだけ。

apt-get install apticron

多分デフォルトの設定で問題なし。ただ、デフォルトだと1時間ごとに実行されるのでさすがにそれはうざい。一週間に一度実行されるように/etc/cron.d/apticronを書き換えておこう。44 * * * *になっている部分を0 6 * * 7に変更する。これで、Weeklyスクリプトが動く時にその直前に実行される。

最後に、毎日ログをおさらいして問題があった場所をメールで報告してくれる便利パッケージも入れておこう。これはlogwatchパッケージをインストールする。

apt-get install logwatch

これも多分デフォルトのままでいいので、インストールしただけで放置。