ブログを git で更新できるようにした
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"