GVKun编程网logo

如何使用CentOS Linux搭建SVN Server(centos搭建svn服务器)

5

在本文中,您将会了解到关于如何使用CentOSLinux搭建SVNServer的新资讯,同时我们还将为您解释centos搭建svn服务器的相关在本文中,我们将带你探索如何使用CentOSLinux搭建

在本文中,您将会了解到关于如何使用CentOS Linux搭建SVN Server的新资讯,同时我们还将为您解释centos搭建svn服务器的相关在本文中,我们将带你探索如何使用CentOS Linux搭建SVN Server的奥秘,分析centos搭建svn服务器的特点,并给出一些关于CentOS Linux下配置svn HTTP server、CentOS Linux搭建SVN服务器、CentOS Linux搭建独立SVN Server全套流程(修改svn仓库地址、服务启动等)、CentOS Linux系统搭建SVN server服务的实用技巧。

本文目录一览:

如何使用CentOS Linux搭建SVN Server(centos搭建svn服务器)

如何使用CentOS Linux搭建SVN Server(centos搭建svn服务器)



之前给开发的同事搭建一个公网的SVNServer,google一下,发现下面这篇最详细,就记录下来,重新排版一下

顺便根据自己的使用经验,补充了几个细节和总结。本文配置是基于CentOS5.x的,但一样适用于其他Linux发行版!

subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人

目前绝大多数开源软件都使用svn作为代码版本管理软件。Subversion支持linux和windows,但较多安装在linux下

svn服务器有两种运行方式:独立服务器和借助于apache。 svn://或http://
svn客户端tortoisesvn

SVN的基本工作原理:

在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序。有源代码库管理员统一管理这些源程序,每个用户在使用源代码库之前,首先要把源代码库里德项目文件下载到本地,然后开发人员可以在本地修改,左后用svn命令进行提交,游源代码库统一管理修改

版本控制解决了的问题:
*代码管理混乱
*解决代码冲突困难
*在代码整合期间引发bug
*无法对代码的拥有者进行权限控制
*项目不同版本的发布困难

SVN工作原理示意图:

wKiom1kuG-ShRnpQAADAfNkoi_E811.png-wh_50

subversion目录说明:
*dav目录:是提供apache与mod_dav_svn使用的目录,让他们存储内部数据
*db目录:就是所有版本控制的数据存放文件
*hooks目录:放置hook脚本文件的目录
*locks目录:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端
*format文件:是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号
*conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)

SVN Server详细配置手册

系统环境
CentOS 5.8 最小化安装(关闭iptables和selinux) + ssh + yum

一,安装必须的软件包

yum install subversionmysql-server httpd mod_dav_svn mod_perl sendmail wget gcc-c++ makeunzipperl* ntsysv vim-enhanced

说明:
subversion (SVN服务器)
MysqL-server (用于codestriker)
httpd mod_dav_svn mod_perl (用于支持WEB方式管理SVN服务器)
sendmail (用于配置用户提交代码后发邮件提醒)
wget gcc-c++ make unzip perl* (必备软件包)
ntsysv vim-enhanced (可选)

二,基本的SVN服务器配置

1,新建一个目录用于存储SVN所有文件
# mkdir /home/svn

2,新建一个版本仓库
# svnadmin create /home/svn/project

3,初始化版本仓库中的目录
# mkdir project project/server project/client project/test (建立临时目录)
# svn import project/ file:///home/svn/project -m “初始化SVN目录”
# rm -rf project (删除临时建立的目录)

4,添加用户
要添加SVN用户非常简单,只需在/home/svn/project/conf/passwd文件添加一个形如“username=password”的条目就可以了。为了测试,我添加了如下内容:

[users]
# harry = harryssecret
# sally = sallyssecret
pm = pm_pw
server_group = server_pw
client_group = client_pw
test_group = test_pw

5,修改用户访问策略
/home/svn/project/conf/authz记录用户的访问策略,以下是参考:

[groups]
project_p = pm
project_s = server1,server2,server3
project_c = client1,client2,client3
project_t = test1,test1,test1

[project:/]
@project_p = rw
* =

[project:/server]
@project_p = rw
@project_s = rw
* =

[project:/client]
@project_p = rw
@project_c = rw
* =

