Posts Tagged ‘SVN’

Fedora Vmware7.0 安装, SVN hooks


01 4月

——菜鸟 Linux 服务器搭建 随笔 连载之五

昨天删了原来那个残破的CentOS,开装fedora。 安装的时候碰到一点小问题,VMware7无法自动认出fedora12的样子,网上查了下,在settings的option的general里面,operating system选一下linux,version里面选other linux 2.6.x kernel 64bit就可以装了。 这次在安装的时候,customize了一下software,把需要的服务器组建等等都选上了,酱紫貌似会方便很多,上次装CentOS的时候,就偷懒没选,似乎吃了点亏,连gcc都得自己按。这次吸取教训。 嗯,之后一切顺利。 按完之后就想先装svn,毕竟前两天就死在这上面的,不过抱着侥幸的心里,yum list了一下subversion,米想到。。。居然。。。直接就有1.6.9最新版的!!!这。。。yum install subversion。。。 好吧,我就这么无脑的成功按上了。。。 之后按前几天查到的东东配置了下,报了个错,意思是说sqlite版本有点低,于是无脑 yum update sqlite,完了后,似乎就好了,不过后来有的地方又报了这个错(具体英文忘记了,反正意思是运行的版本是低版本的,但潜层意思里面是说系统已经装了新的版本),思索着可能装完了没重启sqlite,不过又不知道怎么重启,于是直接reboot。。。 哦,对了,重启前顺便写了下/etc/rc.local,保证开机时svnserve会自动起来,另外还写了一句vsftpd,让ftp默认起来。 启动后一切正常,svn可以使用了。。。ftp和前次centos上也没区别,直接可以用了。传了zendserver上去,没有装,其他也还没弄,忙着公司网站上版本,就暂告段落了,直到今天才记录下来这些东东。顺便开始今天的折腾。 ——————————————今天的分割线————————————————— 今天目标是搞定svn的hooks,没有查太多的资料,直接看了下配置目录下的hooks目录,里面有很多tmpl文件。 似乎各种情况下的hooks说明都在其中了。 我们公司的svn服务器是commit后自动更新web服务器/home下的相应目录,达到同步web服务器目录的效果。 偶要达到的效果更简单,更新本机的/home目录就ok了。 于是在post-commit文件里面加了一句: /usr/bin/svn update --username jjw --password jjwjjw /home/jjw 就ok了,其中要注意的是,似乎hooks里面的脚本不会认$PATH,而且记得把post-commit的执行权限开开。 之后安全考虑,想说把svn所有服务不要用root启动,开始是想建一个svn组和用户,结果后来考虑到/home下的目录所有者会是apache,那执行post-commit的人要对那个目录有权限,那也最好是apache了,所以最后改为用apache用户去开启svnserve守护进程。 这其中遇到一个问题,都改完了后貌似会报错(其实也不是报错,就是类似保存密码之类的提示卡住了),查了点资料,好像是因为找不到/root/.subversion/svnserve引起的,最后post-commit中的命令改为: /usr/bin/svn update --config-dir /root/.subversion --username jjw --password jjwjjw /home/jjw 注意不要写全/root/.subversion/svnserve,svnserve必须略去,否则会自动多加。 顺手把/etc/rc.local中的启动项都用sudo -u改为其他用户启动。至此一切OK。 明天准备配下zendserver,组合起来后,就可以形成一个开发测试环境了,之后就可以开始偶的研究工作啦。唉,看来搞服务器偶还是不太行啊。 喵的,希望之后一切顺利吧。。。

Linux网络配置,SVN安装配置


30 3月

——菜鸟 Linux 服务器搭建 随笔 连载之四

