Linux下SVN服务器安装配置及客户端安装说明

时间:2024.5.14

Linux下SVN服务器安装及配置记录

Linux下SVN服务器安装配置

第一章 安装

1. 采用源文件编译安装。源文件共两个,为:

subversion-1.6.1.tar.gz (subversion 源文件)

subversion-deps-1.6.1.tar.gz (subversion依赖文件)

注意文件版本必须一致,否则很容易产生各种奇怪的问题.

2. 上传以上两个文件到服务器上,解压。解压命令为:

tar xfvz subversion-1.6.1.tar.gz

tar xfvz subversion-deps-1.6.1.tar.gz

指令简介:tar 为解压命令,xfvz为tar命令的参数,用于解压tar.gz格式压缩的文件。

3. 解压后生成 subversion-1.6.1 子目录,两个压缩包解压后都会自动放到此目录下,不用手动更改。

4. 进入解压子目录:

cd subversion-1.6.1

5. 执行 ./configure --prefix=/usr/local/svn

./configure时会出现以下错误:configure: error: We require OpenSSL; try –with-openssl configure failed for serf。 这是因为没有安装openssl相关包 openssl官方网址:/

linux下openssl的安装:

wget /source/openssl-1.0.0g.tar.gz

tar xvzf openssl-1.0.0g.tar.gz

cd openssl-1.0.0g

然后:

./config --prefix=/usr/local/ssl shared zlib-dynamic enable-camellia 更多详细帮助请运行

./config --help

然后执行: make depend Make

Make test

make install 编辑/etc/ld.so.conf, add to paths /usr/local/ssl/lib(可以直接在

/etc/ld.so.conf.d文件夹下再创建一个.conf文件,把/usr/local/ssl/lib拷贝到里面,另外也可以在现有的.conf文件中添加/usr/local/ssl/lib这个路径,反正ld.so.conf中包含了这个文件夹下的所有.conf文件) 安装之后会在/usr/local下生成一个ssl目录,设置环境变量,在/etc/profile的PATH中增加如下内容:

PATH=/usr/local/ssl/bin:/sbin/:$PATH:/usr/sbin

export PATH

6.再进到subversion-1.6.1 再执行 ./configure --prefix=/opt/subversion 进行配置设定并指明安装目录. 注意prefix前是两个减号. 默认不带BDB包, 所以默认使用的是FSFS模式. 若想使用BDB模式需另外下载BDB包.建议使用FSFS模式.

指令简介:configure命令用于检查安装平台和目标特征,prefix用于指定路径。

configure完成可能会出现:

You don’t seem to have Berkeley DB version 4.0.14 or newer installed and linked to APR-UTIL. We have created Makefiles which will build without the Berkeley DB back-end; your repositories will use FSFS as the default back-end. You can find the latest version of Berkeley DB here:

/technology/software/products/berkeley-db/index.html

你似乎没有Berkeley DB版本4.0.14或更新版本安装并链接至四月- util的。我们已创建Makefile文件的将建立一个没有了Berkeley DB后端,你的版本库作为默认后端使用FSFS格式。你可以找到最新版本Berkeley DB的位置。

这个提示可以跳过, 因为不使用BDB存储。

7. 执行 make 编译.

8. 执行 make install 安装.

9. 添加环境变量:

vi /etc/profile

在文件最后加入:

SVNPATH=$PATH:/usr/local/svn/bin

export SVNPATH

10. 测试SVN是否安装成功,执行:

svnserve --version

如果显示版本信息, 则安装成功. (如果没有安装svnserve,请先安装apt-get install subversion)

第二章 配置

本系统采用为每个项目单独建一版本库的策略。配置文件,密码文件,访问控制文件等都放在版本库的conf目录下。所以每次开始一个新项目都必须新建一个版本库,并重新配置各配置文件。还有很重要的一条,要求各组员重新配置客户端,包括服务器版本库路径,本地路径等信息。

1. 建立版本库目录,建立好的版本库目录与安装目录不在同级目录下(可建立多个,新建库后以下各项都需重新配置。注意区别安装目录与版本库目录,以下讲的都是版本库目录)

mkdir –p /opt/svndata/repos

2. 建立svn版本库(与上面目录对应)

svnadmin create /opt/svndata/repos

执行此命令后svn自动在repos目录下添加必须的配置文件.

注意:版本库不同于一般的文件夹, 直接在操作系统上新建文件无法被SVN识别, 必须使用import等命令将文件导入版本库.

此为svn内部指令,create用于新建版本库。请使用svn help查看详细说明。

3. 修改版本库配置文件