[project:/doc]
@project_p = rw
@project_s = r
@project_c = r
@project_t = r
* =

说明:以上信息表示,只有project_p用户组有根目录的读写权。r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该目录有读写权限。最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。这个很重要,一定要加上!

6,修改svnserve.conf文件,让用户和策略配置升效.
svnserve.conf内容如下:

[general]
anon-access = none
auth-access = write
password-db = /home/svn/project/conf/passwd
authz-db = /home/svn/project/conf/authz

7,启动服务器
# svnserve -d -r /home/svn
注意:如果修改了svn配置,需要重启svn服务,步骤如下:

# ps -aux|grep svnserve
# kill -9 ID号
# svnserve -d -r /home/svn

8,测试服务器

# svn co svn://192.168.60.10/project
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for 'root':
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: server_group
Password for 'server_group':
svn: Authorization Failed ( server_group没用根目录的访问权 )

# svn co svn://192.168.60.10/project
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for ‘root’:
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: pm
Password for ‘pm’:
A project/test
A project/server
A project/client
Checked out revision 1. ( 测试提取成功 )

# cd project/server
# vim main.c
# svn add main.c
# svn commit main.c -m “测试一下我的C程序,看什么看,不行啊??”
Adding main.c
Transmitting file data .
Committed revision 2. ( 测试提交成功 )

三,配置SVN服务器的HTTP支持

1,转换SVN服务器的密码
由于SVN服务器的密码是明文的,HTTP服务器不与支持

所以需要转换成HTTP支持的格式。我写了一个Perl脚本完成这个工作

脚本内容如下:
# cd /home/svn/project/conf/
# vim PtoWP.pl

#!/usr/bin/perl
# write by huabo,2009-11-20

use warnings;
use strict;

#open the svn passwd file
open (FILE,"passwd") or die ("Cannot open the passwd file!!!\n");

#clear the apache passwd file
open (OUT_FILE,">webpasswd") or die ("Cannot open the webpasswd file!!!\n");
close (OUT_FILE);

#begin
foreach (<FILE>) {
if($_ =~ m/^[^#].*=/) {
$_ =~ s/=//;
`htpasswd -b webpasswd $_`;
}
}

# chmod +x PtoWP.pl
# ./PtoWP.pl
Adding password for user pm
Adding password for user server_group
Adding password for user client_group
Adding password for user test_group
现在目录下会多一个webpasswd文件。

2,修改httpd.conf,添加关于SVN服务器的内容
编辑/etc/httpd/conf/httpd.conf,在最后添加如下信息:

<Location /project>
DAV svn
SVNPath /home/svn/project/
AuthType Basic
AuthName "svn for project"
AuthUserFile /home/svn/project/conf/webpasswd
AuthzSVNAccessFile /home/svn/project/conf/authz
Satisfy all
Require valid-user
</Location>

3,修改svn目录的属主为apache帐号:

chown -R apache.apache /home/svn/project/
注意:原文少了这一步,会出权限问题

4,重启Web服务器:
# /etc/init.d/httpd restart
Stopping httpd: [Failed]
Starting httpd: [ OK ]

5,用浏览器访问http://192.168.60.10/project/server/测试
测试结果如下图所示:


( 测试成功 )

四,配置邮件提醒支持

1,安装Perl模块Module::Build

# wget http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Module-Build-0.36_11.tar.gz
# tar xvf Module-Build-0.36_11.tar.gz
# cd Module-Build-0.36_11
# perl Build.PL
# ./Build
# ./Build test
# ./Build install
# cd ..

2,安装Perl模块Authen::SASL

# wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/Authen-SASL-2.15.tar.gz
# tar xvf Authen-SASL-2.15.tar.gz
# cd Authen-SASL-2.15
# perl Makefile.PL
# make test
# make install
# cd ..

3,安装Perl模块Net::SMTP_auth

# wget http://search.cpan.org/CPAN/authors/id/A/AP/APLEINER/Net-SMTP_auth-0.08.tar.gz
# tar xvf Net-SMTP_auth-0.08.tar.gz
# cd Net-SMTP_auth-0.08
# perl Makefile.PL
# make test
# make install
# cd ..

4,安装Perl模块SVN::Notify

# wget http://search.cpan.org/CPAN/authors/id/D/DW/DWHEELER/SVN-Notify-2.80.tar.gz
# tar xvf SVN-Notify-2.80.tar.gz
# cd SVN-Notify-2.80
# perl Build.PL
# ./Build
# ./Build test
# ./Build install
# cd ..

5,启动邮件服务器
# service sendmail restart
Shutting down sendmail: [Failed]
Starting sendmail: [ OK ]
Starting sm-client: [ OK ]

6,配置自动发邮件脚本
修改post-commit脚本,以支持邮件通知功能.
# cd /home/svn/project/hooks/
# vim post-commit
内容如下:

#!/bin/sh
REPOS="$1"
REV="$2"

/usr/bin/svnnotify �Crepos-path “$1” �Crevision “$2” �Cto caodaijun@pica.com �Cfrom caodaijun@feinno.com �Chandler “HTML::ColorDiff” �Cwith-diff �Csmtp localhost �Csmtp-user root �Csmtp-pass 5201314318 -c “UTF-8” -g zh_CN -o raw �Csvnlook /usr/bin/svnlook �Csubject-prefix ‘[SVN Update]’

(to参数代表接收邮件的地址,可以有多个,当你有多个老大的时候,这就很重要了,:)。from参数是虚拟的,代表你的发送地址,一般情况下,这个参数 不重要,但如果接收者的邮件服务器有反垃圾邮件的功能,需要判定源地址的话,这个参数是否合法就显得很重要了)
再给该脚本添加可执行权限
# chmod +x post-commit