在公司。上午事情安排完后,继续搞偶纠结的服务器。 公司是另外的网络环境了,虽然把本本带了过来,不过原来的vmware bridge似乎不灵光了。 于是回头纠结上次没完全搞定的网络配置问题。 今天似乎运气不错,搜到了一篇文章(防止他消失,转到自己这里了), 按照里面写的把/etc/sysconfig/network-scripts/ifcfg-eth0改成了static, nameserver也改成了公司的那个dns地址, 之后/etc/init.d/network restart了一下,一次成功~ Ok,继续试图在win下面update昨天svnadmin create的那个新库, 未果, 发现忘记开svnserve。。。汗。。。 svnserve -d -r /var/svnroot起来之后, update, 报错。。。 “Network connection closed unexpectedly” Google。。。 查到有人说必须装BerkeleyDb才可以解决,可是记忆中以前装的时候都没要这个东东嘛,于是想到昨天编译的时候是不是没有指定一定不用BDB,继续查了下资料,发现似乎需要configure的时候要加--without-berkeley-db,吐血。。。 好吧,重头再来, ./configure --with-apr=/usr/local/zend/apache2/bin --with-apr-util=/usr/local/zend/apache2/bin --with-apxs=/usr/local/zend/apache2/bin/apxs --without-berkeley-db make make install 顺利成功~(其中configure的最后会提示你选择了不要BDB的模式,会以FSFS的模式去走,无视就可以了) 把原来的svnroot删了后(原来怀疑是目录权限问题,都设777了,所以删了重来,否则的话重新编译似乎对这些都没影响的,不动都ok的),重新mkdir,svnadmin create,本地checkout,成功,一切顺利over。 到这一步,因为还没设置svn帐号权限等,所以还没有commit的权限,前面查资料的时候正好看到下面两篇文章,转了过来: 在linux下安装配置svn独立服务器 svnserve配置文件详析 扫了一下,准备接下来开始配置喽~ ………… 好吧,我很世博。发现似乎是sqlite的问题,结果想卸了重装,yum一卸把所有相关的都卸了。。。包括yum。。。包括rpm。。。无敌了。。。 现在httpd什么的都挂了,嗯,废了。。。 不高兴一个一个弄回来了,嗯,明天用无敌绝招,重装系统~~~ 顺便下个fedora,明天装这个玩玩看。 喵~回家,下班,休息。。。

【转】svnserve配置文件详析


30 3月
From: http://sd.csdn.net/page/d97cc471-e657-4620-997f-efdcc10fd2b7 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: 0d545a49-4038-0410-99b4-c66dc73f754e Password for 'root': 在上述第2行"Authentication realm: "之后显示的字符串为认证域名称。如果在配置文件中为设定认证域,就会提示一个UUID,如上述所示。 如果在配置文件中指定了如下配置项: realm = test 将在svn客户端提示如下: [root@test root]# svn list svn://192.168.3.45/test Authentication realm: test Password for 'root': 例1:svn服务配置文件conf/svnserve.conf的内容如下: [general] anon-access = none auth-access = write password-db = ../../conf/passwd authz-db = ../../conf/authz realm = test 上述配置文件设定非鉴权用户无权限访问该版本库;鉴权用户可对版本库进行读写;用户名口令文件为相对版本库conf目录的文件"../../conf /passwd";权限配置文件为相对版本库conf目录的文件"../../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无效。

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: 0d545a49-4038-0410-99b4-c66dc73f754e Password for 'root': 在上述第2行"Authentication realm: "之后显示的字符串为认证域名称。如果在配置文件中为设定认证域,就会提示一个UUID,如上述所示。 如果在配置文件中指定了如下配置项: realm = test 将在svn客户端提示如下: [root@test root]# svn list svn://192.168.3.45/test Authentication realm: test Password for 'root': 例1:svn服务配置文件conf/svnserve.conf的内容如下: [general] anon-access = none auth-access = write password-db = ../../conf/passwd authz-db = ../../conf/authz realm = test 上述配置文件设定非鉴权用户无权限访问该版本库;鉴权用户可对版本库进行读写;用户名口令文件为相对版本库conf目录的文件"../../conf /passwd";权限配置文件为相对版本库conf目录的文件"../../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无效。

【转】在linux下安装配置svn独立服务器


