系统是 centos7,需要先搭建好 svn 服务器,可以参考 centos7 搭建 svn 服务器。
采用 http 方式登录可以加密密码,不用直接明文显示。。。
1 搭建 http 服务器
1.1 安装 httpd
$ yum install httpd
设置开机启动
$ chkconfig httpd on
启动 httpd
$ service httpd start
1.2 安装辅助服务
$ yum install mod_dav_svn mod_auth_mysql
2 修改配置文件
2.1 创建版本库的 http 授权目录
我的版本库路径是:/home/svn/general,默认的 passwd 和 authz 文件放在 /home/svn/general/conf 目录,建议把 http 授权目录也放这里,方便管理。
1)新建 http 授权目录
$ cd /home/svn/general/conf
$ mkdir http-auth && cd http-auth
2)创建 passwd 文件,保存账号信息,使用 htpasswd 生成
$ htpasswd -c /home/svn/general/conf/http-auth/passwd lk
根据提示设置 lk 账号的密码就可以了,htpasswd 的参数如下:
-c:创建 passwd 文件,如果文件存在则清空文件内容;
-n:不写入 passwd 文件,直接显示加密后的密码;
-m:使用 MD5 加密(默认);
-d:使用 CRYPT 加密;
-s:使用 SHA 加密;
-p:使用普通文本格式(明文存储,不加密);
-b:命令行中在 用户名 空格后接上 密码 ,不需要交互;
-D:删除指定用户
3)设置用户权限控制文件
$ vim authz
内容:
[groups]
admin = lk
front = user1, user2
test = user3
[/]
@admin = rw
[/front]
@front = rw
@test = r
[/test]
user3 = rw
[groups]:分组,如 front 分组有用户 user1 和用户 user2
[/]: svn 根目录
@admin: 表示 admin 组的所有成员
rw: 读写权限
2.2 修改 svn 配置文件
$ vim /home/svn/general/conf/svnserve.conf
指定 passwd 文件和 authz 文件的路径
password-db = /home/svn/general/conf/http-auth/passwd
authz-db = /home/svn/general/conf/http-auth/authz
2.3 修改 httpd 配置文件
$ vim /etc/httpd/conf/httpd.conf
在文件最后面添加以下内容:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNListParentPath on
#SVNParentPath /home/svn/general
SVNPath /home/svn/general
AuthType Basic
Satisfy Any
AuthName "Subversion repos"
AuthUserFile /home/svn/general/conf/http-auth/passwd
AuthzSVNAccessFile /home/svn/general/conf/http-auth/authz
Require valid-user
</Location>
说明:
SVNPath:是版本库目录,多个版本库时使用 SVNParentPath ;
AuthUserFile:用户认证文件,填 passwd 文件的路径;
AuthzSVNAccessFile: 权限文件,填 authz 文件的路径;
Require :用户访问是否需要验证;
2.4 Apache 用户添加 svn 仓库的写权限
1)把 Apache 用户加入 root 组
$ usermod -a -G root apache
2)组内成员添加写权限
$ chmod -R g+w /home/svn
3)重启服务
$ service httpd restart
$ service svnserve restart
如果 svn 重启失败,直接把进程 kill 掉重新启动。
2.5 测试
建立一个目录,checkout 版本库
$ mkdir svnbase
$ cd svnbase
checkout 版本库
$ svn checkout http://[ip]:[port]/[path] ./ --username lk
ip:svn 服务器的 ip;
port:版本库的端口;
path:checkout 文件的路径,不写则 checkout 整个版本库;
lk:用户名;
可以把文件拉到本地就成功了。