Subversion : HTTP でアクセスする2024/09/13 |
[svnserve] を起動せず、HTTP でリポジトリにアクセスできるよう設定します。 |
|
[1] | |
[2] | |
[3] | 必要なパッケージをインストールしておきます。 |
root@dlp:~ # pkg install -y mod_dav_svn
|
[4] | Apache httpd の設定です。 例として [/home/svn/repos/project] リポジトリにアクセスできるよう設定します。 |
root@www:~ #
vi /usr/local/etc/apache24/httpd.conf # 160行目 : コメント解除 LoadModule dav_module libexec/apache24/mod_dav.so # 171,172行目 : コメント解除 LoadModule dav_fs_module libexec/apache24/mod_dav_fs.so LoadModule dav_lock_module libexec/apache24/mod_dav_lock.so
root@dlp:~ #
vi /usr/local/etc/apache24/Includes/subversion.conf # 新規作成 LoadModule dav_svn_module libexec/apache24/mod_dav_svn.so LoadModule authz_svn_module libexec/apache24/mod_authz_svn.so LoadModule dontdothat_module libexec/apache24/mod_dontdothat.so <Location /project> DAV svn AuthType Basic AuthName "DAV SVN" AuthUserFile /home/svn/.svnpasswd Require valid-user SVNPath /home/svn/repos/project </Location>
root@dlp:~ #
chown -R www /home/svn/repos/project root@dlp:~ # service apache24 restart # ユーザー登録 root@dlp:~ # htpasswd -c /home/svn/.svnpasswd freebsd New password: Re-type new password: Adding password for user freebsd |
[5] | アクセス権を設定する場合は以下のようにします。 [svnserve] サービス起動時のアクセス権設定とは別の設定です。 |
root@dlp:~ #
vi /home/svn/repos/project/conf/authzsvn.conf # 新規作成 # グループを定義 [groups] developer = freebsd,netbsd operator = openbsd # ルートディレクトリのアクセス権は [Read] [/] * = r # [trunk] 配下のアクセス権は [developer] のみ [Read/Write] [project:/trunk] @developer = rw # [branches] 配下のアクセス権は [operator] のみ [Read/Write] [project:/branches] @operator = rw # [tags] 配下のアクセス権は [operator] のみ [Read/Write] [project:/tags] @operator = rw
root@dlp:~ #
vi /usr/local/etc/apache24/Includes/subversion.conf <Location /project> DAV svn AuthType Basic AuthName "DAV SVN" AuthUserFile /var/svn/.svnpasswd Require valid-user SVNPath /var/svn/repos/project # 追記 AuthzSVNAccessFile /home/svn/repos/project/conf/authzsvn.conf </Location>root@dlp:~ # service apache24 reload |
[6] | 任意のホストから HTTP/HTTPS アクセスして設定を確認します。 |
serverworld@node01:~ $ svn --username freebsd list https://dlp.srv.world/project Authentication realm: <https://dlp.srv.world:443> DAV SVN Password for 'freebsd': ******** branches/ tags/ trunk/
serverworld@node01:~ $
serverworld@node01:~/work $ echo 'store-plaintext-passwords = no' >> ~/.subversion/servers serverworld@node01:~ $ mkdir work serverworld@node01:~ $ cd work
svn --username freebsd co https://dlp.srv.world/project Authentication realm: <https://dlp.srv.world:443> DAV SVN Password for 'freebsd': ******** A project/branches A project/tags A project/trunk A project/trunk/index.html Checked out revision 4.
serverworld@node01:~/work $
cd project/trunk
# 適当にバージョン管理下の任意のファイル編集後に # [openbsd] ユーザーで [trunk] へ [commit] serverworld@node01:~/work/project/trunk $ echo index.html >> index.html serverworld@node01:~/work/project/trunk $ svn --username openbsd ci index.html -m "update by openbsd"
Authentication realm: <https://dlp.srv.world:443> DAV SVN
Password for 'openbsd': ********
Sending index.html
Transmitting file data .svn: E195023: Commit failed (details follow):
svn: E195023: Changing file '/home/serverworld/work/project/trunk/index.html' is forbidden by the server
svn: E175013: While preparing '/home/serverworld/work/project/trunk/index.html' for commit
svn: E175013: Access to '/project/!svn/txr/4-4/trunk/index.html' forbidden
# 設定通り拒否された
# [netbsd] ユーザーで [trunk] へ [commit] serverworld@node01:~/work/project/trunk $ svn --username netbsd ci index.html -m "update by netbsd"
Authentication realm: <https://dlp.srv.world:443> DAV SVN
Password for 'netbsd': ********
Sending index.html
Transmitting file data .done
Committing transaction...
Committed revision 5.
# 設定通り [commit] できた
|
[7] | HTTP のため Web ブラウザーで参照アクセスすることもできます。 |
Sponsored Link |