Raspberry Pi 2によるサーバー構築 その1

自宅にメンテナンスの簡単なサーバーを新たに構築しようと思ったが、いまさらPCサーバーを新しく構築するというのも面白くないので、Raspberry Pi 2を使うことにした。

買ったのはRaspberry Pi 2と専用ケース。Class 10 32GBのmicroSDはTranscend製が安かったので買ったのだが、これは失敗だった。これについては後述。後日、Sandisk Ultraに買い替えた。

運用は、1.5A供給のUSBチャージャーからmicroUSBで給電、短小イーサネットケーブルでルーターの空いてるポートに有線直結。あとはディスプレイもキーボードも全く繋がない状態でセットアップから運用までやってしまおう。

さて、最初にセットアップに必要なイメージをmicroSDに書き込む必要がある。一般的なセットアップではNOOBを選ぶのだが、これはデスクトップとして設定するためのもの。ここは最初からRaspbian Jessie LITEのイメージをダウンロードする。unzipしてimgファイルを取り出しておく。

さて、イメージを焼くのにOS Xを使うので、OS X用のイメージ焼きツールをダウンロード(https://alltheware.wordpress.com/2012/12/11/easiest-way-sd-card-setup/)する。ddでもいいんだけど、面倒なのでね。Safariでアクセスするとなぜかダウンロードできないので、ChromeでアクセスしてRPi-sd card builderをダウンロードして準備。

さて、ここでSDカードをカードリーダーに挿入。ディスクユーティリティーからMBRパーティション、MS-DOS(FAT)フォーマットで初期化する。初期化が完了したらRPi-sd card builderでRaspbian Jessie LITEのイメージを指定してSDカードに書き込む。完了したらSDカードをRaspberry Pi 2のmicroSDカードスロットに差し込む。SDカードの表面がRaspberry Pi 2の底面側になるので注意。

これで準備完了。microUSB給電して起動。Raspberry Pi 2には電源スイッチはないので、給電したら即起動する。しかし、この時点ではヘッドレスなので何が起きてるかは分からない。とほほ。これがサーバー運営の醍醐味って奴かな。

 

オンライン / パーティション拡張

さすがに、カーネルのアップデートが出る度にいちいち旧カーネルを先にパージなんてことをしていたらいつ起動不能になるかわかったものではないので、なんとか / パーティションを拡張する方法はないかと考えていたら、実は / パーティションはLVMで管理されていることに気がついた。 🙂

sudo /sbin/lvscan

ACTIVE ‘/dev/bam-system/root’ [332.00 MiB] inherit
ACTIVE ‘/dev/bam-system/usr’ [8.38 GiB] inherit
ACTIVE ‘/dev/bam-system/var’ [2.79 GiB] inherit
ACTIVE ‘/dev/bam-system/swap_1’ [5.52 GiB] inherit
ACTIVE ‘/dev/bam-system/tmp’ [380.00 MiB] inherit
ACTIVE ‘/dev/bam-system/home’ [38.27 GiB] inherit

しかもext4フォーマットだからオンラインで拡張処理が出来る。ということは、どこかのパーティションを減らせば、それを拡張に割り当てることが出来るというわけだ。

ただ、縮小処理はアンマウントしないといけないので、ありあまってる /home から取るのはちょっとリモート操作では躊躇われる。なので、ここはぐっと我慢してswapを少し減らしてそれを / に回すことにしよう。

ますは、swapをオフラインにする。

sudo swapoff -a

次に swap パーティションを300MBほど減らす。

sudo /sbin/lvreduce -L -300M /dev/bam-system/swap_1

lvscanで無事にサイズが減ってることを確認したら再びswapをオンにするために、新しいswapを作成する。

sudo /sbin/mkswap /dev/bam-system/swap_1

sudo swapon /dev/bam-system/swap_1

さて、pvscanを使って、LVMに空きが300MB出来てることを確認しよう。

sudo /sbin/pvscan

PV /dev/sda5 VG bam-system lvm2 [55.66 GiB / 300.00 MiB free]
Total: 1 [55.66 GiB] / in use: 1 [55.66 GiB] / in no VG: 0 [0 ]

よしよし。空きを300MB確保出来た。次はext4のオンライン拡張だが、これはまずボリューム割当を増やし、そしてファイルシステムを拡張するという二段階を踏む必要がある。

sudo /sbin/lvextend -L +300M /dev/bam-system/root

減らした300MB分だけ / パーティションを増やす。念のため、容量をlvscanで確認。

sudo /sbin/lvscan

ACTIVE ‘/dev/bam-system/root’ [632.00 MiB] inherit
ACTIVE ‘/dev/bam-system/usr’ [8.38 GiB] inherit
ACTIVE ‘/dev/bam-system/var’ [2.79 GiB] inherit
ACTIVE ‘/dev/bam-system/swap_1’ [5.22 GiB] inherit
ACTIVE ‘/dev/bam-system/tmp’ [380.00 MiB] inherit
ACTIVE ‘/dev/bam-system/home’ [38.27 GiB] inherit

というわけで、計632MBに増えていることが確認出来た。linux-imageのサイズがだいたい170MBぐらいなので、この分だと3カーネルは保持出来る。十分だ。

ここで、祈れるものには何でも祈りながら、ext4のオンライン拡張を実行する。

sudo /sbin/resize2fs /dev/bam-system/root 632M

無事に完了したらファイルシステムが実際に増えていることを確認しよう。

df -h

なんとか延命完了。

 

/ 容量不足

このサーバーのパーティションはDebianのインストーラーのデフォルトのままにしてあるのだが、wheezyからjessieへのアップグレードで問題発生。

なんと、肥大化したlinuxのmoduleが/libを圧迫して、/の容量の半分を超えるまでになってしまったのだ。

結果、linux-imageにアップデートがあっても容量不足でインストールできないという事態に。さすがにこれはまずいが、現状、サーバーを構築し直す余裕はないので、危険を承知で一旦linux-imageをパージしてから再インストールするという手段をとらざるをえない。

以下、手順。

screen (セッション中断に備える)

sudo apt-get dist-upgrade (アップデートに失敗するが、パッケージのダウンロードは完了させる)

sudo dpkg -l | grep linux-image (インストールされてるパッケージのバージョンナンバーを確認)

sudo apt-get purge linux-image-3.16.*-*-amd64 (*はバージョンナンバーを指定してパッケージのパージ。警告が出るが強行する)

sudo apt-get install linux-image-amd64 (即座に再インストール。ダウンロード済みのパッケージが使われる。grubが正しく新しいカーネルを利用してることを確認する)

sudo apt-get dist-upgrade (アップデートし残しがないか確認)

exit (screenから抜ける)

sudo shutdown -r now (運を天に祈る)

 

 

Mac App Store接続不能から解決へ

ある日突然、研究用のMac(El Capitan)からMac App Storeに接続出来なくなってしまった。App Storeアプリを起動しても、接続中を示すバルーンがぐるぐる回ってるだけでいつまでたっても何も表示されない。結果、購入済みアプリのアップデート等も一切出来ない状態。アカウントのサインインは出来るし、新しく作ったユーザーからApp Storeを起動するとちゃんと接続出来るので、ハードウェアやOSの根幹部分の障害ではないことは明らかなんだが、対処できないままだとアプリやOSのアップデートがかけられないのでセキュリティ的にちょっとまずい。だからといってアップデート専用のアカウントを登録するのは不便でしょうがない。似たような症状の人はUSのAppleのサポートコミュニティでもよく見かけるが、決め手になるような対処法はなし。

で、解決のために参考にしたのはここ

サポートコミュニティにばらばらにある対処法をまとめてくれてあるのだが、この中で対処に効いたのは証明書のキャッシュの削除。

/var/db/crls/crlcache.dbと/var/db/crls/ocspcache.dbをゴミ箱に捨てて再起動。これでようやくApp Storeに正しくアクセス出来るようになった。しばらくこの状態で苦しんでた間に出てたアップデートをかけて問題解決。

Onyxを使ってシステムキャッシュのリセットをやってダメだったので、キャッシュの削除は盲点だった。Onyxのキャッシュリセットはシステムキャッシュだけにしてあるので、証明書のキャッシュはシステムキャッシュリセットでは削除されないキャッシュだったのだろう。だからといって、Onyxのキャッシュリセットをシステムキャッシュ以外もめったやたらと全部リセットする設定にするのは気が引ける。だが、次回、Onyxでアプリの動作の問題が解決しなかった時にシステムキャッシュ以外のキャッシュのクリーニングもオンにする必要があるかもしれないことは気に留めておこう。

iDraw覚書その2

個人的には論文に使う図をPowerPointで書くなどもってのほかだと思っているのだが、世の中にはそうは思っていない人が多いらしい。というわけで、せっかくiDrawできれいな図を作ってPDFで出力しても、どうしてもそれをPowerPointで欲しい、だから最初からPowerPointで作ってくれ、なんて言われると憤懣やる方ない。

しかし、そうは言ってられないので試行錯誤した結果辿り着いたiDrawで書いた図のPowerPointへの変換方法を記録しておく。

手順は以下の通り。

1) iDrawで書いた図をPDFで書き出す。

2) PDFをMac版のLibreOfficeのDrawで読み込む。デフォルト配布物に含まれるPDF読み込み機能で読み込める。

3) 読み込んだ図をLibreOfficeからWMF(Windows Meta Format)で書き出す。

4) Windows版のPowerPoint(Mac版では不可)で新しいPowerPointスライドを作成し、WMFファイルを配置する。

5) 配置したWMFファイルをダブルクリックして編集しようとするとPowerPointオブジェクトに変換するか?と聞かれるので変換する。

6) PowerPoint上で編集可能なオブジェクトに変換される。

WMFがWindows版のPowerPointでしか扱えないというクソ仕様のために最後の段階でWindowsがどうしても必要になるが、これで一応オブジェクトの配置等を壊さない状態でPowerPointに変換は可能である。

iDraw覚書

アドビのイラレと決別するため、最近はMac App Storeで購入出来るiDrawをメインのドローアプリとして使っている。機能的には必要十分だが、少し注意を要する点があるので忘れないように記録しておく。

iDrawの最近のバージョンでは画像ファイルを直接配置でドローボード上にペースト出来るようになった。これでほぼイラレで必要な機能はカバー出来たと思ったら、こうやって貼った画像の縦横比を変形させようとサイズの縦横リンクを外してハンドルポイントをぐりっと動かしても画像が変形せずに新しく出来たバウンドボックス内に収まるように画像が表示されてしまう。なんだこりゃ。

