linux下svn服务器搭建及使用

1. 安装svn客户端

若需要使用svn服务,首先本地需要安装svn客户端。
svn客户端下载地址为:http://tortoisesvn.net/downloads.html
安装过程此处略过。

2. 安装svn服务器

安装svn服务器:

yum install subversion

查看下载后的信息,安装位置及详细信息:

rpm -ql subversion

3. 在svn目录下创建版本库

可以在版本库目录下放置多个项目,不必为每个项目创建一个版本库。下面是我的版本库:

# 创建版本库目录
mkdir /home/svn/groupRepos
# 创建版本库
svnadmin /home/svn/groupRepos

查看并分析生成的文件:

ls /home/svn/groupRepos

可以看到如下文件:

  • conf目录:版本库的配置文件,包含用户访问账号、权限等
  • db目录:存放数据
  • format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号(可以用vi打开看一下)
  • hooks目录:放置hook脚本文件的目录
  • locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
  • README.txt文件:说明文档

注:这里生成文件可能有一定的滞后,如果未看到文件可以稍微等一会再查看。

4. 修改版本库配置文件

版本库的配置文件位于 /home/svn/groupRepos/conf/ 路径下,包含有以下几个文件:

  • authz:负责账号权限的管理,控制账号是否读写权限
  • passwd:负责账号和密码的用户名单管理
  • svnserve.conf:svn服务器配置文件

4.1 修改 authz 文件

vim /home/svn/groupRepos/conf/authz

添加账号及权限后的 authz 文件如下:

### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to:
###  - a single user,
###  - a group of users defined in a special [groups] section,
###  - an alias defined in a special [aliases] section,
###  - all authenticated users, using the '$authenticated' token,
###  - only anonymous users, using the '$anonymous' token,
###  - anyone, using the '*' wildcard.
###
### A match can be inverted by prefixing the rule with '~'. Rules can
### grant read ('r') access, read-write ('rw') access, or no access
### ('').

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe

# [/foo/bar]
# harry = rw
# &joe = r
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[/]
Jack = rw

只需在末尾添加,无需在文件其他部分修改和添加任何东西末尾内容如下:

[\]
然后设置 账号 = 权限
r:读
w:写
:wq 保存退出即可

4.2 设置密码 passwd

### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
# harry = harryssecret
# sally = sallyssecret
Jack = 123456

4.3 修改 svnserve.conf 文件(重要)

vi /home/svn/groupRepos/conf/svnserve.conf

修改后的文件如下:
在这里插入图片描述
注:

  • 大多数网络资料,都会让大家将authz-db = authz这条给去掉注释,经过我本人多次被坑经验,此条去掉后,虽然svn服务器可以连接,但一直会提示“认证失败”,注释掉即可正常。
  • 还有多数资料会让大家在realm = My First Repository处填写服务器ip,经过测试,填写后并无什么用处,所以大家去掉注释即可,无需做任何修改到此,配置已经全部完成,账号信息已经添加成功

【注意】:开启防火墙的状态下需要开放 svn 端口:3690,Linux下添加对外端口可参考博客:Linux下防火墙开启外网端口

5. 启动svn服务器

启动svn服务器:

svnserve -d -r /home/svn/groupRepos

启动成功后,可用ps -aux查看服务启动是否成功,这个是显示所有的运行进程:

ps -ef |grep svn
# xxx      22052     1  0 15:59 ?        00:00:00 svnserve -d -r /home/svn/groupRepos
# xxx      28962 20465  0 16:19 pts/1    00:00:00 grep --color=auto svn

pid=22052 就是svn服务器对应的进程id,若要关闭该进程可使用 kill -9 pid 命令。

6. 客户端访问svn服务器

在svn客户端,输入地址:svn://ip地址:3690/groupRepos
(iP地址为你的svn服务器ip,groupRepos为前文创建的版本库名称,3690为svn默认端口)

svn://xxx.xxx.xxx.xxx:3690/groupRepos

弹出输入用户名和密码,输入即可访问。

7. SVN CheckOut

SVN Cheout Depth有四个选项:

  • Fully recursive:全递归。检出完整的目录树,包含所有的文件或子目录,换句话说就是把所有文件和文件夹都按照原来的结构检出。
  • Immediate children,including folders:直接子节点,包括文件夹和文件。检出目录,包含其中的文件或子目录,但是不递归展开子目录。如图二所示,只检出上框的文件夹和下框的文件,上框中文件夹里的内容不检出。
  • Only file chlidren:仅文件子节点。检出指定目录,包含所有文件,但是不检出任何子目录。若文件结构如图二所示,则只检出下框内容。
  • Only this item:仅此项。只检出目录,不包含其中的文件或子目录。

在这里插入图片描述

7.1 SVN CheckOut:Fully recursive

本地新建一个目录,鼠标右键点击 SVN CheckOut选项,输入用户名及密码,即可CherkOut版本库中已有的资源。
在这里插入图片描述
CherkOut 后可看到本地文件中新增一个 .svn 的文件。

7.2 SVN CheckOut:Immediate children, including folders

如果有以下应用场景:SVN项目仓库中包含有各种文档及代码。我想看一下项目的某个需求文档,但是暂时不想下载代码,因为下载量太大了!为方便以后版本控制和管理文件,我没有直接把文档检出来,而是在保留原来目录结构的情况下把文档检出,而代码目录留空。

这种情况下,我们可以 鼠标右键 -> TortoiseSVN -> Update to revision,然后在 Update Depth 选项处选择“Immediate children, including folders”。基于这种方法,导出直接子节点。导出完成后,可以看到所有的目录都检出,但都是空的。

在这里插入图片描述

8. SVN Commit

本地新增文件上传,选择 SVN Commit。

9. 设置SVN开机自启动

本机系统版本为Ubuntu 18.04,设置SVN服务开机自启动步骤如下:

(1)在目录 /etc/init.d/ 下添加svn启动脚本startsvn.sh

cd /etc/init.d
vim startsvn.sh

脚本内容如下(脚本中前面那段说明必须加上):

#!/bin/sh
### BEGIN INIT INFO
# Provides:          startsvn.sh
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: start svn service
### END INIT INFO

svnserve -d -r /home/svn/groupRepos

(2)修改脚本权限:

sudo chmod 755 startsvn.sh

(3)将脚本添加到自启动项目中:

sudo update-rc.d startsvn.sh defaults 100

(4)重启机器:

shutdown -r now

(5)重启后查看svn服务是否自动启动了:

ps -aux|grep svnserve

如果还是没有启动, 运行: runlevel

查看当前启动level, 会打印一个数字, 把这个数字加到脚本 startsvn.sh 的 Default-Start 后面, 然后从步骤 3再执行一遍试试.

【参考博客】:

### 回答1: 要在Linux上安装SVN服务器并进行配置,可以按照以下步骤进行操作: 1. 安装SVN服务器软件 可以使用以下命令在Linux上安装Subversion软件包: ``` sudo apt-get update sudo apt-get install subversion ``` 2. 创建版本库 使用以下命令创建SVN版本库: ``` sudo svnadmin create /svn/repos ``` 其中,`/svn/repos` 是版本库的路径,可以根据需要进行更改。 3. 配置访问权限 使用以下命令设置版本库的访问权限: ``` sudo chown -R www-data:www-data /svn/repos sudo chmod -R 775 /svn/repos ``` 其中,`www-data` 是Web服务器的用户名,可以根据需要进行更改。 4. 配置SVN服务 编辑 `svnserve.conf` 文件,该文件位于版本库的 `conf` 子目录下: ``` sudo nano /svn/repos/conf/svnserve.conf ``` 取消以下行的注释: ``` anon-access = none auth-access = write password-db = passwd authz-db = authz ``` 其中,`passwd` 和 `authz` 分别是用户认证文件和访问控制文件的路径。 5. 配置用户认证 编辑 `passwd` 文件,该文件位于版本库的 `conf` 子目录下: ``` sudo nano /svn/repos/conf/passwd ``` 添加以下行: ``` [users] username = password ``` 其中,`username` 和 `password` 分别是SVN用户的用户名和密码。 6. 配置访问控制 编辑 `authz` 文件,该文件位于版本库的 `conf` 子目录下: ``` sudo nano /svn/repos/conf/authz ``` 添加以下行: ``` [groups] groupname = username [/] @groupname = rw ``` 其中,`groupname` 和 `username` 分别是SVN用户组和SVN用户的用户名。 7. 启动SVN服务 使用以下命令启动SVN服务: ``` sudo svnserve -d -r /svn/repos ``` 其中,`-d` 选项表示在后台运行,`-r` 选项指定版本库的路径。 现在,您已经在Linux上成功安装和配置了SVN服务器,可以开始使用SVN来管理您的项目了。 ### 回答2: 一、安装SVN服务器: 1. 安装SVN服务器 打开终端,执行命令: sudo apt-get install subversion 2. 创建SVN仓库 创建SVN仓库的位置,一般会选择在/home目录下,执行如下命令: sudo mkdir /home/svn 3. 初始化SVN仓库 执行如下命令: sudo svnadmin create /home/svn/repos 二、配置SVN服务器: 1. 修改SVN配置文件 打开SVN配置文件,执行如下命令: sudo vi /home/svn/repos/conf/svnserve.conf 在“[general]”下添加如下内容: anon-access = read auth-access = write password-db = passwd realm = My First Repository 2. 添加用户帐号和密码 执行如下命令: sudo vi /home/svn/repos/conf/passwd 在文件中添加用户名和密码,格式如下: [users] user1 = password1 user2 = password2 3. 启动SVN服务器 执行如下命令: sudo svnserve -d -r /home/svn/repos 可以看到SVN服务器已启动,可以通过“svn://localhost/My First Repository”进行访问。 三、安装SVN客户端: 1. 安装SVN客户端 打开终端,执行如下命令: sudo apt-get install subversion 2. 下载SVN仓库 执行如下命令: svn checkout svn://localhost/My First Repository myproject 可以看到已经下载了名为“myproject”的文件夹,里面包含SVN仓库中的所有内容。 四、配置SVN客户端: 1. 编辑SVN配置文件 打开SVN配置文件,执行如下命令: sudo vi ~/.subversion/config 2. 添加配置 在文件中添加如下配置: [auth] password-stores = gnome-keyring [helpers] editor-cmd = gedit 3. 配置用户名和密码 执行如下命令: cd myproject svn propedit svn:externals . 在文件中添加如下配置: mylibrary http://svn.example.com/httpdocs/libraries/mylibrary 保存文件,退出。 4. 提交文件 执行如下命令: svn commit -m "Initial import." 可以看到已经提交了一个名为“Initial import.”的更新记录。 以上就是关于如何在Linux上安装SVN服务器搭建的全部内容。通过这些步骤,你就可以轻松地在自己的Linux系统上搭建一个SVN服务器,并使用SVN客户端进行版本管理。 ### 回答3: 作为一种开源的版本控制系统,Subversion(简称 SVN)已经为许多开发人员所熟悉和广泛使用。为了建立一个数据中心或者进行组织协作,搭建 SVN 服务器成为了发挥 SVN 所有功能的重要途径。在本文中,我们将为大家介绍如何在 Linux 系统中安装 SVN 服务器,以 Ubuntu 为例。 首先,我们需要使用 sudo 命令才能管理 Ubuntu 中的软件包,可以使用下面的命令更新软件包列表: sudo apt-get update 接下来,我们就可以安装 SVN 服务器了。在 Ubuntu 中,我们可以使用 aptget 包管理器来进行安装: sudo apt-get install subversion libapache2-mod-svn 安装完成后,我们需要在 Apache 中启用 mod_dav_svn 模块。可以使用下面的命令来启用: sudo a2enmod dav_svn 接着,我们就可以创建 SVN 仓库了。在 Ubuntu 中,所有仓库都保存在 /var/svn 目录下,我们可以使用下面的命令创建一个名为 svnrepo 的仓库: sudo svnadmin create /var/svn/svnrepo 接下来,我们需要设置 SVN 仓库的访问权限。可以使用下面的命令设置: sudo chown www-data:www-data /var/svn/svnrepo -R sudo chmod g+w /var/svn/svnrepo -R 最后,我们需要在 Apache 的 virtualhost 中添加一个 SVN 仓库配置。可以使用下面的命令来添加配置: sudo nano /etc/apache2/sites-available/default-ssl.conf <VirtualHost _default_:443> ... <Location /svnrepo> DAV svn SVNPath /var/svn/svnrepo AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user </Location> ... </VirtualHost> 保存配置文件并重启 Apache 服务器: sudo systemctl restart apache2 最后,在 /etc/apache2 目录下创建一个 dav_svn.passwd 文件,并添加相应的用户名和密码: sudo htpasswd -c /etc/apache2/dav_svn.passwd username 完成后,我们就可以启动 SVN 服务器了。在使用 SVN 的客户端访问 SVN 仓库时,需要使用以下 URL: https://yourserver/svnrepo 以上就是在 Linux 系统中安装 SVN 服务器的全部过程。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值