Subversion だけでお手軽にサーバ構築
FreeNAS jail を Subversion サーバにしました。「余計なソフト」を一切入れずに構築しました。要するに svnserve を使っただけで、ぐぐれば同案多数ですが、いわゆる1つの事例報告という事でご参考になれば幸いです。
install
pkg install
は不要
pkg install
は不要FreeNAS で jail を作成すると、デフォルトでインストール済のようです。だから pkg upgrade
で最新版にするだけです。
# ls -d /usr/local/etc/rc.d/svnserve
/usr/local/etc/rc.d/svnserve
デーモンとして設定
設定の仕方は /usr/local/etc/rc.d/svnserve
に書いてありました。
# head -n19 /usr/local/etc/rc.d/svnserve | tail -n9
# Add the following line to /etc/rc.conf to enable SVNServe:
#
# svnserve_enable="YES"
# # optional
# svnserve_flags="-d --listen-port=3690 --listen-host 0.0.0.0"
# svnserve_data="/usr/local/repositories"
# svnserve_user="svn"
# svnserve_group="svn"
#
ユーザ svn
は adduser
して用意します。
参考: FreeBSD/ユーザーの追加
リポジトリ用の場所は /media/repositories/svn
として jail にストレージを追加。
というわけで /etc/rc.conf
に下記2行だけ追加しました。
svnserve_enable="YES"
svnserve_data="/media/repositories/svn"
そしてjailを再起動すると svnserve
がデーモンとして起動されています。
# ps -ax | grep svnserve
14758 ?? IsJ 0:00.01 /usr/local/bin/svnserve -d --listen-port=3690 --listen-host 0.0.0.0 -r /media/repositories/svn
22313 3 R+J 0:00.00 grep svnserve
Subversion 設定
順番が逆のような気がしますが…
普通はデーモンを起動する前に用意しておくものですよね。
セキュリティ
下記Webページなどに詳しい…というか、ここに書いてある事がすべてですかね。
svnserve, 専用サーバ - 組み込みの認証と認可
ssh との連携によるセキュリティ強化はひとまずおいといて、組み込みのユーザ認証だけ試してみます。
プロジェクトに依存しない形でユーザを管理する為、リポジトリとは独立した形で passwd
ファイルを用意しました。svn
ユーザからアクセスできるように、パーミッションの設定を忘れないようにしましょう。
# pwd
/media/repositories/svn
# chown -R svn:svn conf
# cat conf/passwd
[users]
taro = This is 1 pen.
ここに記述するパスワードは平文です。スペースも記号も許されるようです。
リポジトリの用意と認証の設定
用意したディレクトリに Subversion リポジトリを作成します。その際に簡単なセキュリティ設定もします。で、記憶力がとっても残念な私が滅多にしない操作を忘れないように、コマンドや設定箇所を忘れないようにスクリプトを用意しました。メモを残しとけってのは正論ですが、この手のちょっとしたメモは散逸し易いんですよね…
# pwd
/media/repositories/svn
# cat createprj.sh
#!/bin/sh
if [ "$1" == "" ]; then
echo "usage: ${0#*/} <projectname>"
exit 0
fi
svnadmin create $1
ret=$?
test $ret -ne 0 && exit $ret
chown -R svn:svn $1
echo "Edit svnserve.conf and authz in the directory $1/conf."
echo "The file passwd is in the directory ./conf."
これを使ってリポジトリを用意し、設定します。
# ./createprj.sh test
Edit svnserve.conf and authz in the directory test/conf.
The file passwd is in the directory ./conf.
# cat test/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = ../../conf/passwd
authz-db = authz
realm = Project test
# cat test/conf/authz
[/]
* = rw
以上で準備完了!
アクセス
クライアントとしてアクセスを試みます。
# pwd
/root/svn
# svn co svn://localhost/test
Authentication realm: <svn://localhost:3690> Project test
Password for 'root': **************
Authentication realm: <svn://localhost:3690> Project test
Username: taro
Password for 'taro': **************
-----------------------------------------------------------------------
ATTENTION! Your password for authentication realm:
<svn://localhost:3690> Project test
can only be stored to disk unencrypted! You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible. See the documentation for details.
You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
Checked out revision 0.
ログインユーザ root
のままではアクセスできなくて、設定した Subversion ユーザである taro
でチェックアウトできました。
# cd test
# svn mkdir trunk branches tags
A trunk
A branches
A tags
# svn ci -m"initial commit"
Adding branches
Adding tags
Adding trunk
Committing transaction...
Committed revision 1.
チェックインもできました。
やった!
追伸: デーモンは起動したままでした
以上の作業は、ここに書いた順番の通りに実行できます。即ち、最初にデーモンを起動してからリポジトリの準備やらユーザの登録やらしてますが、その後の再起動とか設定再読み込みとかは不要です。便利です。
Author And Source
この問題について(Subversion だけでお手軽にサーバ構築), 我々は、より多くの情報をここで見つけました https://qiita.com/katz_engineer/items/09c6dd4e8bde642d627b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .