提示:本文的系统环境是:ubuntu-22.04.1-live-server-amd64,不同的系统、不同的系统版本号安装方式可能有些地方有差异;
一、检查是否已安装
svnserve --version
如果系统安装过了,则先卸载
sudo apt-get remove --purge subversion
二、安装SVN
安装前先更新一下系统
sudo apt-get update
安装subversion
sudo apt-get install subversion
创建仓库文件夹
sudo mkdir -p /home/svn # 以/home/svn为仓库地址,仓库地址的路径可以自己改过
sudo chmod -R 777 /home/svn # 更改权限 ,如果用root用户访问的话可以不用改
创建版本库
svnadmin create /home/svn/repos
备注:1、 创建版本库repos,repos为版本库名字
2、版本库跟访问路径有关,这里填的是名字要和访问路径要对应,
如:svn://ip地址/repos
完成后会在repos文件夹下生成以下文件
authz
hooks-env.tmpl
passwd
svnserve.conf
然后对db进行权限设置
cd /home/svn/repos
chmod -R 777 db
三、SVN配置
设置访问权限:需要对conf文件夹下的文件进行修改
vim conf/svnserve.conf
简单的修改几处配置:
#匿名用户可读anon-access = read(建议改为none,即不可读)
#权限用户可写auth-access = write
#密码文件为password-db = passwd
#权限文件为authzauthz-db = authz
注意:去掉前面的#,并且顶格,不然可能会报错
修改passwd文件,添加访问用户
vim conf/passwd
[users]
# harry = harryssecret
# sally = sallyssecret
xiaoming = 123456wang = 123456
修改authz权限
[groups]
admin = xiaoming #管理员用户,拥有最高的读写权限normal = wang #普通用户,仅拥有读权限
[/] # / 代表所有项目,即不同的仓库都具有权限共通性
@admin = rw@normal = r
这个部分的说明
上面的 [/] 表示对根目录进行授权,即用户组成员对所有项目都具有权限共通性,我们如果要针对不同项目去设置不同权限,可以如下操作
[JAVA:/]
Heath = rw //表示用户 Heath 对项目 JAVA 的所有内容具有读写权限
Liu = r //表示用户 Liu 对项目 JAVA 的所有内容仅具有读权限
[Python:/]
Ming = rw //表示用户 Ming 对项目 Python 的所有内容具有读写权限
Tao = r //表示用户 Tao 对项目 Python 的所有内容仅具有读权限
上面这种做法可以保证Heath仅拥有JAVA项目的读写权限,没有Python项目的权限,保证项目组成员之间的信息安全和项目安全,也便于项目组成员之间的管理。
四、启动SVN
svnserve -d -r /home/svn
备注:1、不要这样启动 svnserve -d -r /home/svn/repos
2、启动SVN服务器,这里说明下: -d:表示在后台运行 -r:指定服务器的根目录
五、关闭SVN
killall svnserve
六、访问SVN
svn://ip地址/repos
svn默认使用端口3690
检查svnserve是否已经运行
ps aux | grep svnserve
七、测试SVN
拷贝仓库:
svn co svn://192.168.6.221:3690/repos --username xiaoming --password 123456
checkout:
svn checkout svn://192.168.6.221:3690/repos
访问失败原因分析:
1、检查配置是否正确
2、3690端口是否开放
3、访问路径是否正确
检查端口
查看网络防火墙3690端口开放
firewall-cmd --list-all3690端口是没有对外开放的,执行下面命令开启
firewall-cmd --zone=public --add-port=3690/tcp --permanent重新加载防火墙,这一步很重要,不然添加的端口会不生效
firewall-cmd --reload为了保护服务器主机安全,建议开启防火墙
八、配置系统自动启动SVN
ubuntu操作系统重启后,都要手动去启动svnserve,我们可以手动把它加进操作系统启动的列表。
添加启动脚本/etc/init.d/subversion.sh 内容如下
#!/bin/bash
svnserve -d -r /home/svn/repos --log-file=/home/svn/svn.log
exit 0
修改脚本文件的属性
chmod 755 /etc/init.d/subversion.sh
使用下面命令把脚本连接到启动目录
ln -s /etc/init.d/subversion /etc/rc3.d/S03subversion
ln -s /etc/init.d/subversion /etc/rc4.d/S03subversion
ln -s /etc/init.d/subversion /etc/rc5.d/S03subversion
结果如下:
这样操作系统重启后,svnserve服务就会自动启动