7,再次提交时,就会给指定邮件地址发信了。
如下图所示:


五,其它常用配置

1,强制写log脚本
配置pre-commit文件,要求用户每次更新文件都必须写log.
# cd /home/svn/project/hooks/
# vim pre-commit
文件内容如下:

#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 5(要求的log长度,依实际需要修改) ];
then
echo -e "\nEmpty log message not allowed. Commit aborted!" 1>&2
exit 1
fi

配置完成后,给本件加上可执行权限。再提交代码时,就必须按要求写注释了,:)

2,可修改log脚本
配置pre-revprop-change文件,此文件在show log中修改log时会运行,得到修改的权限,否则会报错:DAV request Failed; it’s possible that the repository’s pre-revprop-change hook either Failed or is non-existent. At least one property change Failed; repository is unchanged
# cd /home/svn/project/hooks/
# vim pre-revprop-change
文件内容如下:

REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
if ["$PROPNAME" = "svn:log"];then exit 0;fi
exit 1

配置完后加可执行权限升效。

六,备份管理

svn服务器的定期备份是很重要的,最简单的方式是定时备份仓库目录

1,新建备份目录
# mkdir /opt/project_backup

2,编写备份脚本
# cd /home/svn/
# vim project_backup.sh

内容如下:

#!/bin/bash
#write by huabo,2009-11-20

