一、安装步骤
1. 检查系统环境
-bash-3.00# uname -a
SunOS dbserver 5.10 Generic_141444-09 sun4v sparc SUNW,SPARC-Enterprise-T5120
2. 下载所有需要的软件
到http://www.sunfreeware.com/下载
subversion-1.4.3-sol10-sparc-local.gz
gcc-3.4.6-sol10-sparc-local.gz
openssl-1.0.0a-sol10-sparc-local.gz
expat-2.0.1-sol10-sparc-local.gz
zlib-1.2.5-sol10-sparc-local.gz
libiconv-1.13.1-sol10-sparc-local.gz
openldap-2.4.22-sol10-sparc-local.gz
db-4.2.52.NC-sol10-sparc-local.gz
libtool-2.2.6b-sol10-sparc-local.gz
sasl-2.1.21-sol10-sparc-local.gz
#apache-2.2.15-sol10-sparc-local.gz
libintl-3.4.0-sol10-sparc-local.gz
swig-1.3.36-sol10-sparc-local.gz
libxml2-2.7.7-sol10-sparc-local.gz
zebra-0.95-sol10-sparc-local.gz
neon-0.29.3-sol10-sparc-local.gz
3. 安装
安装前检查包是否已经安装:
-bash-3.00# pkginfo|grep subversion
-bash-3.00# gunzip subversion-1.4.3-sol10-sparc-local.gz
-bash-3.00# pkgadd -d subversion-1.4.3-sol10-sparc-local
继续安装其他所有的包(apache,我没有安装,因为我不需要从web访问)
4. 环境变量设置
login as root,vi /etc/profile
#for all user
alias ll='ls -l'
alias np='netstat -an|grep'
alias pp='ps -ef|grep'
export LANG=C #这个变量要根据你的系统环境设置
PATH=$PATH:/usr/local/bin
export PATH
5. check是否成功
5.1 ldd /usr/local/bin/svn
当出现一堆信息时,就安装成功了;
5.2 svn --version
svn, version 1.4.3 (r23084)
compiled Feb 13 2007, 01:05:57
Copyright (C) 2000-2006 CollabNet.
在此步验证是如果出现”找不到libneon.so.25“时,由于版本不一致,请执行以下操作
cd /usr/local/lib
ln -s libneon.so.27.2.5 libneon.so.25
二、svn配置
创建inms仓库
-bash-3.00# svnadmin create /opt/svn/svg
这里说明下,创建仓库,以及添加svn的用户,是不需要添加操作系统用户的,即svn用户没必要与OS的用户名完全相同。我以前就走到这个误区了。
以下是我修改的svn配置
-bash-3.00# pwd
/opt/svn/svg/conf
-bash-3.00# ll
总数 8
-rw-r--r-- 1 root root 667 10月 16日 03:23 authz
-rw-r--r-- 1 root root 314 10月 16日 03:11 passwd
-rw-r--r-- 1 root root 1454 10月 16日 03:11 svnserve.conf
-bash-3.00# more conf/
[general]
anon-access = read #非授权用户有read权限
auth-access = write #授权用户有read,write权限
password-db = passwd #用户名与密码是passwd文件
authz-db = authz #权限控制是authz文件
realm = This is asb-svg-repository #鉴权提示信息
-bash-3.00# more passwd
[users]
liuyou = 11111111
yinyan = 11111111
test = 11111111
-bash-3.00# more authz
[groups]
inms=liuyou,yinyan
test=test
[svg:/]
liuyou=rw
*=r
[svg:/inms]
@inms=rw
*=r
[svg:/test]
@test=rw
*=r
说明:
authz文件比较难搞,搞不好,你的svn客户端checkout时就会出现“验证失败”的错误信息(svn: Authorization failed);
我参考网上的说明,实验均不成功,以下是我的特别说明:
[groups]: 与OS的用户组没有任何关系,只是svn自己的组;
inms=liuyou,yinyan:inms组包含了2个用户,用“,“分割;用户也不是OS的用户,是svn自己的用户;
test=test
[svg:/]: 仓库为svn,授权路劲为svn的路径,/就表示/opt/svn/svg,之前我不知道,尽然写成[svg:/opt/svn/svg],导致“svn: Authorization failed”,晕死!!!;
liuyou=rw: liuyou用户有整个svg仓库的读写权
*=r:其他用户只有读的权限,特别说明:有此行与没有效果一样,但是很多网上的文章说"*="表示其他用户不能读,也不能写,实际测试验证连liuyou用户也不能读。
[svg:/test]:表示对svg仓库下的test目录单独授权;即对/opt/svn/svg/test单独授权;实际测试事,用test用户可以把整个svg checkout下来,对/opt/svn/svg下的文件有read权,没有write权,对/opt/svn/svg/test有read,write权,验证正确;
@test=rw
*=r
三、启动与停止
svn是安装到/usr/local/bin 下;
启动:
svnserve -d -r /opt/svn --listen-port 16310
注:-r /opt/svn部分为SVN根目录
-d,后台运行
停止:
直接kill;
四、solaris下的svncheckout
svn checkout svn://127.0.0.1:16310/svg
cd svg
touch readme.txt
svn add readme.txt
svn commit readme.txt -m "no msg" --force-log
五、参考文章:
1. http://blog.hi.mop.com/blog/16977780/13613563.html
该文章用到了以下命令,反正我没有用那个,都没有修改OS的东西
#groupadd svn
#useradd -c "svn owner" -d /export/home/svn -g svn -m svnadmin
# htpasswd -c -m /dev/svn/passwd testuser&& //创建用MD5方式加密的密码文件passwd,-c参数为create的意思,-m参数为以MD5加密方式
2. http://num7.iteye.com/blog/210944
该文章说明的比较详细,但是对authz说明的不到位,所以我在此特别说明了;
3. http://hi.baidu.com/yafeiie/blog/item/0b2e5ef0234250c67931aab8.html
六、参考原文
1. http://hi.baidu.com/yafeiie/blog/item/0b2e5ef0234250c67931aab8.html
一、安装apache2#
1、PATH=$PATH:/usr/ccs/bin:/usr/openwin/bin:/usr/local/bin:/usr/sfw/bin:/opt/csw/bin;export PATH 修改文件/etc/profile,把上面的输出行追加到文件,保存后运行 # source /etc/profile 使环境变量的修改生效。
2、使用 # wget http://apache.justdn.org/httpd/httpd-2.2.3.tar.gz //下载apache安装包
3、使用 # chmod 755 httpd-2.2.3.tar.gz //添加可执行权限 任何使用者都有读取和执行权利
4、使用 # gunzip httpd-2.2.3.tar.gz # tar xvf httpd-2.2.3.tar //解压缩安装包
5、使用 # cd httpd-2.2.3 //进入安装目录
6、# ./configure --enable-module=so --enable-dav --enable-dav-fs --enable-so --prefix=/usr/local/apache2 //--enable-module=so配置Apache支持Dynamic Shared Objects (DSO)模式,--enable-dav即添加mod_dav.so模块,--enable-dav-fs即添加mod_dav_fs.so模块,-- prefix=/usr/local/apache2是所需要安装到的目录位置。
7、# make //进行编译
8、# make install //编译后进行安装
9、安装完毕,进行测试:
# gedit /usr/local/apache2/conf/httpd.conf //修改apache配置文件将ServerName 修改为ServerName :80
# cd /usr/local/apache2/bin //进入apache控制脚本目录
# ./apachectl start //启动apache
用IE打开http://10.20.0.226, 可以看到It works!说明apache已经可以正常工作了。
上面步骤安装成功
二、安装svn
10、使用# wget http://www.iusesvn.com/bbs/download/subversion-1.4.0.tar.gz //下载subversion安装包
11、# chmod a+x subversion-1.4.0.tar.gz //添加可执行权限
12、# tar zxvf subversion-1.4.0.tar.gz //解压缩安装包
13、# cd subversion-1.4.0 //进行安装目录
14、# ./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache2/bin/apxs //--with-apxs指定apxs的安装的目录,可以在安装过程中自动生成两个必要的模块文件 mod_dav_svn.so和 mod_authz_svn.so以及能够支持它们可以正常地工作。
15、make
16、make install
三、配置SVN服务器
17、# mkdir /svndata //创建SVN根目录svndata#
# groupadd svn
# useradd -c "svn owner" -d /svndata -g svn svnadmin
# chown -R svnadmin /svndata
# chmod g+w /svndata
18、# cd /usr/local/subversion/bin //转到subverion的bin目录下
# ./svnadmin create --fs-type fsfs /svndata/boco //在SVN根目录下创建一个名叫boco的仓库,--fs-type为指定仓库的文件格式为fsfs
19、# cd /usr/local/apache2/bin //转到/usr/local/apache2/bin目录下
# ./htpasswd -c -m /svndata/passwd wyf //在/svndata下创建用MD5方式加密的密码文件passwd,-c参数为create的意思,-m参数为以MD5加密方式
New password: xxxxxx
Re-type new password: xxxxxx
Adding password for user fzb //添加成功
20、生成一个authz文件,并拷贝到/svndata目录下,文件内容如下:
# cat authz
[groups]
admin = wy
unic = wangyafei,liqiang,123
[/]
@admin = rw
* = r
[boco:/]
@unic = rw
21、修改apache配置文件。
# vi /usr/local/apache2/conf/httpd.conf
修改apache用户为前面创建的solaris系统用户:
<IfModule !mpm_netware_module>
User svnadmin
Group svn
</IfModule>
加载下面两个模块:
# LoadModule foo_module modules/mod_foo.so 在这下面检查这两行,一般会自动加入,如果没有则要手工加入
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
在末尾加上以下参数
<Location /svn>
DAV svn
# SVNListParentPath on
SVNParentPath /svndata
AuthzSVNAccessFile /svndata/authz
Require valid-user
AuthType Basic
AuthName "Boco's SVN"
AuthUserFile /svndata/passwd
SVNPathAuthz off
</Location>
22. 目录权限更改
cd /svndata/boco
chown -R svnadmin *
23、# cd /usr/local/apache2/bin
# ./apachectl restart //重启apache server
如果重启不成功,需要到在系统中搜索mod_dav_svn.so和mod_authz_svn.so两个文件(一般在svn的源代码目录中),
并拷贝到apache安装目录的modules目录下,然后重启。
cp /wyf/subversion-1.4.0/subversion/mod_dav_svn/.libs/mod_dav_svn.so /usr/local/apache2/modules/
cp /wyf/subversion-1.4.0/subversion/mod_authz_svn/.libs/mod_authz_svn.so /usr/local/apache2/modules/
cd /usr/local/apache2/bin;./apachectl restart
四、配置在solaris8下apache自动启动的标准脚本
写个脚本放到 /etc/rc3.d/
脚本命名方法:
启动脚本的命名。必须以大写的S开头,后边根数字标志该目录下各个文件的执行顺序。再后边的字母随便起
如: (S97apache)
# gedit /etc/rc3.d/S97apache
文件内容:
#!/bin/sh
case "$1" in
'start')
/usr/local/apache2/bin/apachectl start $
;;
'stop')
/usr/local/apache2/bin/apachectl stop $
;;
*)
echo "Apache Start Fail!"
;;
esac
exit 0
Ok,测试Apache
# service apache start
# service apache stop
# service apache restart
测试SVN
用IE打开http://10.20.0.226/svn,输入用户名和密码,能看到以下信息,说明我们已经配置成功了:
Revision 0: /
2. http://num7.iteye.com/blog/210944
svnserve是SVN自带的一个轻型服务器,客户端通过使用以svn://或svn+ssh://为前缀的URL来访问svnserve服务器,实现远程访问SVN版本库。
svnserve可以通过配置文件来设置用户和口令,以及按路径控制版本库访问权限。本文详细分析了svnserve配置文件格式,并说明如何使用配置文件控制版本库访问权限。
本文介绍SVN的版本为1.4.4。
1) svnserve配置文件概述
svnserve配置文件通常由以下3个文本文件组成:
svn服务配置文件,该文件版本库目录的conf目录下,文件名为svnserve.conf。
用户名口令文件,该文件名在文件svnserve.conf中指定,缺省为同目录下的passwd。
权限配置文件,该文件名也在文件svnserve.conf中指定,缺省为同目录下的authz。
2) svn服务配置文件
svn服务配置文件为版本库目录中的文件conf/svnserve.conf。该文件仅由一个[general]配置段组成。
[general]配置段中配置行格式如下:
<配置项> = <值>
配置项分为以下5项:
anon-access 控制非鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。
即"write"为可读可写,"read"为只读,"none"表示无访问权限。
缺省值:read
auth-access 控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。
即"write"为可读可写,"read"为只读,"none"表示无访问权限。
缺省值:write
password-db 指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf
目录的相对路径。
缺省值:passwd
authz-db 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
除非指定绝对路径,否则文件位置为相对conf目录的相对路径。
缺省值:authz
realm 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的
认证域相同,建议使用相同的用户名口令数据文件。
缺省值:一个UUID(Universal Unique IDentifier,全局唯一标示)。
【说明】版本库认证域
在使用svn客户端访问svnserve服务器时,若需要用户登录,则提示信息如下:
[root@test root]# svn list svn://192.168.3.45/test
Authentication realm: <svn://192.168.3.45:3690> 0d545a49-4038-0410-99b4-c66dc73f754e
Password for 'root':
在上述第2行"Authentication realm: <svn://192.168.3.45:3690>"之后显示的字符串为认证域名称。如果在配置文件中为设定认证域,就会提示一个UUID,如上述所示。
如果在配置文件中指定了如下配置项:
realm = test
将在svn客户端提示如下:
[root@test root]# svn list svn://192.168.3.45/test
Authentication realm: <svn://192.168.3.45:3690> test
Password for 'root':
例1:svn服务配置文件conf/svnserve.conf的内容如下:
[general]
anon-access = none
auth-access = write
password-db = http://www.cnblogs.com/conf/passwd
authz-db = http://www.cnblogs.com/conf/authz
realm = test
上述配置文件设定非鉴权用户无权限访问该版本库;鉴权用户可对版本库进行读写;用户名口令文件为相对版本库conf目录的文件"http://www.cnblogs.com/conf/passwd";权限配置文件为相对版本库conf目录的文件"http://www.cnblogs.com/conf/authz";版本库的认证域为"test"。
3) 用户名口令文件
用户名口令文件由svnserve.conf的配置项password-db指定,缺省为conf目录中的passwd。该文件仅由一个[users]配置段组成。
[users]配置段的配置行格式如下:
<用户名> = <口令>
注意:配置行中的口令为未经过任何处理的明文。
例2:用户名口令文件conf/passwd的内容如下:
[users]
admin = admin
thinker = 123456
该文件中配置了两个用户,用户名分别为"admin"和"thinker"。其中"admin"用户的口令为"admin";"thinker"用户的口令为"123456"。
4) 权限配置文件
权限配置文件由svnserve.conf的配置项authz-db指定,缺省为conf目录中的authz。该配置文件由一个[groups]配置段和若干个版本库路径权限段组成。
[groups]配置段中配置行格式如下:
<用户组> = <用户列表>
用户列表由若干个用户组或用户名构成,用户组或用户名之间用逗号","分隔,引用用户组时要使用前缀"@"(如:引用用户组"all"要使用字符串"@all")。
版本库路径权限段的段名格式如下:
[<版本库名>:<路径>]
如版本库abc路径/tmp的版本库路径权限段的段名为"[abc:/tmp]"。
可省略段名中的版本库名。若省略版本库名,则该版本库路径权限段对所有版本库中相同路径的访问控制都有效。如:段名为"[/tmp]"的版本库路径权限段设置了所有引用该权限配置文件的版本库中目录"/tmp"的访问权限。
版本库路径权限段中配置行格式有如下三种:
<用户名> = <权限>
<用户组> = <权限>
* = <权限>
其中,"*"表示任何用户;权限的取值范围为''、'r'和'rw',''表示对该版本库路径无任何权限,'r'表示具有只读权限,'rw'表示有读写权限。
注意:每行配置只能配置单个用户或用户组。
例3:权限配置文件conf/authz的内容如下:
[groups]
g_admin = admin,thinker
[admintools:/]
@g_admin = rw
* =
[test:/home/thinker]
thinker = rw
* = r
在上述配置文件中,定义了一个用户组"g_admin",该用户组包含用户"admin"和"thinker"。然后定义了2个版本库路径权限段。其中,版本库"admintools"只有用户组"g_admin"可读写,其他用户无任何权限;版本库"test"中路径"/home/thinker"只有用户"thinker"有读写权限,其他用户只有可读权限。
5) 总结
在本文中,详细介绍了svnserve程序的3个配置文件。SVN管理员可以通过这3个配置文件设置svnserve服务的用户名口令,以及对版本库路径的访问权限。这些配置文件保存后就立即生效,不需要重启svnserve服务。
需要强调的是本文介绍的配置文件只对svnserve服务有效,即客户端通过前缀为svn://或svn+ssh://的URL访问版本库有效,而对通过前缀http://、https://或file:///的URL无效。