2012-01-06 [長年日記]
ubuntu11.10でbind
macbook proの購入に前後して自宅サーバでいろいろ作業しようとしたところ、起動しなくなったりHDDの読み込みが遅くなったり(1MB/sec以下)と壊れかけの症状がでてきて、いろいろとやってみたけどダメだったのでPC本体をリプレイスした。リプレイス前はAopen XCCube LE201で、新しい方はShuttle XS35 V2*1。これとあわせてDDR3 PC10600のSO-DIMM 4GB,SATA 2.5inch HDD 500GBを購入。全部で23,000円程度。
で、前回Debian squeezeを入れたこともあってDebian系が面倒がなくていいなあということで、Ubuntu11.10を入れることにした。他のパッケージはaptでinstallすればだいたいOKだったのだけど、bindだけはweb上の情報がまちまちでハマってしまったので書いておく。前提条件として、今回はこの日記のドメイン名(mmho.no-ip.org)の名前解決をLAN側で行えるようにすることなので内向きの設定しかしていないし、外部からの問い合わせはこないので問い合わせ元によるフィルタリング等々は全くしていない。
ubuntuの場合、/etc/bind/named.conf.localがからで用意されているので、これを編集。
#正引き zone "mmho.no-ip.org" { type master; file "/etc/bind/mmho.zone"; } #逆引き 以下略
次に、zoneファイル。
; mmho.zone $TTL 604800 ;1day @ IN SOA mmho.no-ip.org. root.mmho.no-ip.org. ( 1 ; serial 604800 ; refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; minimum IN NS mmho.no-ip.org. IN A 192.168.x.x ;自身のIPアドレス
といった感じ。web上の情報では最後の行で、
mmho IN A 192.168.x.x
とするべしということになっているけど、自分自身のAレコードが必要?らしく、named-checkconf -zでそれらしきエラーが表示されていた。
*1 差額3,000円程度で上位機種であるXS35GT V2にできたのだけどグラフィック機能はそれなりでいいし、消費電力が上がるだけなのでこちらを選択
macとgitとgitosis
macでAndroidのアプリ開発をするにあたって、gitを入れておくことにした。ぐぐってみたらMacPorts経由で入れるのがいいらしい。そのMacPortsを入れるためにはXcode Toolsを入れる必要がある(長い)。
Xcode ToolsはAppStoreから無料で入手できる。ただし、ここでダウンロードされるのはインストーラーなのでそこからさらに実行してインストールを完了させる必要がある。MacPortsはここからインストーラをダウンロードできる。ディスクイメージになっているので、適当にマウントすればOK。osx lionだとデフォルトで/opt/local/binにパスが通っているのでパスの設定は不要。あとはターミナルから、
#sudo port selfupdate #sudo port install git-core
でgitの導入は完了。
ローカルで作業する分にはこれだけでOKなのだけど、せっかくサーバも新調したしということで、サーバ側でリモートのリポジトリを作っておいてそこにpushすることでバックアップとしたい。ということで、以下はサーバ側の作業。
まずは、git,gitosisのインストール。gitosisは複数のgitリポジトリを管理するためのソフト。
#sudo apt-get install git-core gitosis
でインストールされる。それ以降の作業は/usr/share/doc/gitosis/README.Debianにあるとおりなのだけど、一応説明すると、
#ssh-keygen
で公開鍵、秘密鍵を生成。
#sudo -H -u gitosis gitosis-init < ~/.ssh/id_rsa.pub
で環境を初期化。この状態でgitosis管理用のリポジトリがリモートに作成されているので、適当な場所にcloneする。
#cd ~/workspace #git clone gitosis@localhost:gitosis-admin
で、gitosis-admin以下に、gitosis.conf,keydir/user.pubが生成される。このgitosis.confを編集してコミット、プッシュすることによりリポジトリの管理ができる。たとえば、リポジトリ"test"をグループ"test"として作成し、userがアクセスできるようにするにはこんな感じ。
#cat gitosis.conf [gitosis] [group gitosis-admin] members = user writable = gitosis-admin [group test] members = user writable = test #git commit -am "add project" #git push
これでbareリポジトリが生成されるので、あとは、ローカル側でpushすればOK。
#mkdir test;cd test #git init #touch test.txt #echo 'test' > test.txt #git add test.txt #git commit -am "test" #git remote add origin gitosis@localhost:test #git push origin master
こんな感じ。既存のリポジトリをpushする場合にはgit remote add...からでOK。
で、mac側でもssh-keygenして、id_rsa.pubをgitosis-admin/keydir/user2.pubみたいな感じで追加して、membersにuser2をスペース区切りで追加すると、mac側からもgitosis@IPアドレス:リポジトリ名で各種操作ができるようになる。もちろん名前解決できるならIPアドレスの代わりにドメイン名でも構わない。また、複数のマシンから同じユーザとしてアクセスする場合はメンバーを追加するのではなく、既存の公開鍵のファイル(*.pub)に複数の公開鍵を格納するのでもOK。管理の手間を考えるとこちらのほうがよさそう。