自宅用にsubversionサーバーを設定
概要
Ubuntu 22.04 LTS へ subversion サーバーの設定を行った時のメモ。
なるべく簡単にするためにApache連係やアクセスコントロールも行わない。
自宅サーバー用の設定なので、レンタルサーバーなど外部とつなぐ場合ではセキュリティ等の面で適切な方法ではない。
設定手順
Ubuntu 22.04 LTSインストール
管理用ユーザーの作成
subversion パッケージインストール
リポジトリー作成
subversionサーバーの起動設定
ここで一旦テスト
Ubuntu 22.04 LTSインストール
Ubuntu日本語ページを見て行う。(手抜き)
管理用ユーザーの作成
下記コマンドで管理用ユーザ(svn)を作成する。
sudo adduser --disabled-login --shell /sbin/nologin --gecos "Subversion Management User" svn
subversion パッケージインストール
パッケージのインデックスの最新化を行った後、subversionのパッケージをインストールする。なお、サーバーと共にクライアントもインストールされる。
sudo apt-get update
sudo apt-get install subversion
リポジトリー作成
svnオーナーのみがアクセスできるようにディレクトリを作成する。
次に"svnadmin create" を使用してリポジトリの作成・初期化を行う。
sudo mkdir --mode 700 /var/svn
sudo chown svn.svn /var/svn
sudo --user=svn svnadmin create /var/svn
subversionサーバーの起動設定
サーバーのプロセスIDファイルを格納する場所を作成する。
作成場所は"/run/svnserve"の下とするが、ここはOS再起動で消されるため、起動時に自動作成されるように設定ファイルを作成する。
sudo vi /etc/tmpfiles.d/svnserve.conf
/etc/tmpfiles.d/svnserve.conf に書き込む内容は下記。
d /run/svnserve 0755 svn svn
subversionサーバー起動用のsystemdのユニット設定を作成する。
sudo vi /etc/systemd/system/svnserve.service
/etc/systemd/system/svnserve.service に書き込む内容は下記。
[Unit]
Description=Subversion Server
After=syslog.socket network.target
Documentation=man:svnserve(8)
[Service]
Type=forking
PIDFile=/run/svnserve/svnserve.pid
ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid --daemon --root=/var/svn
ExecStop=/bin/kill ${MAINPID}
PrivateTmp=yes
User=svn
Group=svn
[Install]
WantedBy=multi-user.target
/etc/systemd/system/svnserve.service を修正後に下記コマンドでリロード
sudo systemctl daemon-reload
ここで一旦テスト
最初の2行はサーバーのプロセスIDファイル作成場所の作成。
3行目でsubversion サーバーを起動する。
4行目で起動後の状態表示を行うのでエラーがないことを確認する。
結果表示に ”Active: active (running)” が表示されていれば正常。エラーが発生している場合は状態表示中にメッセージが出力されるので対処する。
sudo mkdir --mode 755 /run/svnserve
sudo chown svn.svn /run/svnserve
sudo systemctl start svnserve.service
sudo systemctl status svnserve.service
サーバー起動が行われていれば、クライアントからアクセスを確認する。
svn info コマンドの結果が表示されれば正常。
svn info svn://localhost/
OS起動時にsubversion サーバーを自動で立ち上げる設定
前記の「ここで一旦テスト」では手動でサーバー起動をしたが、今後はOS立ち上げ時に自動で起動したいので、下記コマンドでOSと同時に起動する設定をする。
sudo systemctl enable svnserve.service
確認のためリブートする。
★★実施前にリブートして良い状態かの確認を忘れずに★★
sudo reboot
リブート実施後に正常に起動していることを確認する。
確認内容は前期の一旦確認で行った内容と同じ。
sudo systemctl status svnserve.service
svn info svn://localhost/
締め
以上でsubversionサーバーの設定は完了。
既存資産の移行やクライアント設定などについては別途記載する。
FAQ
Q: git は使わないのか。
A: 個人で使うにはgitはオーバースペック過ぎる。多人数・複数拠点で作業するならgitが選択肢に入る。
また、今回の作成目的は VRChat用ののアバターやワールドを作成するのが目的で、一部だけ違うものを複数作成する場合などの管理がしやすいなどの理由がある。またその作業で対象のみクライアントへ展開するなどもsubversionの方が行いやすい。
Q:なんで専用のユーザーを作成するのか。
A:サーバープロセスとリポジトリ格納場所の権限を分け誤操作などを防止するため。
また不必要なログインは行えないようにするため。
Q: Apacheやsshは使わないのか。
A: 概要に書いたが自宅用なので、極力簡易に作成するため。
WEBを検索するとApache(ssl)やsshと共に設定する例が多いのでレンタルサーバーなど外部とつなぐ場合はそちらを参考にすること。