naney.org メールサーバの移転に次いで、Web サーバの移転作業。
現行 Web サーバと Unison でファイル同期している Web コンテンツを、さくらのレンタルサーバへ Unison でファイル同期。
nDiki 用に DiKicker (WiKicker) を make install。
%bash $perl -MCPAN -e mkmyconfig $perl -MCPAN -e shell o conf makepl_arg PREFIX=/home/naney/local/WiKicker o conf mbuildpl_arg --install_base=/home/naney/local/WiKicker o conf commit notest install CGI::SpeedyCGI $tar zxvf WiKicker-0.420.tar.gz $cd WiKicker-0.420 $export PERL5LIB=$HOME/local/WiKicker/lib/perl5/site_perl/5.8.9 $perl Makefile.PL PREFIX=$HOME/local/WiKicker $make $make install
以前きっちり Module::Install で Makefile.PL を作っておいたおかげで、比較的スムーズにインストールできた(自画自賛)。
ちょっとはまったところは CGI::SpeedyCGI の make test を実行する(される)と SSH 接続がサーバ側から切られてしまうという現象にあったところ。 テスト用に大量にスクリプトが起動されるの検出して自動的に kick されたのだろうか。
さくらのレンタルサーバでは .htaccess Options が使えないようなので削除。 ExecCGI や MultiViews が有効になっているようなので問題なし。
Perl 5.005_03 用に書いてあったスクリプトについて、Perl 5.8.9 で文字化けしないように utf8 まわりを修正。
1時間毎に実行したい処理を列挙するシェルスクリプトを1つ作って、コントロールパネルから1時間毎に実行するように設定。
現行サーバでは任意の crontab を設定できたので、1時間毎はちょっと物足りない。 おいおい負荷にならない範囲で、外部から定期的に HTTP アクセスして処理を定期的に実行できるようにもするかな。
まだ動いていないスクリプトもあるけれど(大きいところだと NaneyOrgWiki (Wiki))現行サーバの解約日もせまっているので、サーバ移転させてしまうことに。
VALUE-DOMAIN で DNS サーバ設定を変更し www.naney.org でさくらのレンタルサーバにアクセスできるように A レコードを変更。
今のところ特に重い等もなく順調。 現行サーバでは深夜非常に重くなる時間帯があったのだが、それが無くなるのが嬉しい。 また容量が100MB*1から10GB*2になったので心理的にセーブしなくて良くなった。
年内に移行できて良かった良かった。
[ さくらのレンタルサーバ プレミアム ]
さくらのレンタルサーバ上にあるデータはローカルの Linux BOX と Unison で同期している。 この nDiki の記事も Emacs でテキストファイルで作成した後、Unison で同期して公開している。
[さくらのレンタルサーバ] /home/naney | <Unison> 同期 | [ローカル PC] /home/naney/site/site_name/sync
ただこれだとローカル PC から離れている時の記事の下書きとか面倒くさい。ということで Dropbox 上に一部を置くことにした。同期している全てのデータを Dropbox 上に置くのはナンセンスなので、一部のディレクトリのみ。
Dropbox フォルダ側は単一のディレクトリツリーである必要があるので、Unison で同期しているディレクトリのツリーの一部を Dropbox フォルダ上へ移動し、シンボリックリンクに置き換え。Unison の設定ファイルに follow = path share/some_dir を追加してそのディレクトリはシンボリックリンクを辿ってその先の中身で同期するようにした。
[さくらのレンタルサーバ] /home/naney | <Unison> 同期 | [ローカル PC] /home/naney/site/site_name/sync /home/naney/site/site_name/sync/share/some_dir | <symbolic link> | /home/naney/var/Dropbox/site/_name/sync/some_dir /home/naney/var/Dropbox/site/_name/sync | [Dropbox]
これで Dropbox を入れた他の PC や Android 端末から記事の作成・編集ができるようになった。
ちなみに Google Chrome に SourceKit をインストールすると、Web ブラウザ上から直接 Dropbox 上にテキストファイルを作成したり既存のテキストファイルを編集したりできて便利。 テキストファイルは UTF-8 で LF になるのでいい感じ。
Windows 上で作成・更新したファイルをサクッと Linux 上に反映させるのに、やっぱり Unison File Synchronizer を使うことにした。Windows 上の Unison から SSH 経由で Linux 上と同期させる構成ってしたことなかったな。ちょっと調べつつ設定。
Unison-2.40.102.zip をダウンロードしてきて C:\Uers\Naney\local\Unison-2.40.102 として展開。テキスト版(CLI 版)を使いやすいように unison.exe という名前に変える。
SSH 経由の接続については PuTTY についている Plink を使うことにした。OpenSSH とはちょっと違うので下記のようにバッチファイル C:\Uers\Naney\local\Unison-2.40.102\plinkunison.bat を作る。
@c:\Users\Naney\local\PuTTY\plink.exe -l naney -ssh remote.example.com unison -server
同期先のホスト remote.example.com にアカウント naney で SSH 接続して unison をサーバとして起動するというバッチファイル。
次に Unison 同期設定を書いたプロファイルファイル c:\Users\Naney\.unison\test.prf を作る(テスト用)。内容は以下。
root = c:\Users\Naney\unisontest root = ssh://naney@remote.example.com/home/naney/unisontest sshcmd=c:\Users\Naney\local\Unison-2.40.102\plinkunison.bat times = true fastcheck = yes
双方の unisontest ディレクトリを同期する設定になってる。
最新の OCaml (Unison のビルドに必要)と Unison を取ってくる。
wget http://caml.inria.fr/pub/distrib/ocaml-4.00/ocaml-4.00.1.tar.gz wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.40.102.tar.gz
あとは以前の インストール手順 と同じ流れでインストール。
Windows のコマンドプロンプトから
unison test
で同期できることを確認。
あとは実際の同期したいディレクトリのペアにあったプロファイルファイルを作っていけば OK。
USB メモリ (USB フラッシュメモリ)とかもうずっと使ってなくて。普通に Dropbox とか Evernote とか Google ドライブとか Bitbucket とか SSH + Unison で sync とかで済んじゃうので。
昔は買うときに速度なのなんなのでいろいろじっくり選んだりしていたものだけれどねぇ。今でも PC 間のファイルのやりとりでメジャーに使われているのだろうか?
今回は某楽器用に USB メモリ用意する必要があるということらしいので、新調しようかなと思うのだけれど、その用途以外には使わなさそうだし回数もあまり使わないんじゃないかと思うので、動作確認が取れているものから普通に安めのを選んで買おうと思う。
あとで整理してまとめたりできるように、ふと思ったことを非公開で1人 Twitter タイムライン的にログっておくのに PC 上でなかなかいいのないんだよねとずっと思っていたんだけれど Emacs の Org mode にある Org Capture 試してみたらいい感じだった。
普段 Org mode 使っていないので Org Capture で必要なところだけ設定してみた。
(require 'org) (setq org-capture-templates '( ("t" "Timeline (local)" plain (file (concat "~/var/timeline/timeline-" (format-time-string "%Y-%m-%d") ".md")) "- [%(format-time-string \"%Y-%m-%d %H:%M:%S\")] %?\n") ("n" "Note (local)" plain (file (concat "~/var/note/" (format-time-string "%Y-%m-%d-%H%M%S") ".md")) "# %?\n[%(format-time-string \"%Y-%m-%d %H:%M:%S\")]\n") ("T" "Timeline" plain (file (concat "/naney@example.com:/home/naney/var/timeline/timeline-" (format-time-string "%Y-%m-%d") ".md")) "- [%(format-time-string \"%Y-%m-%d %H:%M:%S\")] %?\n") ("N" "Note" plain (file (concat "/naney@example.com:/home/naney/var/note/" (format-time-string "%Y-%m-%d-%H%M%S") ".md")) "# %?\n[%(format-time-string \"%Y-%m-%d %H:%M:%S\")]\n"))) (global-set-key (kbd "\C-cc") 'org-capture)
'C-c c t' すると
- [2014-03-25 23:24:25]
が書かれたバッファが開くので適当に何か書いて C-c C-c する。と、~/var/timeline-2014-03-25.md にその内容が追記される。
TRAMP でリモートホスト上のファイルを開く時のファイル名を指定してみたらうまくいったので、さくっとリモートファイルにも追記できてすごく嬉しい。ので 'C-c c T' で書き込めるように設定してみた。これで Dropbox や rsync / Unison などで同期する必要がなくていろいろ良い。
あとは追記型ではなくて都度新しくノートファイルを起こすタイプの設定も追加しておいた('C-c c n' と 'C-c c N' で呼び出し)。howm で 'C-c , c' するのと同じ感覚で作れる。こちらもリモートホスト上にファイル名で悩む必要なくさくっとノートを書いておくことができて良い(そのかわり howm みたいに grep できないけれど)。
リモートホスト上のファイルへの保存の方を良く使うので、'C-c c' の後のキーは小文字の方をリモートに、大文字の方をローカルに変更。
昨日 Linux から AirMac Time Capsule をマウントできるようになったので次はファイルの双方向同期の設定。AirMac Time Capsule の共有ディスク上に写真を置いて家族共有するのだけれど、AirMac Time Capsule にしかファイルが無い状態は当然避けたいので、ローカルディレクトリとファイル同期しておく。
OS X 用の良さそげな双方向ファイル同期アプリが無いかなと探していたんだけれど、これっというのが無いので結局 Linux や FreeBSD 上で長年使っている Unison File Synchronizer を使うことにした。 OS X だといちおう GUI 版もある。Unison はメンテが止まるかなーと思いつつもたまにアップデートされているので今のところまだしばらく使えそう。
Unison の設定は下記の通り。違う共有ディスクがマウントされている時に間違えて実行しないように mountpoint を指定。パーミッションの変更ができなくて Unison がエラーになるので perms = 0 にしておいた。
times = true root = /Users/naney/archive/family root = /Volumes/Data/archive/family mountpoint = family-photo perms = 0
Unison の設定は下記の通り。/mnt にマウントした状態で実行する。マウント間違い対策として mountpoint を指定。
times = true root = /home/naney/archive/family root = /mnt/archive/family mountpoint = family-photo
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
nDiki は1999年1月に始めたコンピュータ日誌を前身とする Naney の Web 日記(兼パーソナルナレッジベース)です。
#nNote タグがついている記事は他の記事に比べて、より断片的・未整理・不完全なちょっとしたノートです。まだ結論に至っていない考えなども含まれます。頻繁/大幅に更新したり削除したりすることがあります。 それとは別に nNote にもちょっとしたノートがあります。
※内容は個人的見解であり所属組織とは関係ありません。