1、安装svn
yum install subversion
2、查看安装位置
rpm -ql subversion
3、创建svn版本库目录
mkdir -p /usr/local/javasoft/svndata
4、创建存放项目版本库(创建版本库名称flysky)
svnadmin create /usr/local/javasoft/svndata/flysky
5、 关于flysky目录下说明:
hooks目录:放置hook脚步文件的目录
locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存
取文件库的客户端
format目录:是一个文本文件,里边只放了一个整数,表示当前文件库配置的版本号
conf目录:是这个仓库配置文件(仓库用户访问账户,权限)
6、进入conf目录(该svn版本库配置文件)
uthz文件是权限控制文件
passwd是帐号密码文件
svnserve.conf SVN服务配置文件
6.1、设置密码账号
vi passwd
[users]
admin = 123456
ts = 123456
6.2 设置权限
vi authz
# vi /svn/test/conf/authz
[groups]
developer = ts
[/]
@developer = rw
admin = r
[/]:表示根目录,即 /var/svnrepos
用户组developer读写权限
admin只读权限
6.3 修改svnserve.conf文件
vi svnserve.conf
打开下面的几个注释:
anon-access = none #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
修改
realm = /usr/local/javasoft/svndata # 认证空间名,版本库所在目录
6.4 centos7默认使用 firewalld 而不是 iptables 作为防火墙配置工具
设置 firewalld 开放 svnserve 服务器端口 3690 的命令如下:
firewall-cmd --permanent --add-port=3690/tcp
7、启动svn版本库
svnserve -d -r /usr/local/javasoft/svndata
启动成功后,可用ps查看服务启动是否成功
ps -ef | grep 'svnserve'
[root@localhost conf]# ps -ef | grep 'svnserve'
root 12727 1 0 08:50 ? 00:00:00 svnserve -d -r /usr/local/javasoft/svndata
root 13088 7573 0 08:57 pts/0 00:00:00 grep --color=auto svnserve
8、客户端访问svn服务器
在windows客户端,输入地址:svn://linuxip:3690/flysky
弹出输入用户名和密码,输入即可访问
linux服务器输入命令测试
svn co svn://192.168.2.10:3690/flysky
出现下面内容
认证领域: /usr/local/javasoft/svndata
“root”的密码: (输入linux密码)
认证领域: /usr/local/javasoft/svndata
用户名: ts (输入SVN配置用户名)
“ts”的密码: (输入SVN配置用户名的密码)
后面出现的警告可以通过,你可以通过在“/root/.subversion/servers”中设置选
项“store-plaintext-passwords”为“yes”或“no”来避免
centos7 svn 开机起动
在/usr/lib/systemd/system/添加svnserve.service文件
$OPTIONS修改为 -d -r /usr/local/javasoft/svndata
注:修改service文件后 使用systemctl daemon-reload重新加载
服务命令:
启动svnserve服务: systemctl start svnserve.service
设置开机自启动:systemctl enable svnserve.service
停止开机自启动:systemctl disable svnserve.service
查看服务当前状态:systemctl status svnserve.service
重新启动服务:systemctl restart svnserve.service
查看所有已启动的服务:systemctl list-units --type=service
安装过程中遇到的问题:
1、[root@localhost conf]# svn co svn://127.0.0.1:3690/svnrepos
svn: E200002: Unable to connect to a repository at URL
'svn://127.0.0.1/svnrepos'
svn: E200002: /var/svn/svnrepos/conf/svnserve.conf:19: Option
expected
这是因为修改svnserve.conf时,打开注释时,配置的前面有空格,应该顶格写。修改
后即可
2、[root@localhost ~]# svn co svn://192.168.2.10:3690/flysky
svn: E000013: Unable to connect to a repository at URL
'svn://192.168.2.10/flysky'
svn: E000013: Can't open file '/var/svnrepos/flysky/format':
Permission denied
原因:需要临时关闭SELinux
setenforce 0
SELinux
SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
临时关闭SELinux
setenforce 0
临时打开SELinux
setenforce 1
查看SELinux状态
getenforce
开机关闭SELinux
编辑/etc/selinux/config文件,如下图,将SELINUX的值设置为disabled。下次
开机SELinux就不会启动了。
防火墙
临时关闭防火墙
systemctl stop firewalld
永久防火墙开机自关闭
systemctl disable firewalld
临时打开防火墙
systemctl start firewalld
防火墙开机启动
systemctl enable firewalld
查看防火墙状态
systemctl status firewalld
配置svn HTTP servers
1、安装http服务
[root@localhost etc]# yum install httpd
2、安装SVN和Apache之间连携用模块mod_dav_svn
[root@localhost etc]# yum install mod_dav_svn
3、查看安装结果
[root@localhost etc]# ls /etc/httpd/modules/ | grep svn
mod_authz_svn.so
mod_dav_svn.so
4、版本库目录指定操作组和权限
[root@localhost etc]# chown -R apache:apache /usr/local/javasoft/svndata(可以不用)
[root@localhost etc]# chmod -R u+rw /usr/local/javasoft/svndata
5、编辑[/etc/httpd/conf.d/subversion.conf]文件
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
DAV svn
SVNPath /usr/local/javasoft/svndata/flysky
AuthType Basic
AuthName "Subversion repos"
AuthUserFile /usr/local/javasoft/svndata/flysky/conf/accesspwd
AuthzSVNAccessFile /usr/local/javasoft/svndata/flysky/conf/authz
Require valid-user
注意点:
AuthType认证类型
AuthName 描述名,随便取
AuthUserFile这个是http协议的访问账户密码文件,后面使用htpasswd命令创建
AuthzSVNAccessFile 权限认证文件,这个跟上面配置svn时候配置的权限设置一样
Require 需要认证用户才可以访问
6 创建账户密码(admin/admin)
[root@localhost conf]# htpasswd -cm /usr/local/javasoft/svndata/flysky/conf/accesspwd admin
New password:
Re-type new password:
Adding password for user admin
7、重启
service httpd restart 或者 systemctl restart httpd.service
8、访问
http://192.168.2.10/flysky/
参考
https://www.cnblogs.com/gne-hwz/p/8563982.html
svn密码存放位置
~/.subversion/auth/svn.simple/
linux svn服务器上的文件保存
db/svnrepos/是svn版本库目录
db/revs/存储的svn上传文件等的目录
[root@izuf66j2kiq945yl5br4ubz svndata]# cd flysky/
[root@izuf66j2kiq945yl5br4ubz flysky]# ls
conf db format hooks locks README.txt
[root@izuf66j2kiq945yl5br4ubz flysky]# cd db/
[root@izuf66j2kiq945yl5br4ubz db]# ls
current fs-type revprops txn-current uuid
format min-unpacked-rev revs txn-current-lock write-lock
fsfs.conf rep-cache.db transactions txn-protorevs
[root@izuf66j2kiq945yl5br4ubz db]#