実は、過去、画像を直接配置出来なかったバージョンでは、まず四角のオブジェクトを描き、その塗りつぶしで外部画像を選ぶことで画像をドローボードに配置していた。画像を直接配置できるようになった時に画像という新しいオブジェクトタイプが導入されたとばっかり思っていたのだが、実は画像の直接配置は単純に画像と同サイズの四角オブジェクトを描画し、自動的に配置画像を塗りつぶし画像に指定してくれるというだけのものだったらしい。

なので、塗りつぶしのオプションで画像を「サイズを合わせる」でなく「ウィンドウに合わせる」に変更することで、ちゃんと画像が変形させたバウンドボックスに引き伸ばされて配置される。ワンテンポ余計な操作が入って面倒だが、これで配置画像を自由に縦横比で変更出来るようになった。

OS XでPDFから高解像度でKeynoteにクリップする方法

いつの頃からか、OS Xの標準のPDF表示アプリであるプレビューで表示したPDFから矩形で選択して他アプリに貼り付けると低解像度のプレビュー画像しか貼り付けられなくなってしまった。おかげで、いつもPDFの論文の内容を紹介したい時に困って、いちいち解決法を探しては同じ解決法に至っているので、覚書に残しておく。

まず、矩形でクリップしたい部分を選択肢、Cmd+Cでコピーする。

次に、ファイルメニューからクリップボードから新規作成を選び、クリップボードの高解像度のデータを元に新規ファイルを作製する。

出来たファイルをPDF形式でセーブし、Keynoteから挿入→選択…で取り込む。

これで解像度がオリジナルの状態のままでKeynoteで拡大縮小出来るようになる。

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ページに案内されてメールで送られてきたキーを入力することでユーザー登録が完了する。

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

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