見出し画像

自宅用に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と共に設定する例が多いのでレンタルサーバーなど外部とつなぐ場合はそちらを参考にすること。


いいなと思ったら応援しよう!