30 3月
From: http://www.blogjava.net/zhouf/articles/251476.html subversion(以下简称svn)是近年来崛起的版本管理工具,是cvs的接班人。 svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。 svn存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。 1. svn服务器安装操作系统: Redhat Linux AS4安装包获取:下载http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz和 http://subversion.tigris.org/downloads/subversion-deps-1.4.0.tar.gz。编译: 以root用户登录。 将subversion-1.4.0.tar.gz和subversion-deps-1.4.0.tar.gz传到服务器。 tar xfvz subversion-1.4.0.tar.gz tar xfvz subversion-deps-1.4.0.tar.gz cd subversion-1.4.0 ./configure --prefix=/opt/svn --without-berkeley-db --with-zlib (注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db) make clean make make install vi /etc/profile,在/etc/profile最后加入: PATH=$PATH:/opt/svn/bin export PATH 测试: svnserve --version 如果显示如下,安装成功: svnserve, version 1.4.0 (r21228) compiled Oct 12 2006, 10:18:56Copyright (C) 2000-2006 CollabNet. Subversion is open source software, see http://subversion.tigris.org/ This product includes software developed by CollabNet (http://www.Collab.Net/).The following repository back-end (FS) modules are available:* fs_fs : Module for working with a plain file (FSFS) repository. 2. svn配置 建立版本库目录,可建多个: mkdir -p /opt/svndata/repos1 mkdir -p /opt/svndata/repos2 建立版本库: svnadmin create /opt/svndata/repos1 svnadmin create /opt/svndata/repos2 修改版本库配置文件: 版本库1: vi /opt/svndata/repos1/conf/svnserve.conf 内容修改为: [general] anon-access = none auth-access = write password-db = /opt/svn/conf/pwd.conf authz-db = /opt/svn/conf/authz.conf realm = repos1 版本库2: vi /opt/svndata/repos2/conf/svnserve.conf内容修改为: [general] anon-access = none auth-access = write password-db = /opt/svn/conf/pwd.conf authz-db = /opt/svn/conf/authz.conf realm = repos2 即除realm = repos2外,其他与版本库1配置文件完全相同。如果有更多的版本库, 依此类推。配置允许访问的用户: vi /opt/svn/conf/pwd.conf 为了简化配置,2个版本库共用1个用户配置文件。如有必要,也可以分开。注意:对用户配置文件的修改立即生效,不必重启svn。文件格式如下: [users] <用户1> = <密码1> <用户2> = <密码2> 其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。示例: [users] alan = password king = hello 配置用户访问权限: vi /opt/svn/conf/authz.conf 为了简化配置,3个版本库共用1个权限配置文 件/opt/svn/conf/pwd.conf。如有必要,也可以分开。文件中定义用户组和版本库目录权限。注意: * 权限配置文件中出现的用户名必须已在用户配置文件中定义。 * 对权限配置文件的修改立即生效,不必重启svn。用户组格式: [groups] <用户组名> = <用户1>,<用户2> 其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。版本库目录格式: [<版本库>:/项目/目录] @<用户组名> = <权限> <用户名> = <权限>  其中,方框号内部分可以有多种写法: /,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/opt/svndata。这样,/就是表示对全部版本库设置权限。 repos1:/,表示对版本库1设置权限 repos2:/occi, ,表示对版本库2中的occi项目设置权限 repos2:/occi/aaa, ,表示对版本库2中的occi项目的aaa目录设置权限  权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。示例: [groups] admin = alan[/] @admin = rw[repos1:/occi/aaa] king = rw[repos2:/pass] king = 删除无用文件: rm /opt/svndata/repos1/conf/authz rm /opt/svndata/repos1/conf/passwd rm /opt/svndata/repos2/conf/authz rm /opt/svndata/repos2/conf/passwd 3. 启动svn 建立启动svn的用户: useradd svn passwd svn 根据提示为用户svn设置密码允许用户svn访问版本库: chown –R svn:svn /opt/svndata chown –R svn:svn /opt/data启动svn: su - svn -c "svnserve -d --listen-port 9999 -r /opt/svndata"(原文错误  —— jjw) su -c "svnserve -d -listen port 9999 -r /opt/svndata" svn 其中: su – svn表示以用户svn的身份启动svn -d表示以daemon方式(后台运行)运行 --listen-port 9999表示使用9999端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root 权限 -r /opt/svndata指定根目录是/opt/svndata检查: ps –ef|grep svnserve如果显示如下,即为启动成功: svn    6941   1 0 15:07 ?    00:00:00 svnserve -d --listen-port 9999 -r /opt/svndata参考资料: http://www.gbunix.com/htmldata/2006_07/15/27/article_1337_1.html http://www.iusesvn.com/bbs/thread-157-1-1.html http://16hot.blog.isyi.com/post/1/552 检测服务是否开启:netstat -ntlp如果看到3690的端口正常开放了,证明SVN启动了。] 下面是机器上的端口显示: Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address         Foreign Address              State PID/Program name tcp         0       0 0.0.0.0:32769         0.0.0.0:*                    LISTEN 2611/rpc.statd tcp         0       0 0.0.0.0:111           0.0.0.0:*                    LISTEN 2591/portmap tcp         0       0 0.0.0.0:113           0.0.0.0:*                    LISTEN 2827/xinetd tcp         0       0 127.0.0.1:631         0.0.0.0:*                    LISTEN 4860/cupsd tcp         0       0 127.0.0.1:25          0.0.0.0:*                    LISTEN 2846/sendmail: acce tcp         0       0 :::3690               :::*                        LISTEN 5513/svnserve tcp         0       0 :::22                 :::*                        LISTEN 2812/sshd 下面这个就是了: tcp         0       0 :::3690               :::*                        LISTEN 5513/svnserve 好了,svn已经架起来了
在 Linux/Apache 2.2 上配置SVN服务器 准备,下载所需要文件. 检查已安装的 Apache2 是否已经安装了 mod_dav . 编译SVN,遇到的问题和解决方法 使用 默认文件系统(fsfs) 保存数据 使用 Berkeley DB 保存数据 配置Apache和SVN,测试. 其它小结 从Windows平台上数据转移 配置文件,使用其支持对文件中的 $Id$ 标签每次提交的时候自动更新版本信息. 基于路径的权限控制常用SVN命令 相关资源* 准备,下载所需要文件. 本文测试环境:ubuntu 6.06 LTS (kernel 2.6.15-25-k7,gcc-4.0.3) /ubuntu server (2.6.15-26- server,gcc-4.0.4) Subversion 1.3.2Apache 2.2.2最新的版本 Subversion 可以在这里找到 : http://subversion.tigris.org/project_packages.html* 检查已安装的 Apache2 是否已经安装了 mod_dav . 如果已经成功安装了Apache,使用 httpd -M 来查看有没有安装 dav_module,如果没有的话 必须附加 ‘–enable-dav’ ‘–enable-dav-fs’ 两个参数重新编译 Apache,否则即使编译通过了svn,apache也 会启动不起来.如何编译 Apache 请参考我另外一篇文章.* 编译SVN,遇到的问题和解决方法. 使用默认的文件系统保存数据. 最终完整通过安装和测试的编译参数为:./configure --with-apxs=/usr/local/apache2/bin/apxs \ --with-apr=/home/src/server/httpd-2.2.2/srclib/apr \ --with-apr-util=/home/src/server/httpd-2.2.2/srclib/apr-utilmake make install其中 /home/src/server/ 为 httpd-2.2.2 源代码所在文件夹,根据实际情况调整一下.◆ 遇到问题:1) --with-apr 和 --with-apr-util 如果没有加上的话,即使编译成功了也会出现Can't set position pointer in file ‘/home/svn/repos/db/revs/0′: Invalid argument 这样的错误提示.2) 暂时不能使用 Berkeley DB [* 已解决]svn保存文件更新数据库的方法有两个,一种是直接使用 fs (filesystem)来保存,另一种是通过Oracle提供支持的开源数据库 Berkeley DB 进行保存。但是如果加上 –with-berkeley-db=/usr/local/BerkeleyDB.4.4 就会configure时就会报错.configure: error: APR-UTIL was installed independently, it won’t be possible to use the specified Berkeley DB: /usr/local/BerkeleyDB.4.4我想 apr-unit 暂时不支持吧,我们就用默认的fs好了.3) 在make 的时候可能会遇到缺少 srclib/apr/libapr-1.la,srclib/apr-util/libaprutil-1.la 两个文件,找不到而make error.解决办法:/usr/local/apache2/lib/ 中找到,将其复制到源代码文件夹相应的位置中.Update!!使用 BerkeleyDB 保存数据. 1) 安装 BerkeleyDBcd /usr/local/src wget http://downloads.sleepycat.com/db-4.3.29.tar.gztar xzvf db-4.3.29.tar.gz cd /usr/local/src/db-4.3.29/build_unix ../dist/configure --enable-compat185 make make install2) 更新apr和apr-util源代码# 清理编译后的.la文件 cd /usr/local/src/httpd-2.2.3make cleancd /usr/local/src/subversion-1.3.2 rm -rf apr rm -rf apr-util cp -rf /usr/local/src/httpd-2.2.3/srclib/apr ./ cp -rf /usr/local/src/httpd-2.2.3/srclib/apr-util/ ./3) 编译安装./configure --with- apxs=/usr/local/apache2/bin/apxs \ --with-berkeley-db=/usr/local/BerkeleyDB.4.3 \ --with-ssl make make install ◆ 遇到问题: 1) BerkeleyDB 版本不能大于 4.3.否则同样会出现以下错误.configure: error: APR-UTIL was installed independently, it won’t be possible to use the specified Berkeley DB: /usr/local/BerkeleyDB.4.4 主要是apr-util 暂时不支持4.4的版本.2) 必须更新apr,apr-util 源代码. subversion-1.3.2 自带的 apr-util 的版本是0.9.6的,必须升级为 1.2.7 虽然能编译过去。但在 svn checkout 的时候会提示svn: REPORT request failed on ‘/!svn/vcc/default’ svn: REPORT of ‘/!svn/vcc/default’: Could not read status line: connection was closed by server. 这个问题困扰了我很长时间,Google和官方论坛都无结果。后来昨天竟然自己无意中解决了,感动的得哭了:)* 配置Apache和SVN,测试 成功编译svn后会在 httpd.conf 中自动加上LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so 两个模块,没有的话,自行加上或检测是否真的编译成功.假设我们现在要将一个名为 Lair 的项目导入 到 SVN中1). Apache的配置在 conf/httpd.conf 或 conf/extra/httpd-vhosts.conf 中加入 <Location /svn/Lair>DAV svn SVNPath /home/svn/Lair </Location> 可以参考以下apache的配置,实现数据加密传输,用户身份验证.Listen 443AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl.SSLPassPhraseDialog exec:/etc/sendsslpwd SSLSessionCache shmcb:/usr/local/apache2/logs/ssl_scache(512000) SSLSessionCacheTimeout 300 SSLMutex file:/usr/local/apache2/logs/ssl_mutex<VirtualHost _default_:443> DocumentRoot /var/SVNRoot ServerName svn.yousite.com:443 ServerAdmin webmaster@yousite.com <Location />DAV svn SVNPath /var/SVNRoot AuthzSVNAccessFile /etc/svnserve.conf Satisfy Any AuthType Basic AuthName “yousite SVN Repository” AuthUserFile /etc/httpd-passwords.txt Require valid-user</Location> SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /etc/ssl/server.crt SSLCertificateKeyFile /etc/ssl/server.key</VirtualHost>更详细的配置说明文档 http://svnbook.red-bean.com/nightly/en/svn.ref.mod_dav_svn.conf.html2). 配置,并且测试SVN,创建一个新用户,用了保存仓库. useradd -m svn 创建一个新模块su daemon (apache是以daemon用户运行的,所以要切换身份,否则可能会报目录访问权限错误) svnadmin create --fs-type fsfs /home/svn/Lair 导入原来的项目svn import /var/www/Lair http://localhost/svn/Lair -m ‘Initial import’重新建 立工作目录rm -rf /var/www/Lair (注意备份!!) svn checkout http://localhost/svn/Lair 测试打开 http://localhost/svn/Lair如能看到一个你项目录列表,说明您成功了。 * 其它小结 数据转移:从 Windows 平台 SVN 服务器转移 如果windows svn储存的格式也是dbd的话,直接将SVN的文件夹copy过来即可.然后 执行 svnadmin recover /var/SVNRoot 检查一下数据库是否损坏.最后注意权限,确保 db 目录下的所有 文件可写。chmod 755 db chmod 666 db/* 否则checkout时出现以下错误,多数是因为文件或者目录权限问题引起的,可以尝试用 chown 或者 chmod 命令修改一下权限<m:human-readable errcode=”160029″>Could not open the requested SVN filesystem </m:human-readable><m:human-readable errcode=”13″> Could not open the requested SVN filesystem </m:human-readable>另外一种方法没有测试过,原理大致和mysqldump一样,将svn导出为文本文件,然 后重新导入,好处是可以避免因为存储格式不同而导致的数据转移困难。# dump data to file (assuming a repo @ c:\repo):svnadmin dump c:\repo > c:\repo.txt # Copy the file over to linux: mkdir /repo svnadmin create /repo svnadmin load /repo < /repo.txt 设置访问控制当 httpd.conf 中 设置 AuthzSVNAccessFile 时, 可以设置不同用户对不同目录的访问控制.以下是一个例子.[groups] root = admin.root web = user1,user2 soft = user3,user4[/] @root = rw[/www]@web = rw[/soft] @soft = rw详细的说明文档:http://svnbook.red-bean.com/nightly/en/svn.serverconfig.httpd.html 配置文件,使用其支持对文件中的 $Id$ 标签每次提交的时候自动更新版本信息(自动属性).Windows : C:\Documents and Settings\%USERNAME%\Application Data\Subversion\config Linux : ~\.subversion\config[miscellany]enable-auto-props = yes [auto-props] *.php=svn:keywords=Id *.html=svn:keywords=Id>> 关于自动属性的更高级讨论■ 几条常用svn 命令 svn update svn add “filename” svn commit———————– Change Log:2006-08-14 neon库subversion已经自带,不需要在单独安装,添加-with-ssl即可使用svn对ssl支持. 2006-08-10 补充自动属性的说明. 2006-08-08 加入关于目录访问验证的说明. 2006-08-07 httpd,2.2.3测试依然有效,解决bdb数据库的支持问题,添加从Windows到Linux下的数据转移方案。 2006-07-25 看到到.声仔对 Can’t set position pointer in file 另一种解决方案,我当时也测试了,好像没有成功。不想用apache源代码编译的朋友可以也测试一下

