linux部署svn
使用CentOS7部署svn,安装svn之后,还需要额外安装http进行对svn多个仓库进行统一代理
安装svn
yum install subversion
安装http代理
yum install httpd mod_dav_svn
安装httpd并且加载mod_dav_svn模块
创建代码仓库
svnadmin create /app/svn/repository/wms
总仓库目录: /app/svn/repository
源代码(仓储项目wms)存放目录: /wms
如有其它项目也可以放在/app/svn/repository下面,如定时器项目:svnadmin create /app/svn/repository/timer
可导入dump备份
svnadmin load /app/svn/repository/timer < /bak/dump/timer.dump
授权代码仓库目录访问
chown -R apache:apache /app/svn/repository
chmod -R 755 /app/support/svn/repository
创建用户
zs:$2y$05$loHsWs153v9ITbSCL.AZj.Z7FBTru4G5dlv/PrShHz3SzCok3b2sC
假设用户名:zs 密码:123456, 使用htpasswd进行加密: htpasswd -nbB zs 123456
,
创建passwd文件并将刚刚加密后信息写入: /app/svn/config/passwd
授权用户可访问的仓库
[groups]
a = zs
[wms:/]
@a = rw
[timer:/]
@a = rw
对用户(zs)进行分组(a), 并授权wms,timer项目读写权限授予分组a,
创建authz文件并将刚刚授权信息写入: /app/svn/config/authz
配置http代理指定用户和授权文件
# svn端口
Listen 7443
#不load也可以,应该是提前自动加载了
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_svn_module modules/mod_dav_svn.so
#/etc/httpd/conf/httpd.conf
# svn
<Location /svn>
#指定代理的svn总仓库目录
DAV svn
SVNParentPath /app/svn/repository
# 设置认证方式为基本认证(Basic Authentication)
AuthType Basic
AuthName "svn-self-Repository"
# 指定用户认证文件和访问控制文件的位置
AuthUserFile /app/svn/config/passwd
AuthzSVNAccessFile /app/svn/config/authz
# 禁止匿名访问,只允许通过用户名和密码进行访问
Require valid-user
</Location>
找到httpd.conf配置文件(/etc/httpd/conf/httpd.conf),写入svn的代理配置信息,listen指定端口号7443, 指定仓库总目录:(/app/svn/repository),以及之前配置的用户信息以及授权信息
启动http代理(svn所有代码仓库)
//启动
systemctl start httpd
//停止
systemctl stop httpd
//状态
systemctl status httpd
//开机启动
systemctl enable httpd
开放防火墙端口
//永久添加端口开放
firewall-cmd --zone=public --add-port=7443/tcp --permanent
//重新加载防火墙
firewall-cmd --reload
//查看开放的端口
firewall-cmd --zone=public --list-port
访问/获取svn代码
http://127.0.0.1:7443/svn/timer
将127.0.0.1更换成自己的域名或者ip即可
额外扩展-文件下载
调整配置文件增加新端口,文件目录为/app/file, 具体子目录为: /app/file/test
# svn
Listen 7443
# 文件下载端口
Listen 7556
#不load也可以,应该是提前自动加载了
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_svn_module modules/mod_dav_svn.so
#/etc/httpd/conf/httpd.conf
# svn
<Location /svn>
#指定代理的svn总仓库目录
DAV svn
SVNParentPath /app/svn/repository
# 设置认证方式为基本认证(Basic Authentication)
AuthType Basic
AuthName "svn-self-Repository"
# 指定用户认证文件和访问控制文件的位置
AuthUserFile /app/svn/config/passwd
AuthzSVNAccessFile /app/svn/config/authz
# 禁止匿名访问,只允许通过用户名和密码进行访问
Require valid-user
</Location>
# 文件下载服务配置
<VirtualHost *:7556>
DocumentRoot "/app/file"
<Directory "/app/file">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
# 禁止上传文件
<Location "/upload">
<LimitExcept GET>
Require all denied
</LimitExcept>
</Location>
# 日志文件(可选)
ErrorLog "logs/download_error_log"
CustomLog "logs/download_access_log" common
</VirtualHost>
开放文件端口
//永久添加端口开放
firewall-cmd --zone=public --add-port=7443/tcp --permanent
//重新加载防火墙
firewall-cmd --reload
访问文件目录
http://127.0.0.1:7556/test