vi /opt/svndata/repos/conf/svnserve.conf

各参数功能在配置文件的注释中有说明, 此处配置如下:

[general]

anon-access = none # 使非授权用户无法访问

auth-access = write # 使授权用户有写权限

password-db = /opt/svndata/repos/conf/passwd # 指明密码文件路径

authz-db = /opt/svndata/repos/conf/authz # 访问控制文件

realm = /opt/svndata/repos # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。

其它采用默认配置. 各语句都必须顶格写, 左侧不能留空格, 否则会出错.

指令简介:这是svn配置文件的格式,请按照以上格式书写。

4. 配置用户

passwd文件

输入以下内容:

[users]

<用户1> = <密码1> admin = admin

<用户2> = <密码2> username2 = password2

可以添加多个,此为用户名密码对。

5. 配置权限

authz文件

指令简介:此配置文件采用“基于路径的授权”策略,中括号里指定路径,以下列出对各用户的授权。包括只读r,读写rw。没有列出的用户,则不允许访问。还可以对用户分组,具体请参考svn手册,以下是简单例子:

用户组格式:

[groups]

<用户组名> = <用户1>,<用户2>

其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。

版本库目录格式:

[<版本库>:/项目/目录]

@<用户组名> = <权限>

<用户名> = <权限>

其中,方框号内部分可以有多种写法:

/,表示根目录及以下。根目录是svnserve启动时指定的,我们指定

/opt/svndata。这样,/就是表示对全部版本库设置权限。

repos1:/,表示对版本库1设置权限

repos2:/abc, ,表示对版本库2中的abc项目设置权限

repos2:/abc/aaa, ,表示对版本库2中的abc项目的aaa目录设置权限

权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。

示例:

[groups]

MDS4000II_group = admin,zhangl

[/]

admin = rw

viewer = r

[/dev]

admin = rw

viewer = r

* =

[/baseline]

admin = rw

* =

[/prj]

admin = rw

* =

[/dev/01 MDS4000II]

@MDS4000II_group = rw

* =

注意:配置auth 、passwd和svnserve.conf一定要心细,否则客户端访问时会认证失败,如不能访问,百度和谷歌上有很多资料可供参考。

三、启动svn

1.建立启动svn 的用户

useradd svn

passwd svn

根据提示为用户svn 设置密码

允许用户svn 访问版本库

chown -R svn:svn /opt/svndata

2.启动svn

(1)用设定帐户启动

su - svn -c "svnserve -d --listen-port 3690 -r /opt/svndata" 其中:

su – svn 表示以用户svn 的身份启动svn

-d 表示以daemon 方式(后台运行)运行

--listen-port 3690 表示使用3690端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root 权限

-r /opt/svndata 指定根目录是/opt/svndata

启动时遇到的问题:

启动svnserve时出现cannot bind server socket:address already in use

解决方法:

方法一:找出svnserve id 杀死掉进程

netstat -ntlp

kill -9 id

方法二:重新指定一个端口号(默认端口3690)

svnserve -d --listen-port 3691 -r /opt/svndata/repos

(2)对于单个代码仓库:

启动命令: svnserve -d -r 版本库路径 --listen-host 192.168.1.178 示例:

Linux下SVN服务器安装配置及客户端安装说明

其中-d 表示在后台运行, -r 指定服务器的根目录,

如果服务器有多ip 的话--listen-host 来指定监听的ip 地址.

(3)对于多个代码仓库:

我们在启动时也可以用-r 选项来指定服务器根目录, 但访问时需要写上每个仓库相对于svn 根目录的相对路径.

比如, 我们有两个代码仓库/opt/svndata/repos1 和/opt/svndata/repos2, 我们用:svnserve -d -r /opt/svndata --listen-host 192.168.1.178 来启动, 那么在客户端访问时可以用svn://192.168.1.178/repos1 和

svn://192.168.1.178/repos2 来分别访问两个项目启动完成以后

3.检查是否启动成功:(查看是否存在svnserve 进程)

ps -ef|grep svnserve

如果显示如下,即为启动成功:

root 1170 1 0 22:02 ? 00:00:00 svnserve -d --listen-port 3691 -r /opt/svndata/repos

Linux下SVN服务器安装配置及客户端安装说明

Linux下SVN服务器安装配置及客户端安装说明

我是用root 帐户启动的:

四、SVN客户端安装

Linux下SVN服务器安装配置及客户端安装说明

1.

安装好后,这样访问服务器时就可以直接用svn:// 服务器ip 来访问了。

Linux下SVN服务器安装配置及客户端安装说明

在桌面上右击TortoiseSVN ----Repo-brower, svn 客户端中通过svn://192.168.1.178 来访问svn 服务器

Linux下SVN服务器安装配置及客户端安装说明

注意:如出现:Error: Can't connect to host '': 由于目标机器积极拒绝,无法连接的问题,请检查服务器svnserve是否启用,监听是否打开。


第二篇:Linux下SVN服务器的搭建与配置


Linux下SVN服务器的搭建与配置

下载最新的svn压缩包/downloads/subversion-1.4.5.tar.gz //解压SubVersion安装包 (root用户进行下面的操作) # tar xvzf subversion-1.4.5.tar.gz

//进入解压后的目录

# cd Subversion-1.4.5

//配置subversion安装

#./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-ssl --with-zlib --enable-maintainer-mode

# make

//安装

# make install

//创建库文件所在的目录 (svnroot用户进行下面的操作)

# mkdir /home/svnroot/repository

//进入subversion的bin目录

# cd /usr/local/subversion/bin

//创建仓库"test"

# ./svnadmin create /home/svnroot/repository/test

# cd /home/svnroot/repository/test

//看看是不是多了些文件,如果是则说明Subversion安装成功了

# ls –l

# cd /usr/local/subversion/bin

//这条语句将把路径/home/user/import下找到的文件导入到你创建的Subversion 仓库中去, //提交后的修订版为1。

# ./svn import /home/user/import file:///home/svnroot/repository/test –m "注释"

//不让其他人有该目录的权限

# chmod 700 /home/svnroot/repository

修改Apache配置文件

# cd /usr/local/apadche2/bin

//启动Apache

# ./apachect1 start

# vi /usr/local/apache2/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

SVNParentPath /home/svnroot/repository/ //svn父目录

AuthzSVNAccessFile /home/svnroot/repository/authz.conf //权限配置文件

AuthType Basic //连接类型设置

AuthName "Subversion.zoneyump" //连接框提示

AuthUserFile /home/svnroot/repository/authfile //用户配置文件

Require valid-user //采用何种认证

</Location>

//其中authfile是通过"htpasswd [–c] /home/svnroot/repository/authfile username password"来创建的

//"Require valid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它, //则只能第一个用户可以访问新建库

6. 权限管理

1)增加用户

# htpasswd [-c] /home/svnroot/repository/authfile wooin

//第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加

# htpasswd authfile 用户名(加入新的用户)

2)权限分配

# vi /home/svnroot/repository/authz.conf

[test:/] //这表示,仓库test的根目录下的访问权限

wooin = rw //test仓库wooin用户具有读和写权限

bao = r //test仓库bao用户具有读权限

[test2:/] //test2仓库根目录下的访问权限

wooin = r //wooin用户在test2仓库根目录下只有读权限

bao = //bao用户在 test2仓库根目录下无任何权限

[/] //这个表示在所有仓库的根目录下

* = r //这个表示对所有的用户都具有读权限

#[groups] //这个表示群组设置

#svn1-developers = wooin, bao //这个表示某群组里的成员

#svn2-developers = wooin

#[svn1:/]

#@svn1-developers = rw //如果在前面加上@符号,则表示这是个群组权限设置

将这个设置完成后。重启Apache,就可以通过

http://localhost/svn/test

这个URL来访问仓库了,当然,受权限的限制,必须是合法用户才能访问且具有相应的权

7. 一些备忘:

1. svn checkout http://localhost/svn/hello.world

2. svn commit 时的默认编辑器的环境变量$SVN_EDITOR=vi需要手动设定,用kate好像有问题

3. 如果linux的登录用户名密码都和svn的其中一个用户名密码相同时,在checkout的时候不会要求输 入用户名密码直接就可以checkout出来。比如:linux有个用户wooin,svn也有一个用户wooin,并且密码 都是一样的,当用wooin登录linux后,执行checkout,可以直接提取出源码文件,不用输入认证信息。

4. 在svn使用过程中牵扯到几种权限:文件系统的权限,linux系统权限,svn用户的权限,apache进程的权限。

文件系统的权限,linux系统权限:这里相同的意思,就是平时大家使用linux时文件夹和文件的访问权限。在 svn建立仓库,文件夹,配置文件的时候用svnroot用户,并将仓库权限设置为700,不允许其他用户直接通过 文件系统查看,只能由svnroot进行管理。

apache进程的权限:因为所有跟仓库传输的操作都是通过apache进程进行的,所以即使你给svn用户设置了 很大的权限,但是apache进程没有访问仓库或者相关文件的权限也没有用,apache进程的权限设置在 /usr/local/apache2/conf/httpd.conf 文件中配置,找到文件中的这两行:

User daemon # 将daemon改为svnroot,让apache进程以svnroot的身份运行 Group daemon

svn用户的权限:就是在repository/authz.conf文件中设置的权限信息,是svn用来管理仓库访问权限的。

5. svn服务器设置有两种方式:http 和 svnserve。这里介绍的是http方法

6. 在/etc/profile的结尾设置一些svn启动时要做的工作 # start apache server for svn /usr/sbin/apachectl start

export SVN_EDITOR=vi

7. APR libraries 安装 SVN 的时候最好指定 --with-apr= 和 --with-apr-util= 参数到 Apache 安装的根目录

(ServerRoot)下,而不是使用缺省的 SVN 安装包中自带的 apr 。否则如果你安装的 Apache

版本不同有可能导致 APR 库不匹配,出现类似:

Can't set position pointer in file '/svn/test/db/revs/1': Invalid argument 的错误。

Updated 2006-04-20 16:30 -- 比如说如果你安装的是apache 2.2.0版本,就需要在编译安装svn的时候指定

--with-apxs和--with-apr参数到你的apache2.2.0安装目录下:

./configure --divfix=${subversionInstallFolder} /

--with-apxs=${apacheInstallFolder}/bin/apxs /

--with-apr=${apacheInstallFolder} /

--with-apr-util=${apacheInstallFolder} /

--with-ssl /

--with-zlib /

--enable-maintainer-mode

更多相关推荐:
Linux中如何查看服务及监听端口

linux教程实例Linux中如何查看服务及监听端口问我该如何发现哪种服务正在某个特定端口上监听呢我如何发现哪一个程序正在一个特定端口上监听呢答在NIX系统中你可以使用下面的任何一个命令来得到在一个特定TCP端...

linux查看端口的方法

想查看TCP或者UDP端口使用情况使用netstatanp如果有些进程看不见如只显示可以尝试sudonetstatanp如果想看某个端口的信息使用lsof命令如sudolsofi631bash300netsta...

linux开启防火墙端口和查看,开启相关端口号

当Linux打开防火墙后你会发现从本机登录23端口是没有问题的但是如果从另一台pc登录该linux系统后你会发现提示这样的错误不能打开到主机的连接在端口23连接失败因为linux防火墙默认是关闭23端口的如果允...

linux查看端口的方法

想查看TCP或者UDP端口使用情况使用netstatanp如果有些进程看不见如只显示可以尝试sudonetstatanp如果想看某个端口的信息使用lsof命令如sudolsofi631bash300netsta...

Linux查看服务器端口被哪个程序占用

Linux查看服务器端口被哪个程序占用我们经常会遇到网站打不开参看服务器运行状态会发现apachemysql的端口被其他应用程序占用导致程序无法启动的情况那么如何查看linux端口号被占用的是哪一个程序呢可以通...

Linux下查看端口占用进程号,程序名的方法

Linux下查看端口占用进程号程序名的方法Linux下查看端口占用进程号程序名的方法方便我们查找什么进程导致系统变慢等需要linux下查看端口占用情况1查看哪个进程占用了819端口case9sghfofousr...

linux netstat 统计连接数查看外部 如何查80端口tcp链接数

linuxnetstat统计连接数查看外部如何查80端口tcp链接数时间20xx03261914来源未知作者admin点击2530次服务器上的一些统计数据1统计80端口连接数netstatnatgrepiquo...

Linux 常见网络服务端口

Linux常见服务端口可在etcservices中查看

查看linux中某个端口(port)是否被占用(netstat,lsof)

netstattunlp会显示所有端口和所有对应的程序用grep管道可以过滤出想要的关键字段列一下22端口占用的程序rootleiwantmpnetstattunlpgrep22tcp0000004295700...

linux打开和关闭端口

linux打开和关闭端口20xx0302145359我来说两句收藏我要投稿查看哪些端口被打开netstatanp关闭端口号iptablesAINPUTptcpdrop端口号jDROPiptablesAOUTPU...

linux基础知识汇总及常见端口

1常用端口号ftp2120ssh22telnet23smtp发送25pop3接收110http80oracle1521mysql3306windows远程控制3389win135139远程过程调用rpc代理31...

linux端口相关命令

关闭端口iptablesAINPUTptcpdport111jDROP打开端口iptablesAINPUTptcpdport111jACCEPT很多linux发行版默认iptables服务启动的时候都只保留的最...

linux查看服务端口号(15篇)