«前の日記(2005-09-21 (水)) 最新 次の日記(2005-09-24 (土))»  

まちゅダイアリー


2005-09-23 (金)

サーバセットアップ

Gentoo, Debian に続いて FreeBSD の話。 そろそろカテゴリ分けに失敗したような気がしてきた。

それはそうと、これまで借りていたさくらのサーバに続いて、VPS7というところに新しくサーバを借りた。 仮想専用サーバという、物理的には1台のサーバだけど、仮想的に複数のサーバに分ける構成をとっているらしい。 使う側からすると、専用サーバのように見える。

OS は FreeBSD でさくらと同じ。 さくらのときは1ユーザとしてしか使っていなかったので、特に FreeBSD を意識していたわけじゃなかった。 でも、今回はサーバのセットアップから自分でやる(初期状態である程度は使えるようになっているけど)ので、いろいろ勉強しなきゃいけない。

以下、覚えている限りメモ。

ユーザの追加

何はなくともユーザの追加から。

/usr/sbin/adduser machu

ホームディレクトリの .ssh/authorized_keys に公開鍵を置く。

シェル環境の充実

次はシェル周りの環境を作る。 FreeBSD では ports/packages というパッケージ管理を使うらしい。 ports は Gentoo の portage みたいなもの(というか、portage が ports を参考にしている)で、package はそのバイナリ版。

zsh と sudo を package から入れる。

# pkg_add -r zsh
# pkg_add -r sudo

次に screen を ports から入れる。 まず、portsの使い方を読んでなんとなく理解する。

whereis コマンドを使うと、そのコマンドが入っている ports が分かるらしい。

# whereis screen
/usr/ports/misc/screen
# cd /usr/ports/misc/screen
# make configure
# make
# make install

インストールしたパッケージの一覧は、

# pkg_info -L screen-4.0.2_1

とすることで見ることができる。

Tags: FreeBSD

Subversion 環境

次に、Subversion の環境を作る。

  • 閲覧は Web から
  • 更新は svn+ssh

という構成にする。

Apache2.0 (閲覧用)

まず、デフォルトで Apache 1.3 が入っていたので、 2.0 に入れ替える。

$ sudo pkg_delete apache1.3
$ pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-stable/All/apache-2.0.54_4.tbz

次に、Subversion を入れる。

インストール時に設定を変えるには、make の引数で指定するのが ports の流儀らしい。 graphite.dを参考にしながら、以下の手順でインストールする。

# cd /usr/ports/devel/subversion
# make clean
# make WITH_MOD_DAV_SVN=YES WITH_APACHE2_APR=YES
(中略)
You should build `www/apache2' with db4 support to use subversion with it.
Please rebuild `www/apache2' with option `WITH_BERKELEYDB=(db4|db41|db42)' and try again.

Or you can disable db4 support. Only 'fs' repository backend will be availible.
To disable db4 support, define WITHOUT_BDB.

Apache 側にも BerkeleyDB の設定がいるらしい。 でも、Subversionのファイルシステムは fsfs を使うつもりなので、BerkeleyDB を使わないようにして、再度コンパイル。

# make WITH_MOD_DAV_SVN=YES WITH_APACHE2_APR=YES WITHOUTBDB=YES
# make install

インストールが終わると、リポジトリを作ったりソースを入れたり。

# mkdir /usr/local/var/svn
# svnadmin create /usr/local/var/svn/pukiwiki
# svn import pukiwiki-cvs \
file:////usr/local/var/svn/pukiwiki/current \
-m 'importing pukiwiki-20050923 vendor drop'

次に、ただのにっきを参考に Apache からリポジトリを参照できるようにする。

# cd /usr/local/etc/apache2/Includes
# vi dav_svn.conf
<Location />
       <IfModule mod_dav.c>
               Dav svn
               SVNParentPath /usr/local/var/svn
       </IfModule>
       <LimitExcept GET PROPFIND OPTIONS REPORT>
               Deny from all
       </LimitExcept>
</Location>

Apache を起動しようとすると、エラーがでてしまった。

# /usr/local/sbin/apachectl start
Syntax error on line 275 of /usr/local/etc/apache2/httpd.conf:
Cannot load /usr/local/libexec/apache2/mod_dav_svn.so into server:
/usr/local/libexec/apache2/mod_dav_svn.so: Undefined symbol "dav_xml_get_cdata"

dav_module が有効になっていないことが原因らしいので、 httpd.conf を修正。

# vi /usr/local/etc/apache2/httpd.conf
LoadModule dav_module libexec/apache2/mod_dav.so

再度起動すると、Web上からリポジトリを参照できるようになった。

svn+ssh (更新用)

公式ドキュメントを読むと、 ssh 経由で svnserve を起動するらしい。 何か特別な設定がいるのかと思ったけど、手元のマシン (colinux + Debian) でいきなり接続してみたら、何もせずに繋がってしまったのでビックリした。 そういうものなのね。

$ svn list svn+ssh://dev.machu.jp/usr/local/var/svn/pukiwiki/
trunk/
vendor/

しかも、 Windows 機の TortoiseSVN からも、認証すら不要で繋がってしまった。

svn+ssh://dev.machu.jp/usr/local/var/svn/pukiwiki/

SSH には PuTTY の鍵を使っているらしく、それで見た目は勝手に繋がった(裏ではSSH接続してる)んだろうけど、こうもすんなり動くと逆に不安になったりもする(笑)。

…と、ここまでやったところで、僕の場合はWebからの閲覧って別に必要ないことに気がついてしまった。

追記

リポジトリのパスをルートから書くのは面倒だしセキュリティ的にもよくないので、ドキュメントを参考に、特定のディレクトリしか公開しないようにする。

まずは、 svn 接続専用のユーザ (svn) を作成し .ssh/authorized_keys を以下のように作成する(実際は一行)。

command="svnserve -t --tunnel-user=machu -r /usr/local/var/svn"
ssh-dss AAAAB(中略)M6BA== ****@machu.jp

これで、

svn+ssh://svn@dev.machu.jp/pukiwiki/

で接続できるようになる。 複数ユーザでリポジトリを共有する時は、authorized_keysに行を追加していけばいいみたい。

Tags: FreeBSD