4ヶ月ぶりの更新。ブログの更新作業が簡単にできるようにしたらもっと書くよ うになるかなと思ったので、git で更新できるようにした。今までは scp で Markdown をアップロードしたり、サーバーにログインして設定の違う Emacs で書いたりしていて面倒臭かったのだ。

サーバーで gitolite (git のサーバーソフトウェア) は動いているので、リポ ジトリを作ってこれに自宅から push したらフックスクリプトで Jekyll を走 らせたらいいと思った。

けど、gitolite わからーん。 git わからーん。というわけで、フックじゃな くて自宅のPCで実行するディプロイスクリプト書きましたとさ。

まず gitolite の設定リポジトリで、新しいリポジトリを登録するのだが、こ いつのプッシュができなくなっていた。原因は tcp wrapper で ssh へのアク セスを制限していたこと。自宅のプロバイダーと、localhost からは ssh 接続 できるように書いていたのだが、サーバー自体のグローバル IP を登録してい なかった。

git のリポジトリの remote 設定はグローバルIP で指定するから、こいつに接 続しようとするとグローバルIP 対グローバル IP になるんだね。(このアクセ スコントロール問題、いろんなところで遭遇するなぁ。)

というわけで、/etc/hosts.deny を以下のような感じにした。

ALL: ALL EXCEPT .asahi-net.or.jp, localhost, www12276ue.sakura.ne.jp

gitolite-admin/conf/gitolite.conf に以下を追加して ie リポジトリを作る。「予定地の家」なんで。

repo    ie
        RW+     =   @all
        RW+     =   plonk
        RW+     =   plonk_home

RW+ = @all だけあれば良いような気がするけど、よくわからないからこうしておく。

add して commit して push すると、~git/repositories/ie.git にリポジトリができる。

サーバー上のホームディレクトリにもリポジトリをクローンしておいて(~/root)、 ディプロイスクリプトではこいつをソースにブログサイトをJekyll に生成 させる。

自宅PCで実行するディプロイスクリプト()はこんな感じ。~/root/Makefile で jekyll が走って ~/public_html にサイトを生成する。

#!/bin/sh
SCRIPT="echo 'リモートを更新しています。'; cd ~/root; git pull; echo 'updating public_html...'; make all"
ssh -t sakura "$SCRIPT"