Linux 安装 svn
Linux 安装 svn
一、网络安装
服务器可以连接外网的情况下直接通过命令安装即可:
yum install subversion
查看版本:
svn --version --quiet
二、本地安装(待办)
三、初始配置
1. 建立版本库目录
首先,需要创建一个目录来存放 SVN 版本库,一个项目建立新的版本库:
mkdir -p /home/svn/svndata/repos
这条命令创建了一个名为 repos
的目录在 /home/svn/svndata/
下。-p
参数确保了即使上级目录不存在,也会一并创建。
2. 建立版本库
接下来,使用 svnadmin create
命令在 repos
目录下创建一个新的 SVN 版本库(与上面目录对应)。
svnadmin create /home/svn/svndata/repos/project1
这条命令会在 repos
目录下创建一个名为 project1
的新版本库,并自动生成所需的配置文件。
3. 修改配置文件
现在需要修改版本库的配置文件,以设置访问权限和认证。
vim /home/svn/svndata/repos/project1/conf/svnserve.conf
找到下列配置项,确保配置项前的注释(#
)被删除,且每项配置都位于行首:
[general]
anon-access = none # 非授权用户无法访问
auth-access = write # 授权用户有写权限
password-db = passwd # 指定密码文件路径
authz-db = authz # 访问控制文件
realm = /home/svn/svndata/repos # 认证命名空间
4. 配置用户
设置 SVN 用户及其密码。
vim /home/svn/svndata/repos/project1/conf/passwd
在 passwd
文件中添加用户认证信息:
[users]
svnAdmin = svnpwd
这里 [users]
下的 svnAdmin
是用户名,svnpwd
是对应的密码。
5. 配置权限
设置不同用户的访问权限。
vim /home/svn/svndata/repos/project1/conf/authz
在 authz
文件中定义权限:
[groups]
svnuser = svnAdmin
[/]
@svnuser = rw
这里定义了一个用户组 svnuser
并赋予了对根路径 /
的读写权限(rw
)。
6. 创建日志文件
虽然 SVN 自带日志功能,但可以创建一个自定义日志文件来记录操作。
cd /home/svn/svndata/repos/conf
touch svnlog.txt
touch
命令创建了一个新的空文件 svnlog.txt
。
7. 使用 import 导入文件
将本地的 project1
文件夹导入到 SVN 版本库中。
cd /home/svn/svndata/repos
svn import project1 file:///home/svn/svndata/repos/project1 -m "first import"
这条命令导入了 project1
目录到版本库,并附带了一条提交信息 "first import"
。
8. 检出副本
svn checkout file:///home/svn/svndata/repos/project1 workcopy
9. 启动服务
最后,启动 svnserve
服务来监听客户端的 SVN 请求。
svnserve -d -r /home/svn/svndata/repos --log-file /home/svn/svndata/repos/conf/svnlog.txt
-d
参数表示以守护进程模式运行,-r
指定了版本库的根目录。
#注:停止 svnserve 服务 pkill -f svnserve
10. 检查服务状态
ps aux | grep svnserve
11. 测试检出
cd /home
svn checkout svn://127.0.0.1/project1
# 可以在home目录下看到project1目录
12. 配置防火墙
直接查看 443 端口是否开放:
sudo firewall-cmd --zone=public --query-port=443/tcp
手动添加端口规则:
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
重新加载 firewalld 以应用更改:
sudo systemctl reload firewalld
再次执行命令检查更改是否生效:
sudo firewall-cmd --zone=public --query-port=443/tcp