在本文中,您将会了解到关于如何使用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 HTTP server
- CentOS Linux搭建SVN服务器
- CentOS Linux搭建独立SVN Server全套流程(修改svn仓库地址、服务启动等)
- CentOS Linux系统搭建SVN server服务
如何使用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工作原理示意图:
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
执行:
CREATEDATABASEcodestrikerdb 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
原文链接: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服务器
安装步骤如下:
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仓库地址、服务启动等)
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服务
1、查看机器上是否安装了svn
rpm -qa |grep svn
2、如果没有安装 执行
yum -y install subversion
3、验证是否安装 成功
svnserve --version4、安装好之后 新建一个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 Server和centos搭建svn服务器的分享已经结束,谢谢您的关注,如果想了解更多关于CentOS Linux下配置svn HTTP server、CentOS Linux搭建SVN服务器、CentOS Linux搭建独立SVN Server全套流程(修改svn仓库地址、服务启动等)、CentOS Linux系统搭建SVN server服务的相关知识,请在本站进行查询。
本文标签: