この記事はだいたい 4 分ほどで読めます。
CentOS7にSubversionをセットアップした時の備忘録です。
目次
環境
実行した環境はこちらです。
# cat /etc/redhat-release CentOS Linux release 7.8.2003 (Core)
subversionインストール
インストールを開始します。
# yum install subversion
Subversionのリポジトリ作成
続いてリポジトリを作成します。
リポジトリ用のディレクトリを作成します。
# mkdir -p /var/www/svn/repos # svnadmin create /var/www/svn/repos # svn mkdir file:///var/www/svn/repos/trunk -m "create" # svn mkdir file:///var/www/svn/repos/branches -m "create" # svn mkdir file:///var/www/svn/repos/tags -m "create"
Subversion用のグループを作成
svngroupというSubvertion用のグループを作成。
# groupadd svngroup
Subversionリポジトリのグループと権限を変更
権限を変更します。
# chown -R :svngroup /var/www/svn/ # chmod -R 775 /var/www/svn/
Subversion用のユーザを作成、グループに入れる
Subversion用にユーザを作成し、svngroupに追加します。
# useradd -m [ユーザー名] # usermod -aG svngroup [ユーザー名]
パスワード設定
先ほど追加したユーザのパスワードを設定。
# passwd [ユーザー名]
サービスを開始する。
サービスを開始してみます。
# systemctl start svnserve
エラーが発生したため確認
ステータスを確認します。
# systemctl status svnserve
● svnserve.service - Subversion protocol daemon Loaded: loaded (/usr/lib/systemd/system/svnserve.service; disabled; vendor preset: disabled) Active: failed (Result: exit-code) since 木 2020-04-30 11:20:26 JST; 2min 14s ago Process: 23148 ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS (code=exited, status=1/FAILURE) 4月 30 11:20:25 hoge.hogesrv.com systemd[1]: Starting Subversion protocol daemon… 4月 30 11:20:26 hoge.hogesrv.com svnserve[23148]: svnserve: ルートパス '/var/svn' が存在しないかディレクトリではありません。 4月 30 11:20:26 hoge.hogesrv.com systemd[1]: svnserve.service: control process exited, code=exited status=1 4月 30 11:20:26 hoge.hogesrv.com systemd[1]: Failed to start Subversion protocol daemon. 4月 30 11:20:26 hoge.hogesrv.com systemd[1]: Unit svnserve.service entered failed state. 4月 30 11:20:26 beanhouse.beanhousesrv.com systemd[1]: svnserve.service failed4月 30 11:20:26 hoge.hogesrv.com systemd[1]: svnserve.service failed.
ルートパスが存在しないというエラーが発生しました。
svnserve の設定
ルートパスの設定を変更します。
# vi /etc/sysconfig/svnserve OPTIONS="-r /var/svn" ↓ OPTIONS="-r /var/www/svn"
サービスを開始する
改めてサービスを開始します。
# systemctl start svnserve
起動できました。
次にhttp経由でリポジトリにアクセスできるようにする。
mod_dav_svnのインストール確認をします。
# yum info mod_dav_svn 読み込んだプラグイン:fastestmirror, langpacks Loading mirror speeds from cached hostfile base: ftp.yz.yamagata-u.ac.jp epel: nrt.edge.kernel.org extras: ftp.yz.yamagata-u.ac.jp remi-safe: ftp.riken.jp updates: ftp.yz.yamagata-u.ac.jp インストール済みパッケージ 名前 : mod_dav_svn アーキテクチャー : x86_64 バージョン : 1.7.14 リリース : 14.el7 容量 : 212 k リポジトリー : installed 提供元リポジトリー : base 要約 : Apache httpd module for Subversion server URL : http://subversion.apache.org/ ライセンス : ASL 2.0 説明 : The mod_dav_svn package allows access to a Subversion repository : using HTTP, via the Apache httpd server.
インストール済みなので次。
アパッチに所有権を持たせる。
# chown -R apache:apache /var/www/svn
subversion設定ファイルの編集
外部からアクセスする予定はないので内部のみ許可するように設定。
# vi /etc/httpd/conf.d/subversion.conf
<Location /svn/repos> DAV svn #内部からのみアクセス許可 Order deny,allow Deny from all Allow from 127.0.0.1 Allow from 192.168.1.0/24 AuthType Basic AuthName "DAV SVN" AuthUserFile /etc/httpd/.htpasswd SVNParentPath /var/www/svn SVNListParentPath on SVNAutoversioning on Require valid-user </Location>
ユーザの設定をおこないます。
※-cオプションは新規作成なので、追加する場合は-cをはずせばいい
# htpasswd -bc /etc/httpd/.htpasswd [ユーザー名] [パスワード]
httpdを再起動。
# systemctl restart httpd
内部からだけアクセスできることが確認できました。
おわり。