SVN及相关Required组件安装


30 3月

——菜鸟 Linux 服务器搭建 随笔 连载之三

嗯,今天晚上老婆上课,又有点时间自己搞搞,于是准备把SVN安上。8过貌似碰到了些许阻碍。 下载的是Source Code包,解压后./configure 发现貌似少了不少东西,比如configure要的基本gcc包都木有,报了个configure: error: no acceptable C compiler found in $PATH,看来系统装的时候太简化也不灵啊,于是通过万恶的yum找到了gcc无脑安装完毕,接着继续configure,又发现APR木有(好吧,我承认我不知道什么是APR),于是又想通过yum无脑搞定,8过貌似install完毕后,configure还是报找不到,find了下不知道为啥也没找APR的文件,纠结了,于是看了下svn安装文档,找到里面有一段说: If you want to specify the location of the APR library, you can use the "--with-apr=" option of "./configure". It should be able to find the apr-config script in the standard location under that directory (e.g. ${prefix}/bin). Similarly, you can specify the location of APR-util using the "--with-apr-util=" option to "./configure". It will look for the apu-config script relative to that directory. For example, if you want to use the APR libraries you built with the Apache httpd server, you could run: $ ./configure --with-apr=/usr/local/apache2 \ --with-apr-util=/usr/local/apache2 ... 于是想到,我装的是zend server,貌似apache目录在/usr/local/zend/apache2的样子,于是尝试了下,发现貌似ok了,不过又报了个apxs的错,刚才找apr的时候有看到apxs的字样,于是就: ./configure --with-apr=/usr/local/zend/apache2/bin --with-apr-util=/usr/local/zend/apache2/bin --with-apxs=/usr/local/zend/apache2/bin/apxs 结果好像就这么过去了。 不过这事还没完,接着又发现sqlite版本过低,新的svn要求3.4以上,最好3.6的,不过CentOS里面只有3.3.x,yum也没有新的update,好吧,又得自己动手丰衣足食了。 找到最新的Sqlite下载,然后装了sqlite-amalgamation-3.6.23.tar.gz ,搞定。 接着又发现没有zlib(- -||| 没完没了了),好吧,yum貌似用官方的列表的确比较废,都是老的不的了的版本,zlib也挺纠结的,yum显示装了,不过svn就是找不到,于是到http://www.zlib.net/下了最新的,无脑安装完毕。 终于,SVN的configure过去了。 make 。。。 。。。。 。。。。。 。。。。。。 /usr/bin/ld: cannot find -lexpat collect2: ld returned 1 exit status make: *** [subversion/svn/svn] Error 1 囧。。。 查了半天,貌似是要装2个包,expat和expat-devel。yum install完继续make。。。 成功。。。make install。。。。成功。。。。 终于。。。内牛满面。。。 稍微试了下svnadmin create,貌似还有不少要设置的,开来3690端口,然后svnserve -d -r /var/svnroot 了一下,好像还有问题,嗯,明天再搞了,吃不消了。喵的。睡。。。。

TortoiseSVN初始设置


26 2月
1.右键->TortoiseSvn->Settings->编辑设置文件 2.去掉 no-unlock = yes (每次提交不自动锁定)和 enable-auto-props = yes(开启自动属性功能) 的注释 3.在config文件的最后加上: * = svn:needs-lock=x *.css = svn:keywords=Id ;svn:eol-style=native *.php = svn:keywords=Id ;svn:eol-style=native *.html = svn:keywords=Id ;svn:eol-style=native *.phtml = svn:keywords=Id ;svn:eol-style=native *.js = svn:keywords=Id ;svn:eol-style=native *.txt = svn:keywords=Id ;svn:eol-style=native (说明:第一行为自动为每一个add的文件加上必须锁定的标记,后面几行的功能是,自动替换文件中以“$Id xxx$”字样成每次提交的svn版本及用户信息等。) 4. global-ignores = Thumbs.db

貓熊寶寶幼齒園

姜經緯的博客