cd /home/svn
Now=`/bin/date +%Y%m%d`
/bin/tar czvf “project_backup_$Now.tar.gz” project/ && rm -rf /opt/project_backup/* && /bin/mv project_backup_*.tar.gz /opt/project_backup/
if [ $? == 0 ]
then
result=”OK!!”
else
result=”False!!”
fi

#send mail to administrator
/bin/mail caodaijun@pica.com -s “project_backup_$Now” <<MESSAGE
Result: `/bin/echo $result`
MESSAGE

给该脚本添加可执行权限。

3,设定每天定时执行该脚本.
# crontab -e
输入如下内容:
0 23 * * * /home/svn/project_backup.sh
表示每天晚上23点运行此脚本。

经过以上三步操作,就可以自动备份SVN资料了,且不论备份是否成功,都会给用户发送邮件信息。

七,用svnstat分析SVN数据.

1,安装JAVA
svnstat是JAVA应用程序,需要先安装JAVA环境。
下载jre,URL: http://javadl.sun.com/webapps/download/AutoDL?BundleId=39484
安装:
# chmod +x jre-6u20-linux-i586-rpm.bin
# ./jre-6u20-linux-i586-rpm.bin

2,下载svnstat
# wget http://downloads.sourceforge.net/project/svnstat/svnstat/Release-1.0/SvnStat-1.0.zip?use_mirror=jaist
# unzip SvnStat-1.0.zip

3,更新代码
# pwd
/root

# svn co svn://192.168.60.10/project
A project/test
A project/server
A project/server/main.c
A project/client
Checked out revision 5.

4,生成svnstat数据
# svn log project -v �Cxml �Cnon-interactive > project.log
# cd SvnStat-1.0
# java -classpath SvnStat-all.jar de.agentlab.svnstat.SvnStat -jar SvnStat-all.jar -r /root/project.log -d /var/www/html/

5,用浏览器登录即可看到许多统计出来的图表。大致如下图所示:



八,用statsvn分析SVN数据

1,下载statsvn
# wget http://downloads.sourceforge.net/project/statsvn/statsvn/0.7.0/statsvn-0.7.0.zip?use_mirror=jaist
# unzip statsvn-0.7.0.zip
# cd statsvn-0.7.0

2,生成statsvn数据
# mkdir /var/www/html/statsvn
# java -jar statsvn.jar -verbose -output-dir /var/www/html/statsvn/ /root/project.log /root/project

3,用浏览器测测试效果如下图:


九,配置codestriker

1.安装codestriker依赖的perl包.
# perl -MCPAN -e ‘install “Template”‘

2.下载codestriker
# wget http://downloads.sourceforge.net/project/codestriker/codestriker/1.9.10/codestriker-1.9.10.tar.gz?use_mirror=jaist&ts=1279246587
# mkdir /var/www/codestriker
# cd /var/www/codestriker
# tar xvf /path/codestriker-1.9.10.tar.gz
# chown -R apache.apache codestriker-1.9.10

3.配置数据库
# service MysqLd restart
# MysqL -uroot MysqL
执行:
CREATE
DATABASEcodestrikerdb CHaraCTER SET utf8;
GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE,DROP,REFERENCES ON codestrikerdb.* TO codestriker@localhost IDENTIFIED BY ‘cspasswd’;
FLUSH PRIVILEGES;
quit

4.配置codestriker
# cd codestriker-1.9.10/
# vim codestriker.conf
注意以下几点(详细可查看codestriker的安装文档)
a.数据库的用户名密码要配对
b.svn的数据仓库要配对,我的如下:
@valid_repositories =
(
‘svn:file:///home/svn/project’,
)

5.执行codestriker的安装脚本
# cd bin/
# ./install.pl

6.配置http支持
# vim /etc/httpd/conf/httpd.conf
在最后面加上如下内容:

Alias /codestriker/ /var/www/codestriker/codestriker-1.9.10/cgi-bin/
Alias /codestrikerhtml/ /var/www/codestriker/codestriker-1.9.10/html/

<Directory “/var/www/codestriker/codestriker-1.9.10/cgi-bin/”>
SetHandler perl-script
PerlHandler ModPerl::Registry
Options +ExecCGI
</Directory>

<Directory “/var/www/codestriker/codestriker-1.9.10/html/”>
AllowOverride None
Allow from all
</Directory>

7.重启Web服务
# service httpd restart

8.在浏览器中输入http://192.168.60.10/codestriker/codestriker.pl即可访问,如下图:

CentOS Linux下配置svn HTTP server

CentOS Linux下配置svn HTTP server

原文链接:http://www.cnblogs.com/ayanmw/archive/2011/12/19/2294054.html


基本的安装包有: subversion /httpd/ svn的httpd的mod_dav_svn mod_authz_svn 两个模块.(yum install mod_dav_svn subversion httpd )

svn的服务形式应该是有两种: 1 通过svnserve建立的 通过svn://ip:port 端口默认是3690,这种形式; 2 通过apache httpd或者其他的web服务器的扩展模块,进行svn管理

对于svnserve,通过svnserve -d -r /var/www/svn 这种形式建立 daemon的后台进程,但是结束要 kill `pgrep svnserve` 这种形式 来kill掉,不知道有没有直接的比如 stop的方式.

通过http服务器来管理svn也很不错,可以很方便的浏览.其配置过程如下(首先几个软件都安装,这就不用说了.):

1.在/etc/httpd/module下面 有两个 mod 关于 svn的.

2.在/etc/httpd/config.d/下有一个subversion.conf(没有就建立一个),其内容是:

LoadModule dav_module         modules/mod_dav.so
LoadModule dav_svn_module     modules/mod_dav_svn.so
<Location /svn>
         DAV svn
         SVNPath /var/www/svn/
         AuthType Basic
         AuthName "Subversion repos"
         AuthUserFile /var/www/svn/repos1/conf/passwd
         Require valid-user
 </Location>

# To create a new repository "http://localhost/repos/stuff" using
# this configuration,run as root:
#
# # cd /var/www/svn
# # svnadmin create stuff
# # chown -R apache.apache stuff
# # chcon -R -t httpd_sys_content_t stuff

#<Location /repos>
# DAV svn
# SVNParentPath /var/www/svn
#
# # Limit write permission to list of valid users.
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# # Require SSL connection for password protection.
# # SSLRequireSSL
#
# AuthType Basic
# AuthName "Authorization Realm"
# AuthUserFile /path/to/passwdfile
# Require valid-user
# </LimitExcept>
#</Location>

其中/var/www/svn是准备放仓库的目录,这个目录可以放置多个代码仓库,AuthUserFile就是用户和密码的文件,也可以移动到其他地方单独管理.

/var/www/svn 下面可以通过 svnadmin createa /var/www/svn/repos1 来建立一个空的仓库.还可以建立多个仓库;这个目录貌似最好 给apche用户所有权限:chown -R apache.apache /var/www/svn ;在repos1/conf目录下可以进行一些账号密码 配置,就不多说了.建立的其他仓库 可以拷贝这些conf文件

其中AuthUserFile 是如何制作的呢?

创建“ AuthUserFile ”设置所需的用户密码以及存储的文件

使用 apache bin/htpasswd 命令来创建。命令的格式为 htpasswd [-cmdpsD] passwordfile username 若第一次创建用户,我们必须使用参数“-c”来同时创建用户密码文件 htpasswd -c passwd robert 上述命令创建的一个文件“ passwd”,同时在文件里添加了一个 user named “robert”,执行该命令时会要求输入密码。 注意:创建第二或之后的用户时,一定不能用参数“ c ”,否则之前的用户就会被删除。 如果想要删除某个用户,我们可以使用下列命令: htpasswd -D passwd robert 这样, robert就被从 passwd中删除了。

下面就是一个示例,创建两个用户 a b,密码 aaa,bbb,再删除。查看密码文件内容:

[root@src-server websvn]# htpasswd accesspwd a
htpasswd: cannot modify file accesspwd; use '-c' to create it [root@src-server websvn]# htpasswd -c accesspwd a
New password: Re-type new password: Adding password for user a [root@src-server websvn]# ll accesspwd
-rw-r--r-- 1 root root 16 Jun 23 02:03 accesspwd [root@src-server websvn]# htpasswd accesspwd b
New password: Re-type new password: Adding password for user b [root@src-server websvn]# cat accesspwd
a:wpEqdKjINQsvM b:JEpHUbhZZP3fc [root@src-server websvn]# htpasswd -D accesspwd b
Deleting password for user b [root@src-server websvn]# cat accesspwd
a:wpEqdKjINQsvM [root@src-server websvn]#

3. sudo service httpd restart 重启httpd apache 服务. 貌似很简单呢..回来再整理下svn的命令 补充.

然后通过 http://IP/svn/repos1可以访问这个仓库,可以建立多个仓库同时访问.不过直接访问 IP/svn 无法列出仓库的列表,apache显示 "forbidden \n You don't have permission to access /svn on this server"

对于一些svn的web管理程序也有,比如ViewVC 还有一些其他的管理svn的web程序,最好可以在web端创建仓库、权限管理就好了。目前寻找这样的svn web管理程序中。

CentOS 安装websvn直接yum即可,不需要配置MysqL,只需要PHP的支持即可。

查看websvn的包文件

[root@src-server ~]# yum install websvn
Loaded plugins: fastestmirror,presto,refresh-packagekit Loading mirror speeds from cached hostfile * base: mirrors.btte.net * epel: ftp.kddilabs.jp * extras: ftp.stu.edu.tw * kernel-xen: us1.mirror.crc.id.au * updates: mirrors.tuna.tsinghua.edu.cn Setting up Install Process Package websvn-2.3.3-2.el6.noarch already installed and latest version nothing to do [root@src-server ~]#rpm -ql websvn
/etc/httpd/conf.d/websvn.conf /etc/websvn/config.PHP /usr/share/doc/websvn-2.3.3
/usr/share/doc/websvn-2.3.3/changes.txt /usr/share/doc/websvn-2.3.3/doc /usr/share/doc/websvn-2.3.3/doc/install.html /usr/share/doc/websvn-2.3.3/doc/style.css /usr/share/doc/websvn-2.3.3/doc/templates.html /usr/share/doc/websvn-2.3.3/license.txt /usr/share/websvn /usr/share/websvn/blame.PHP /usr/share/websvn/cache /usr/share/websvn/comp.PHP /usr/share/websvn/diff.PHP /usr/share/websvn/dl.PHP /usr/share/websvn/filedetails.PHP /usr/share/websvn/include /usr/share/websvn/include/accessfile.PHP /usr/share/websvn/include/auth.PHP /usr/share/websvn/include/bugtraq.PHP /usr/share/websvn/include/command.PHP /usr/share/websvn/include/config.PHP /usr/share/websvn/include/configclass.PHP /usr/share/websvn/include/diff_inc.PHP /usr/share/websvn/include/diff_util.PHP /usr/share/websvn/include/header /usr/share/websvn/include/setup.PHP /usr/share/websvn/include/svnlook.PHP /usr/share/websvn/include/template.PHP /usr/share/websvn/include/utils.PHP /usr/share/websvn/include/version.PHP /usr/share/websvn/index.PHP /usr/share/websvn/languages /usr/share/websvn/languages/chinese-simplified.PHP /usr/share/websvn/languages/languages.PHP /usr/share/websvn/languages/省略省略省略 /usr/share/websvn/listing.PHP /usr/share/websvn/log.PHP /usr/share/websvn/revision.PHP /usr/share/websvn/RSS.PHP /usr/share/websvn/temp /usr/share/websvn/templates /usr/share/websvn/templates/BlueGrey /usr/share/websvn/templates/BlueGrey/省略省略省略 /usr/share/websvn/templates/Elegant /usr/share/websvn/templates/Elegant/省略省略省略 /usr/share/websvn/templates/calm /usr/share/websvn/templates/calm/省略省略省略 /usr/share/websvn/wsvn.PHP /var/cache/websvn

下面就是vim /etc/websvn/config.PHP,其实这个文件就是/usr/share/websvn/include/config.PHP,只是做了一个链接到etc目录,这种方法对于这种需要配置的web程序来说,还真是方便。

[root@src-server ~]# ll /etc/websvn/config.PHP
-rw-r--r-- 1 root root 21210 Jun 24 18:48 /etc/websvn/config.PHP [root@src-server ~]# ll /usr/share/websvn/include/config.PHP
lrwxrwxrwx 1 root root 33 Jun 23 01:01 /usr/share/websvn/include/config.PHP -> ../../../../etc/websvn/config.PHP [root@src-server ~]#

这里需要修改的配置选项有:

$config->parentPath('/srv/svn/');

$config->useMultiViews();

############ $config->useAuthenticationFile('/srv/svn/passwd');#这里是因为我 不知道如何在websvn上登录我的账号

$config->setBlockRobots();#防止搜索程序收录

$config->expandTabsBy(4);#默认的8 似乎并不适合我的习惯

$config->useEnscript();##语法高亮建议安装GNU Enscript高亮显示程序包,官方下载:http://www.iki.fi/~mtr/genscript/

# 关于编码 我不知道如何设置,SetInputEncoding 对于我的websvn-2.3.3不起作用,反而websvn出现500错误。

修改/etc/httpd/conf.d/websvn.conf 添加基本权限认证

Alias /websvn /usr/share/websvn/

<Directory /usr/share/websvn/>
   Options MultiViews Indexes
   DirectoryIndex wsvn.PHP
   order allow,deny
   allow from all
        AuthType Basic
        AuthName "Authorization Realm"
        AuthUserFile /srv/svn/passwd
        Require valid-user

</Directory>

websvn就可以在线浏览了。

第三节:在线修改htpasswd密码

前面是由apache的htpasswd来通过 base 认证来进行账号管理的。通过这个小程序可以在线添加删除 校验账号密码。还有点小遗憾是 没有对 添加 删除 进行权限管理。校验后 才可以进行这个选项。

http://www.cnblogs.com/mutuan/archive/2012/07/27/2611537.html

参考:http://www.scmbbs.com/cn/svntp/2007/11/svntp1.php

转载请注明出处:http://www.cnblogs.com/ayanmw 我会很高兴的!

------------------------------------------------------------------------------------------------

一定要专业!本博客定位于,C语言,C++语言,Java语言,Android开发和少量的Web开发,之前是做Web开发的,其实就是ASP维护,发现EasyASP这个好框架,对前端后端数据库 都很感觉亲切啊。.linux,总之后台开发多一点。以后也愿意学习 cocos2d-x 游戏客户端的开发。

CentOS Linux搭建SVN服务器

CentOS Linux搭建SVN服务器

安装步骤如下:

1、在线安装

yum install subversion

2、输入rpm -ql subversion查看安装位置,如下图:

可以看到 svn在bin目录下生成了几个二进制文件。

再输入/usr/bin/svnversion --version 就可以查看svn的版本,这样就说明svn安装成功,如下图:

3、创建svn版本库目录 

mkdir -p /var/svn/svnrepos

4、创建版本库

svnadmin create /var/svn/svnrepos

执行了这个命令之后会在/var/svn/svnrepos目录下生成如下这些文件

5、进入conf目录(该svn版本库配置文件)

修改svnserve.conf

[general]
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz

修改passwd文件

  添加用户名和密码

修改authz文件

[gourps]

添加组成员

格式 development=d1,d2,d3

[/] 所有文件权限

@development=rw(r读w写) 

说明:

anon-access = read #匿名用户可读

auth-access = write #授权用户可写

password-db = passwd #使用哪个文件作为账号文件

authz-db = authz #使用哪个文件作为权限文件

realm = /var/svn/svnrepos # 认证空间名,版本库所在目录

9、启动svn版本库

svnserve -d -r /var/svn/svnrepos

10、 测试连接:

使用TortoiseSVN进行测试:

1. SVN服务启动后,需要使用客户端测试连接:

    客户端连接地址:svn://192.168.15.231;然后,输入用户名密码;

2. 新建一个文件夹,即本地的库文件夹,右键checkout,将会得到一个隐藏文件夹.svn;

3. 在此文件夹中放入项目内容,然后右键点击commit,就可以上传本地项目了。

CentOS Linux搭建独立SVN Server全套流程(修改svn仓库地址、服务启动等)

CentOS Linux搭建独立SVN Server全套流程(修改svn仓库地址、服务启动等)

 

zhou说:

安装完svn后,创建一个svn仓库,svnadmin create repository。
此时访问地址为svn://ip 即可。如果更换仓库需要重启svn服务svnserve -d -r /你的仓库地址。
svn代码库地址就更新啦。svn迁移:点击这里.

注意:初始导入如果遇到无法提交报错(Authorization failed),
做如下修改:svnserve.conf中# password-db = passwd  改为 password-db = passwd 

 

正式开始……………………………………………………………………………………

环境为centos6.3 

1.首先 看看机器上安装了svn了没有 

rpm -qa |grep svn

2.如果没有安装 执行

yum -y install subversion 

3.安装好了之后 新建一个svn目录

mkdir /home/svn

4.新建一个版本仓库

svnadmin create /home/svn/project

红色部分是版本仓库名 在配置文件中会使用的

5.将你需要放在svn上的工程 放进project目录中

6.初始化一下你的版本仓库

svn import 需要放到svn上的文件夹/ file:///home/svn/project -m “版本说明” --username xx --password xx

这里需要注意的是  如果后边不加用户名和密码 可能导致 客户端在使用的时候 update时 不需要输入用户名和密码就可以update

7.添加用户

要添加SVN用户非常简单,只需在/home/svn/project/conf/passwd文件添加一个形如“username=password”的条目就可以了。为了测试,我添加了如下内容:

 

[users]

# harry = harryssecret

# sally = sallyssecret

pm = pm_pw

8.修改用户访问策略

/home/svn/project/conf/authz记录用户的访问策略,以下是参考:

 

[groups]

project_p = pm

#[project:/] 如果你的仓库下边就一个版本的话 就不需要使用xxx 直接一个斜杠就完事

#[project:/xxx] 如果你的仓库下边有多个版本的话xxx就是那个文件夹的名字

#上边这2个根据自己情况选一个

@project_p = rw

* =

说明:以上信息表示,只有project_p用户组有根目录的读写权。r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该目录有读写权限。最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。这个很重要,一定要加上!

9.修改svnserve.conf文件,让用户和策略配置升效.

svnserve.conf内容如下:

 

[general]

anon-access = none

auth-access = write

password-db = /home/svn/project/conf/passwd

authz-db = /home/svn/project/conf/authz

10.启动服务器

# svnserve -d -r /home/svn

注意:如果修改了svn配置,需要重启svn服务,步骤如下:

 

# ps -aux|grep svnserve

# kill -9 ID号

# svnserve -d -r /home/svn

11.测试服务器

 

# svn co svn://192.168.x.x/project

12.到此为止 独立svn服务器就建立好了  

需要注意的是  如果客户端想要使用的话

url地址一定是这个样子的   svn://192.168.x.x/project看好了  不是htttps的头

如果想要使用http的头的话  需要配置SVN服务器的HTTP支持

服务器重启后,需要手动启动svn服务器:

执行:svnserve -d -r /home/svn

 

或修改:/etc/rc.d/rc.local

在末尾加入:svnserve -d -r /home/svn

即可启动服务器时,自动启动svn

 

 

同一个服务端口,多版本库管理(推荐)

首先你得给所有版本库建立一个根目录,比如/svn

然后再svnadmin create /svn/test1 ; svnadmin create /svn/test2 ......这样建立多个版本库。

然后每个版本库下面的/conf/的配置方法几乎一样,除了:

authz里的目录,即你在文中提到的问题需要加上 [test1:/] , [test2:/]来设置不同的版本库根目录的访问权限。

开启多个版本库的svn server: svnserve -d -r /svn --注意,输入根目录即可

然后这些版本库的访问方式就是:

svn://your-id-address/test1, svn://your-ip-address/test2 了。(当然我假设你使用了默认的3690端口)

 

链接:https://www.zhihu.com/question/36161509/answer/66276540

著作权归作者所有,转载请联系作者获得授权。

 

启动SVN服务: 

svnserve -d -r /home/svn

/home/svn 为版本库的根目录;

关闭SVN服务: 

使用以下命令查找进程 

ps aux | grep svn

# ps aux | grep svn root 64434 0.0 0.0 181584 1120 ? Ss 02:01 0:00 svnserve -d -r /home/svn root 64481 0.0 0.0 103256 848 pts/1 S+ 02:03 0:00 grep svn

使用Kill命令杀死进程 

kill -s 9 64434

64434为进程ID

CentOS Linux系统搭建SVN server服务

CentOS Linux系统搭建SVN server服务

1、查看机器上是否安装了svn

rpm -qa |grep svn

2、如果没有安装 执行

yum -y install subversion

3、验证是否安装 成功

svnserve --version 
4、安装好之后 新建一个svn目录
mkdir /home/svn

5、新建一个版本仓库

svnadmin create /home/svn/repos

6、修改版本库配置文件

vi /home/svn/repos/conf/svnserve.conf
各参数功能在配置文件的注释中有说明,此处配置如下:


[general]
anon-access = none # 使非授权用户无法访问
auth-access = write # 使授权用户有写权限
password-db = /home/svn/repos/conf/passwd # 指明密码文件路径
authz-db = /home/svn/repos/conf/authz # 访问控制文件
realm = /home/svn/repos # 认证命名空间,subversion会在认证提示里显示,并且

7、新增用户(passwd文件)

cd /home/svn/repos/conf
vi passwd

添加用户,格式为 用户名 = 密码


8、配置用户权限 (authz文件)

[groups]
<用户组名> = <用户1>,<用户2>
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。

9、启动或者重启

svnserve -d -r /home/svn/repos

10、测试

今天的关于如何使用CentOS Linux搭建SVN Servercentos搭建svn服务器的分享已经结束,谢谢您的关注,如果想了解更多关于CentOS Linux下配置svn HTTP server、CentOS Linux搭建SVN服务器、CentOS Linux搭建独立SVN Server全套流程(修改svn仓库地址、服务启动等)、CentOS Linux系统搭建SVN server服务的相关知识,请在本站进行查询。

本文标签: