naYa&skillnaYa&skill
首页
文章
时间线
角色技能树
首页
文章
时间线
角色技能树
  • linux部署svn

    • 安装svn
    • 安装http代理
    • 创建代码仓库
    • 可导入dump备份
    • 授权代码仓库目录访问
    • 创建用户
    • 授权用户可访问的仓库
    • 配置http代理指定用户和授权文件
    • 启动http代理(svn所有代码仓库)
    • 开放防火墙端口
    • 访问/获取svn代码
    • 额外扩展-文件下载
    • 开放文件端口
    • 访问文件目录

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/wms

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

http://127.0.0.1:7556/test