apache SVN 用户手册:http://svnbook.red-bean.com/en/1.7/index.html
文章目录
1, Apache Subversion服务安装
a,安装svn,httpd
官网指南:https://subversion.apache.org/packages.html
web访问svn配置:http://svnbook.red-bean.com/nightly/en/svn.serverconfig.httpd.html
yum -y install httpd
yum -y install mod_dav_svn subversion
[root@test-c62 conf.d]# rpm -ql mod_dav_svn
/etc/httpd/conf.d/subversion.conf
/usr/lib64/httpd/modules/mod_authz_svn.so
/usr/lib64/httpd/modules/mod_dav_svn.so
[root@test-c62 conf.d]# cat /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
# Example configuration to enable HTTP access for a directory
# containing Subversion repositories, "/var/www/svn". Each repository
# must be both:
# a) readable and writable by the 'apache' user, and
# b) labelled with the 'httpd_sys_content_t' context if using
# SELinux
#
# To create a new repository "http://localhost/repos/stuff" using
# this configuration, run as root:
#
# # cd /var/www/svn
# # svnadmin create stuff
# # chown -R apache.apache stuff
# # chcon -R -t httpd_sys_content_t stuff
#<Location /repos>
# DAV svn
# SVNParentPath /var/www/svn
# # Limit write permission to list of valid users.
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# # Require SSL connection for password protection.
# # SSLRequireSSL
# AuthType Basic
# AuthName "Authorization Realm"
# AuthUserFile /path/to/passwdfile
# Require valid-user
# </LimitExcept>
#</Location>
b,配置svn,httpd
配置ssl自签证书
使用openssl,生成自签证书:https://blog.csdn.net/eyeofeagle/article/details/103759058
# 1, svn 创建仓库
mkdir /svn
svnadmin create /svn/project1
# 2, 配置http访问svn
cat >> /etc/httpd/conf.d/subversion.conf <<EOF
<Location /svn/>
SSLRequireSSL
DAV svn
SVNParentPath /svn
SVNListParentPath on
AuthType Basic
AuthName "Subversion login:"
AuthUserFile /svn/http_accesspwd
AuthzSVNAccessFile /svn/http_authz
Satisfy all
Require valid-user
</Location>
EOF
# 3, 创建http的访问密码
htpasswd -c /svn/http_accesspwd admin
#htpasswd /svn/http_accesspwd a
#htpasswd /svn/http_accesspwd b
cp /svn/project1/conf/authz /svn/http_authz
cat >> /svn/http_authz <<EOF
admin = admin
user = a,b
[/]
@admin = rw
@user = r
* =
EOF
# 5, 重启svn,httpd
chown -R apache:apache /svn/
killall svnserve ; svnserve -d -r /svn
service httpd restart
c,通过http访问svn
解决报错:The URI does not contain the name of a repository. [403, #190001]
配置: /etc/httpd/conf.d/subversion.conf ,将<Location /svn> 改为<Location /svn/>
2, CollabNet Subversion Edge服务安装
a, 介绍和安装使用
CollabNet Subversion Edge主页:https://ctf.open.collab.net/sf/projects/svnedge/
安装包下载:https://ctf.open.collab.net/sf/frs/do/listReleases/projects.svnedge/frs.svnedge
安装指南:https://ctf.open.collab.net/sf/wiki/do/viewPage/projects.svnedge/wiki/LinuxInstaller
默认端口: 3343,4434
You do not need to be root to install or run the application,
in fact you SHOULD NOT be root when you install or run the app.
(不需要root权限来安装,推荐普通用户运行)
You will need root or sudo permissions if you want
to be able to configure the application to run the
included Apache httpd on port 80/443
(只有当你的端口为80/443时,才需要root权限)
#修改端口
data/conf/csvn-wrapper.conf
##两个服务启动
bin/csvn
bin/csvn-httpd
##httpd服务的运行用户:
[test@host1 csvn]$ ps -ef |grep httpd
root 14324 1 0 18:05 ? 00:00:00 /csvn/csvn/bin/httpd -f /csvn/csvn/data/conf/httpd.conf -k start
saslauth 14330 14324 0 18:05 ? 00:00:04 /csvn/csvn/bin/httpd -f /csvn/csvn/data/conf/httpd.conf -k start
##修改启动用户,组 (httpd服务)
[root@host1 csvn]# grep saslauth /csvn/csvn/ -r
/csvn/csvn/data/conf/csvn_main_httpd.conf:User saslauth
/csvn/csvn/data/conf/teamforge.properties:httpd.user=saslauth
/csvn/csvn/data/conf/teamforge.properties:app.user=saslauth
##修改启动用户,组 (svn服务)
[root@host1 csvn]# grep run_as_user /csvn/csvn/data/conf/csvn.conf -i
RUN_AS_USER=
b,优化:ssl自签证书, 支持打开xml文件
配置httpd,并重启csvn-httpd服务
3, 同步旧仓库的代码
svnsync init https://192.168.56.11:4430/svn/repo1 https://192.168.56.22:442/svn/repo1/ \
--trust-server-cert \
--source-username test1 --source-password test1 \
--sync-username admin --sync-password adminpassword
#Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook
#--> 解决:在仓库的hooks目录,copy pre-revprop-change.tmpl 为pre-revprop-change,修改exit 1 为exit 0
svnsync sync https://192.168.56.11:4430/svn/repo1 \
--trust-server-cert \
--source-username test1 --source-password test1 \
--sync-username admin --sync-password adminpassword