- 浏览: 249664 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
liliang880504:
bitnami_redmine_merge这个数据库是创建和合 ...
bitnami-redmine服务器迁移
*********安装apr
[root@os11728 src]# wget http://mirror.bjtu.edu.cn/apache//apr/apr-1.4.5.tar.gz
[root@os11728 src]# tar -zxvf apr-1.4.5.tar.gz
[root@os11728 src]# cd apr-1.4.5
[root@os11728 apr-1.4.5]# ./configure –prefix=/usr/local/apr
[root@os11728 apr-1.4.5]# make
[root@os11728 apr-1.4.5]# make install
[root@os11728 apr-1.4.5]# cat /etc/ld.so.conf
[root@os11728 apr-1.4.5]# echo /usr/local/apr/lib >> /etc/ld.so.conf
*********安装apr-util
[root@os11728 src]# wget http://mirror.bjtu.edu.cn/apache//apr/apr-util-1.3.12.tar.gz
[root@os11728 src]# tar -zxvf apr-util-1.3.12.tar.gz
[root@os11728 src]# cd apr-util-1.3.12
[root@os11728 apr-util-1.3.12]# ./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr
[root@os11728 apr-util-1.3.12]# make
[root@os11728 apr-util-1.3.12]# make install
[root@os11728 apr-util-1.3.12]# echo /usr/local/apr-util/lib >> /etc/ld.so.conf
[root@os11728 apr-util-1.3.12]# ldconfig -v
1.1. 安装基本组件(libxml、openssl)
[root@os11728 src]# yum check-update
[root@os11728 src]# yum -y update
[root@os11728 src]# yum clean packages
[root@os11728 src]# yum -y install libxml* openssl openssl-devel
1.2. 安装 sqlite
[root@os11728 src]# wget http://www.sqlite.org/sqlite-autoconf-3070800.tar.gz
[root@os11728 src]# tar -zxvf sqlite-autoconf-3070800.tar.gz
[root@os11728 src]# cd sqlite-autoconf-3070800
[root@os11728 sqlite-autoconf-3070800]# ./configure –prefix=/usr/local/sqlite
[root@os11728 sqlite-autoconf-3070800]# make
[root@os11728 sqlite-autoconf-3070800]# make install
1.3. 安装 neon
(不需要支持http协议可以略掉此安装)
[root@os11728 src]# wget http://www.webdav.org/neon/neon-0.29.6.tar.gz
[root@os11728 src]# tar -zxvf neon-0.29.6.tar.gz
[root@os11728 src]# cd neon-0.29.6
[root@os11728 neon-0.29.6]# ./configure –prefix=/usr/local/neon –with-ssl=openssl
[root@os11728 neon-0.29.6]# make
[root@os11728 neon-0.29.6]# make install
1.4. 安装Subversion
[root@os11728 src]# wget http://ftp.cuhk.edu.hk/pub/packages/apache.org/subversion/subversion-1.7.5.tar.gz
[root@os11728 src]# tar -zxvf subversion-1.7.5.tar.gz
[root@os11728 src]# cd subversion-1.7.5
[root@os11728 src]# mkdir /usr/local/src/subversion-1.7.5/sqlite-amalgamation
[root@os11728 src]# cp /usr/local/src/sqlite-autoconf-3070800/sqlite3.c /usr/local/src/subversion-1.7.5/sqlite-amalgamation/sqlite3.c
[root@os11728 subversion-1.7.5]# ./configure –prefix=/usr/local/subversion –with-apxs=/usr/local/apache2/bin/apxs –with-apr=/usr/local/apache2 –with-apr-util=/usr/local/apache2 –with-ssl –with-zlib=/usr/local/zlib –enable-maintainer-mode –without-berkeley-db –enable-mod-activation –with-neon=/usr/local/neon –enable-shared
[root@os11728 subversion-1.7.5]# make clean
[root@os11728 subversion-1.7.5]# make
[root@os11728 subversion-1.7.5]# make install
在编译安装subvision时,提示configure: error: Subversion requires SQLite,原因是需要依赖Sqlite。
解决方法:下载sqlite-3.6.13 ,解压后,进入sqlite目录,复制sqlite3.c到subvision源码文件sqlite-amalgamation目录下,如果没有sqlite-amalgamation目录,手动新建一个即可。
在make subvision时,出现以下错误提示:
/usr/local/src/neon-0.29.6/src/ne_auth.c:781: undefined reference to `ne__ntlm_destroy_context’
/usr/local/src/neon-0.29.6/src/ne_auth.c:785: undefined reference to `ne__ntlm_create_context’
collect2: ld returned 1 exit status
make: *** [subversion/libsvn_ra_neon/libsvn_ra_neon-1.la] Error 1
解决方法:修改/usr/local/src/neon-0.29.6/src/Makefile,将CFLAGS = -g -O2 -prefer-pic 改成 CFLAGS = -fPIC -g -O2,然后重新编译neon,接着再重新编译subversion即可。
添加Subversion的环境变量
[root@os11728 subversion-1.7.5]# vi /etc/profile
在最后加上如下一行代码:
将其打开把
export PATH=$PATH:/usr/local/subversion/bin
这句放在“export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC”的上一行
立即生效环境配置,不需要重启,用下命令:
[root@os11728 subversion-1.7.5]# . /etc/profile
测试SVN是否安装成功:
[root@os11728 ~]#svn –version
显示以下信息:
svn: /usr/lib/libz.so.1: no version information available (required by /usr/local/subversion/lib/libsvn_delta-1.so.0)
svn, version 1.7.1 (r1186859)
compiled Oct 25 2011, 11:24:55
Copyright (C) 2011 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository access (RA) modules are available:
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
- handles ‘http’ scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
- with Cyrus SASL authentication
- handles ‘svn’ scheme
* ra_local : Module for accessing a repository on local disk.
- handles ‘file’ scheme
表明安装成功,但出现了错误提示:svn: /usr/lib/libz.so.1: no version information available (required by /usr/local/subversion/lib/libsvn_delta-1.so.0)
这是libsvn_delta-1.so.0依赖的库/usr/lib/libz.so.1不可用导致的。错误追踪:
[root@www ~]# cd /usr/lib
[root@www lib]# ll libz*
-rwxr-xr-x 1 root root 92598 Jan 10 2007 libz.a
lrwxrwxrwx 1 root root 13 Apr 20 2010 libz.so -> libz.so.1.2.3
lrwxrwxrwx 1 root root 13 Oct 13 14:45 libz.so.1 -> libz.so.1.2.3
-rwxr-xr-x 1 root root 75028 Jan 10 2007 libz.so.1.2.3
[root@www lib]# ldd libz.so.1.2.3
linux-gate.so.1 => (0x00d8f000)
libc.so.6 => /lib/libc.so.6 (0x00c0f000)
/lib/ld-linux.so.2 (0x00bec000)
从上可以看到libz.so.1软链接到libz.so.1.2.3,libz.so.1.2.3是zlib-1.2.3生成的库,该库可能已被删除,而我已安装的zlib-1.2.5,见:
[root@www lib]# cd /usr/local/zlib/lib
[root@www lib]# ls
libz.a libz.so libz.so.1 libz.so.1.2.5 pkgconfig
[root@www lib]# ll libz*
-rw-r–r– 1 root root 101462 Oct 13 14:43 libz.a
lrwxrwxrwx 1 root root 13 Oct 13 14:43 libz.so -> libz.so.1.2.5
lrwxrwxrwx 1 root root 13 Oct 13 14:43 libz.so.1 -> libz.so.1.2.5
-rwxr-xr-x 1 root root 95004 Oct 13 14:43 libz.so.1.2.5
[root@www lib]# ldd libz.so.1.2.5
linux-gate.so.1 => (0x002f8000)
libc.so.6 => /lib/libc.so.6 (0×00134000)
/lib/ld-linux.so.2 (0x00bec000)
故可将/usr/lib/libz.so.1重新链接至/usr/local/zlib/lib/libz.so.1.2.5,如下:
[root@www lib]# cp /usr/lib/libz.so.1 /usr/lib/libz.so.1.bak
[root@www lib]# cp /usr/local/zlib/lib/libz.so.1.2.5 /usr/local/zlib/lib/libz.so.1.2.5.bak
[root@www lib]# ln -fs /usr/local/zlib/lib/libz.so.1.2.5 /usr/lib/libz.so.1
再次查看SVN版本信息:
[root@www lib]# svn –version
svn, version 1.7.1 (r1186859)
compiled Oct 25 2011, 11:24:55
Copyright (C) 2011 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository access (RA) modules are available:
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
- handles ‘http’ scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
- with Cyrus SASL authentication
- handles ‘svn’ scheme
* ra_local : Module for accessing a repository on local disk.
- handles ‘file’ scheme
错误提示不见了,问题解决。^_^
1.5. Subversion之Apache HTTP Server 配置
修改Apache HTTP Server 配置
[root@os11728 ~]# vi /usr/local/apache2/conf/httpd.conf
(1)增加以下模块:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
(2)增加SVN的虚拟主机,设定 Subversion 文件库路径
<VirtualHost *:80>
ServerName svn.finet230.cn
DocumentRoot /usr/local/svnroot
#bovin.phang@gmail.com SiteLogs
CustomLog “|/usr/local/sbin/cronolog /var/www/logs/svn_finet230_cn/access_%Y%m%d.log” combined
ErrorLog “|/usr/local/sbin/cronolog var/www/logs/svn_finet230_cn/error_%Y%m%d.log”
<Directory “/usr/local/svnroot”>
Options -Indexes FollowSymLinks Includes
AllowOverride All
Order allow,deny
#Allow from all
deny from all
</Directory>
<Location /svn>
#告诉Aapche加载svn模块来处理请求
DAV svn
#指定SVN版本库父目录
SVNParentPath “/usr/local/svnroot/”
#连接框提示
AuthName “Subversion repository”
#权限配置文件
AuthzSVNAccessFile “/usr/local/apache2/conf/dav_svn.authz”
#采用何种认证
Require valid-user
Satisfy Any
# The following is Basic authentication setting
#身份验证方式(连接类型设置)
AuthType Basic
#用户配置文件(身份验证数据存放的路径及文件)
AuthUserFile “/usr/local/apache2/conf/dav_svn.passwd”
#<LimitExcept>
#Require valid-user
#</LimitExcept>
</Location>
</VirtualHost>
#其中authfile是通过“htpasswd [–c] /usr/local/apache2/conf/dav_svn.passwd username password”来创建的
#”Require valid-user”告诉apache在authfile中所有的用户都可以访问。如果没有它,
#则只能第一个用户可以访问新建库
#顺便把你的端口号也改一下,要不然可能&你以前的Apache的端口冲突
#其中AuthzSVNAccessFile指定了文件库访问政策文件,Require valid-use表示只有经过认证的用户才可以访问, Satisfy Any表示允许匿名访问(要与后面提到的*参数配套使用),AuthUserFile用来指示使用htpasswd创建的密码文件的位置。
(3)用Apache的htpasswd指令生成用户名和密码
[root@os11728 ~]# htpasswd -cm /usr/local/apache2/conf/dav_svn.passwd bovin
[root@os11728 ~]# htpasswd -m /usr/local/apache2/conf/dav_svn.passwd bovin
[root@os11728 ~]# htpasswd -m /usr/local/apache2/conf/dav_svn.passwd server
(3)用Apache的htpasswd指令删除用户名和密码
[root@os11728 ~]# htpasswd -D /usr/local/apache2/conf/dav_svn.passwd bovin
htpasswd语法
htpasswd [ -c ] [ -m ] [ -D ] passwdfile username
htpasswd -b [ -c ] [ -m | -d | -p | -s ] [ -D ] passwdfile username password
htpasswd -n [ -m | -d | -s | -p ] username
htpasswd -nb [ -m | -d | -s | -p ] username password
top
选项
-b
使用批处理方式。也就是直接从命令行获取密码而不进行提醒。使用这个选项需要特别注意,因为命令行中的密码是清晰可见的。
-c
创建passwdfile文件。如果passwdfile已经存在,那么将被清空并改写。该选项不能和 -n 同时使用。
-n
在标准输出上显示结果而不是更新文件。用于生成可以为Apache非文本输出存储格式所接受的密码记录。这个选项改变了命令行语法,因为passwdfile参数(通常是第一个)被忽略了。该选项不能和 -c 同时使用。
-m
使用MD5加密密码。在Windows, Netware, TPF上这是默认方法。
-d
使用crypt()对密码进行加密。在Windows, Netware, TPF以外的平台上这是默认方法。虽然有可能在所有的平台上被htpasswd支持,但是在Windows, Netware, TPF上,该方法不能被httpd所支持。
-s
使用 SHA 对密码进行加密。这种方法易于通过LDAP目录交换格式和Netscape server进行交换。
-p
使用明文密码(不加密)。虽然htpasswd在所有平台上都支持这种方法,但是httpd只能在Windows, Netware, TPF上支持这种方法。
-D
如果username存在于passwdfile中,则删除该用户。
passwdfile
包含用户名和密码的文本文件的名称。如果使用了 -c 选项,若文件已存在则更新它,若不存在则创建它。
username
在passwdfile中添加或更新记录。若username不存在则添加一条记录,若存在则更新其密码。
password
将被加密并存储到文件中的明文密码。必须和 -b 同时使用。
(4)编辑/usr/local/apache2/conf/dav_svn.authz文件
[root@os11728 ~]# vi /usr/local/apache2/conf/dav_svn.authz
添加以下内容:
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups]
g_vip = server
g_manager = bovin
g_usr = seal,xieyan,yangdandan,sunny
g_usr_read = prolove
g_all = @g_vip,g_manager,g_user
[/]
@g_vip = rw
@g_manager = rw
[bovin:/]
@g_manager = rw
[finet_tpl:/]
@g_vip = rw
@g_manager = rw
@g_usr = rw
@g_usr_read = r
*=
重启apache。
(5)SVN检出测试
[root@os11728 ~]# mkdir bovin
[root@os11728 ~]# svn checkout http://svn.finet230.cn/svn/bovin bovin #将svn.finet230.cn改为你的域名或IP
配置svn+apache服务器时,在导入或提交时,如果是unix、linux、mac os x等系统可能遇到类似这样的权限问题:
svn: 提交失败(细节如下):
svn: Can’t open file ‘/usr/local/svnroot/bovin/db/txn-current-lock’: Permission denied
或者
svn: 提交失败(细节如下):
svn: Can’t create directory ‘/usr/local/svnroot/bovin/db/transactions/1-2.txn’: Permission denied
这个主要原因:在svnadmin create时是root身份,所以,mod_dav_svn就没有write权限等。
解决办法:
修改目录/usr/local/svnroot的权限属性
[root@os11728 ~]# chown -R daemon /usr/local/svnroot
[root@os11728 ~]# chmod -R 755 /usr/local/svnroot
再试就ok~
1.6. svnsync双机备份
参阅:http://www.scmbbs.com/cn/svntp/2007/11/svntp4.php
使用svnsync备份很简单,步骤如下:
1) 在备份机上创建一个空库:
[root@os11728 ~]# svnadmin create /usr/local/svnroot/bovin
[root@os11728 ~]# chown -R daemon /usr/local/svnroot/bovin
[root@os11728 ~]# chmod -R 755 /usr/local/svnroot/bovin
2)更改该库的钩子脚本pre-revprop-change(因为svnsync要改这个库的属性,也就是要将源库的属性备份到这个库,所以要启用这个脚本):
[root@os11728 ~]# cd /usr/local/svnroot/bovin/hooks
[root@os11728 ~]# cp pre-revprop-change.tmpl pre-revprop-change
[root@os11728 ~]# chmod 755 pre-revprop-change
[root@os11728 ~]# vi pre-revprop-change
将该脚本后面的三句注释掉,或者干脆将它弄成一个空文件。
3)初始化,此时还没有备份任何数据:
[root@os11728 ~]# svnsync init file:///usr/local/svnroot/bovin/ http://192.168.1.230/svn/bovin/ –allow-non-empty
语法是:svnsync init {你刚创建的库url} {源库url}
注意本地url是三个斜杠的:///
4)开始备份(同步):
[root@os11728 ~]# svnsync sync file:///usr/local/svnroot/bovin/
5)建立同步脚本
备份完毕后,建立钩子脚本进行同步。在源库/hooks/下建立/修改post-commit脚本,在其中增加一行,内容如下:
svnsync sync –non-interactive file:///usr/local/svnroot/bovin/
常见问题解决:
问题一:
svnsync init file:///usr/local/svnroot/bovin/ http://192.168.1.230/svn/bovin/
从目标版本库获得锁失败,当前被“rhel500:284ff204-e16b-457f-933c-03d1c26c314b”持有
svnsync: Couldn’t get lock on destination repos after 10 attempts
解决方法,执行以下命令:
svn propdel svn:sync-lock –revprop -r 0 http://192.168.1.230/svn/bovin/
删除属性“svn:sync-lock”于版本库版本 0
问题二:
[root@www conf]# sh /usr/local/svnroot/Bovin/hooks/post-commit
subversion/svnsync/main.c:1384: (apr_err=22)
subversion/svnsync/main.c:1298: (apr_err=22)
svnsync: E000022: Destination HEAD (120) is not the last merged revision (119); have you committed to the destination without using svnsync?
解决方法,执行以下命令:
[root@www conf]# svn proplist -v –revprop -r0 file:///usr/local/svnroot/Bovin/
Unversioned properties on revision 0:
svn:sync-from-uuid
91184778-99fa-495a-80f9-2b4ba10bcf3d
svn:sync-last-merged-rev
119
svn:sync-last-merged-revision
120
svn:date
2011-05-24T05:53:13.406401Z
svn:sync-from-url
svn://192.168.1.230/Bovin
[root@www conf]# svn propset –revprop -r0 svn:sync-last-merged-revision 120 file:///usr/local/svnroot/Bovin/
property ‘svn:sync-last-merged-revision’ set on repository revision 0
[root@www conf]# svn propset –revprop -r0 svn:sync-last-merged-rev 120 file:///usr/local/svnroot/Bovin/
property ‘svn:sync-last-merged-rev’ set on repository revision 0
[root@www conf]# sh /usr/local/svnroot/Bovin/hooks/post-commit
问题三:
[root@www conf]# /usr/local/subversion/bin/svnsync sync file:///usr/local/svnroot/bovin/
Failed to get lock on destination repos, currently held by ‘www.finet85.cn:834e6569-67ad-472f-a745-25792c632a02′
Failed to get lock on destination repos, currently held by ‘www.finet85.cn:834e6569-67ad-472f-a745-25792c632a02′
svnsync: Couldn’t get lock on destination repos after 10 attempts
这个时候可能属性被锁了。
解决方法,执行以下命令:
[root@www conf]# svn propdel svn:sync-lock –revprop -r0 file:///usr/local/svnroot/bovin/
删除成功后,再试一遍基本就可以了。
如果反复操作都是同样错误的话,有可能是你的svn安装的有问题,重新安装一遍就好了,俺就是这样。
从目标版本库获得锁失败,当前被“rhel500:284ff204-e16b-457f-933c-03d1c26c314b”持有
svnsync: Couldn’t get lock on destination repos after 10 attempts
一些备忘:
1.客户机访问
客户机的访问方法与服务器的运行方式有直接关系
window客户机:
1) 服务器以http方式运行
安装完TortoiseSVN-1.1.1-UNICODE_svn-1.1.1.msi后,在你想工作的目录下点击右键,执行checkout,输入http://svn服务器ip/svn/repository即可。
2) 服务器以svnserve方式运行
同上的区别只是URL of repository变为 svn://svn服务器ip/home/mysvn
或者 svn+ssh://svn服务器ip/home/mysvn
(注意不是//svn服务器ip//svn/repository)
linux客户机:
1) 服务器以http方式运行
执行 #svn checkout http: //svn服务器ip/svn/repository
2) 服务器以svnserve方式运行
执行 #svn checkout svn://svn服务器ip/home/mysvn
或者 #svn checkout svn+ssh://svn服务器ip/home/mysvn
2.客户认证机制
这与服务器的运行方式有关
服务器以svnserve方式运行
默认下客户可以以匿名方式通过svn://方式任意访问档案库,为了限制其权限,比如只允许读操作,可以通过修改档案库conf子目录中的svnseve.conf文件来实现。
#vi /home/mysvn/conf/svnseve.conf
修改[general]字段下内容为:
anon-access = read
如果设为anon-access = none,则匿名用户不可以通过svn://方式访问档案库
为了实现用户认证,我们一般采用svn+ssh://访问机制。
首先在svnseve.conf文件设置anon-access = none禁止匿名用户通过svn://方式访问档案库
在其后加入auth-access = write一行
auth-access 是限制有援权的使用者(使用svn+ssh:// 来登入) 的存取权限,我们设为是可以读写。
当用户通过svn+ssh://访问时,服务器会自动启动ssh认证机制,要求用户输入密码,对于window用户来说还需要安装第三方软件openssh,才可以采用这种机制
服务器以http方式运行
比如我们想给 Sally 与 Harry 送交存取档案库的权限. 首先, 我们必须把它们加入到密码档案.
# ### 第一次: 以 -c 建立档案
# htpasswd -c /etc/svn-auth-file harry
New password: *****
Re-type new password: *****
Adding password for user harry
# htpasswd /etc/svn-auth-file sally
New password: *******
Re-type new password: *******
Adding password for user sally
#
接着,在/usr/local/apache2/conf/httpd.conf的加入:
<Location /svn/repository >
DAV svn
SVNPath /home/mycvs
AuthType Basic
AuthName “Subversion repository”
AuthUserFile /etc/svn-auth-file
Require valid-user
</Location>
重新启动 Apache后,如果有人要访问SVN服务器,系统会要求他输入用户名和密码。只有输入Sally 或Harry的用户名和相应的密码,才可以对档案库进行修改和访问
3.添加用户
打开/conf/目录,打开svnserve.conf找到一下两句:
# [general]
# password-db = passwd
去之每行开头的#,其中第二行是指定身份验证的文件名,即passwd文件
同样打开passwd文件,将
# [users]
# harry = harryssecret
# sally = sallyssecret
这几行的开头#字符去掉,这是设置用户,一行一个,存储格式为“用户名 = 密码”,如可插入一行:admin = admin888,即为系统添加一个用户名为admin,密码为admin888的用户
4. 如果linux的登录用户名密码都和svn的其中一个用户名密码相同时,在checkout的时候不会要求输入用户名密码直接就可以checkout出来。比如:linux有个用户wooin,svn也有一个用户wooin,并且密码都是一样的,当用wooin登录linux后,执行checkout,可以直接提取出源码文件,不用输入认证信息。
5. 在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用来管理仓库访问权限的。
6. svn服务器设置有两种方式:http 和 svnserve。这里介绍的是http方法
7. 在/etc/profile的结尾设置一些svn启动时要做的工作 # start apache server for svn
/usr/sbin/apachectl start
export SVN_EDITOR=vi
8. 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
[root@os11728 src]# wget http://mirror.bjtu.edu.cn/apache//apr/apr-1.4.5.tar.gz
[root@os11728 src]# tar -zxvf apr-1.4.5.tar.gz
[root@os11728 src]# cd apr-1.4.5
[root@os11728 apr-1.4.5]# ./configure –prefix=/usr/local/apr
[root@os11728 apr-1.4.5]# make
[root@os11728 apr-1.4.5]# make install
[root@os11728 apr-1.4.5]# cat /etc/ld.so.conf
[root@os11728 apr-1.4.5]# echo /usr/local/apr/lib >> /etc/ld.so.conf
*********安装apr-util
[root@os11728 src]# wget http://mirror.bjtu.edu.cn/apache//apr/apr-util-1.3.12.tar.gz
[root@os11728 src]# tar -zxvf apr-util-1.3.12.tar.gz
[root@os11728 src]# cd apr-util-1.3.12
[root@os11728 apr-util-1.3.12]# ./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr
[root@os11728 apr-util-1.3.12]# make
[root@os11728 apr-util-1.3.12]# make install
[root@os11728 apr-util-1.3.12]# echo /usr/local/apr-util/lib >> /etc/ld.so.conf
[root@os11728 apr-util-1.3.12]# ldconfig -v
1.1. 安装基本组件(libxml、openssl)
[root@os11728 src]# yum check-update
[root@os11728 src]# yum -y update
[root@os11728 src]# yum clean packages
[root@os11728 src]# yum -y install libxml* openssl openssl-devel
1.2. 安装 sqlite
[root@os11728 src]# wget http://www.sqlite.org/sqlite-autoconf-3070800.tar.gz
[root@os11728 src]# tar -zxvf sqlite-autoconf-3070800.tar.gz
[root@os11728 src]# cd sqlite-autoconf-3070800
[root@os11728 sqlite-autoconf-3070800]# ./configure –prefix=/usr/local/sqlite
[root@os11728 sqlite-autoconf-3070800]# make
[root@os11728 sqlite-autoconf-3070800]# make install
1.3. 安装 neon
(不需要支持http协议可以略掉此安装)
[root@os11728 src]# wget http://www.webdav.org/neon/neon-0.29.6.tar.gz
[root@os11728 src]# tar -zxvf neon-0.29.6.tar.gz
[root@os11728 src]# cd neon-0.29.6
[root@os11728 neon-0.29.6]# ./configure –prefix=/usr/local/neon –with-ssl=openssl
[root@os11728 neon-0.29.6]# make
[root@os11728 neon-0.29.6]# make install
1.4. 安装Subversion
[root@os11728 src]# wget http://ftp.cuhk.edu.hk/pub/packages/apache.org/subversion/subversion-1.7.5.tar.gz
[root@os11728 src]# tar -zxvf subversion-1.7.5.tar.gz
[root@os11728 src]# cd subversion-1.7.5
[root@os11728 src]# mkdir /usr/local/src/subversion-1.7.5/sqlite-amalgamation
[root@os11728 src]# cp /usr/local/src/sqlite-autoconf-3070800/sqlite3.c /usr/local/src/subversion-1.7.5/sqlite-amalgamation/sqlite3.c
[root@os11728 subversion-1.7.5]# ./configure –prefix=/usr/local/subversion –with-apxs=/usr/local/apache2/bin/apxs –with-apr=/usr/local/apache2 –with-apr-util=/usr/local/apache2 –with-ssl –with-zlib=/usr/local/zlib –enable-maintainer-mode –without-berkeley-db –enable-mod-activation –with-neon=/usr/local/neon –enable-shared
[root@os11728 subversion-1.7.5]# make clean
[root@os11728 subversion-1.7.5]# make
[root@os11728 subversion-1.7.5]# make install
在编译安装subvision时,提示configure: error: Subversion requires SQLite,原因是需要依赖Sqlite。
解决方法:下载sqlite-3.6.13 ,解压后,进入sqlite目录,复制sqlite3.c到subvision源码文件sqlite-amalgamation目录下,如果没有sqlite-amalgamation目录,手动新建一个即可。
在make subvision时,出现以下错误提示:
/usr/local/src/neon-0.29.6/src/ne_auth.c:781: undefined reference to `ne__ntlm_destroy_context’
/usr/local/src/neon-0.29.6/src/ne_auth.c:785: undefined reference to `ne__ntlm_create_context’
collect2: ld returned 1 exit status
make: *** [subversion/libsvn_ra_neon/libsvn_ra_neon-1.la] Error 1
解决方法:修改/usr/local/src/neon-0.29.6/src/Makefile,将CFLAGS = -g -O2 -prefer-pic 改成 CFLAGS = -fPIC -g -O2,然后重新编译neon,接着再重新编译subversion即可。
添加Subversion的环境变量
[root@os11728 subversion-1.7.5]# vi /etc/profile
在最后加上如下一行代码:
将其打开把
export PATH=$PATH:/usr/local/subversion/bin
这句放在“export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC”的上一行
立即生效环境配置,不需要重启,用下命令:
[root@os11728 subversion-1.7.5]# . /etc/profile
测试SVN是否安装成功:
[root@os11728 ~]#svn –version
显示以下信息:
svn: /usr/lib/libz.so.1: no version information available (required by /usr/local/subversion/lib/libsvn_delta-1.so.0)
svn, version 1.7.1 (r1186859)
compiled Oct 25 2011, 11:24:55
Copyright (C) 2011 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository access (RA) modules are available:
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
- handles ‘http’ scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
- with Cyrus SASL authentication
- handles ‘svn’ scheme
* ra_local : Module for accessing a repository on local disk.
- handles ‘file’ scheme
表明安装成功,但出现了错误提示:svn: /usr/lib/libz.so.1: no version information available (required by /usr/local/subversion/lib/libsvn_delta-1.so.0)
这是libsvn_delta-1.so.0依赖的库/usr/lib/libz.so.1不可用导致的。错误追踪:
[root@www ~]# cd /usr/lib
[root@www lib]# ll libz*
-rwxr-xr-x 1 root root 92598 Jan 10 2007 libz.a
lrwxrwxrwx 1 root root 13 Apr 20 2010 libz.so -> libz.so.1.2.3
lrwxrwxrwx 1 root root 13 Oct 13 14:45 libz.so.1 -> libz.so.1.2.3
-rwxr-xr-x 1 root root 75028 Jan 10 2007 libz.so.1.2.3
[root@www lib]# ldd libz.so.1.2.3
linux-gate.so.1 => (0x00d8f000)
libc.so.6 => /lib/libc.so.6 (0x00c0f000)
/lib/ld-linux.so.2 (0x00bec000)
从上可以看到libz.so.1软链接到libz.so.1.2.3,libz.so.1.2.3是zlib-1.2.3生成的库,该库可能已被删除,而我已安装的zlib-1.2.5,见:
[root@www lib]# cd /usr/local/zlib/lib
[root@www lib]# ls
libz.a libz.so libz.so.1 libz.so.1.2.5 pkgconfig
[root@www lib]# ll libz*
-rw-r–r– 1 root root 101462 Oct 13 14:43 libz.a
lrwxrwxrwx 1 root root 13 Oct 13 14:43 libz.so -> libz.so.1.2.5
lrwxrwxrwx 1 root root 13 Oct 13 14:43 libz.so.1 -> libz.so.1.2.5
-rwxr-xr-x 1 root root 95004 Oct 13 14:43 libz.so.1.2.5
[root@www lib]# ldd libz.so.1.2.5
linux-gate.so.1 => (0x002f8000)
libc.so.6 => /lib/libc.so.6 (0×00134000)
/lib/ld-linux.so.2 (0x00bec000)
故可将/usr/lib/libz.so.1重新链接至/usr/local/zlib/lib/libz.so.1.2.5,如下:
[root@www lib]# cp /usr/lib/libz.so.1 /usr/lib/libz.so.1.bak
[root@www lib]# cp /usr/local/zlib/lib/libz.so.1.2.5 /usr/local/zlib/lib/libz.so.1.2.5.bak
[root@www lib]# ln -fs /usr/local/zlib/lib/libz.so.1.2.5 /usr/lib/libz.so.1
再次查看SVN版本信息:
[root@www lib]# svn –version
svn, version 1.7.1 (r1186859)
compiled Oct 25 2011, 11:24:55
Copyright (C) 2011 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository access (RA) modules are available:
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
- handles ‘http’ scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
- with Cyrus SASL authentication
- handles ‘svn’ scheme
* ra_local : Module for accessing a repository on local disk.
- handles ‘file’ scheme
错误提示不见了,问题解决。^_^
1.5. Subversion之Apache HTTP Server 配置
修改Apache HTTP Server 配置
[root@os11728 ~]# vi /usr/local/apache2/conf/httpd.conf
(1)增加以下模块:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
(2)增加SVN的虚拟主机,设定 Subversion 文件库路径
<VirtualHost *:80>
ServerName svn.finet230.cn
DocumentRoot /usr/local/svnroot
#bovin.phang@gmail.com SiteLogs
CustomLog “|/usr/local/sbin/cronolog /var/www/logs/svn_finet230_cn/access_%Y%m%d.log” combined
ErrorLog “|/usr/local/sbin/cronolog var/www/logs/svn_finet230_cn/error_%Y%m%d.log”
<Directory “/usr/local/svnroot”>
Options -Indexes FollowSymLinks Includes
AllowOverride All
Order allow,deny
#Allow from all
deny from all
</Directory>
<Location /svn>
#告诉Aapche加载svn模块来处理请求
DAV svn
#指定SVN版本库父目录
SVNParentPath “/usr/local/svnroot/”
#连接框提示
AuthName “Subversion repository”
#权限配置文件
AuthzSVNAccessFile “/usr/local/apache2/conf/dav_svn.authz”
#采用何种认证
Require valid-user
Satisfy Any
# The following is Basic authentication setting
#身份验证方式(连接类型设置)
AuthType Basic
#用户配置文件(身份验证数据存放的路径及文件)
AuthUserFile “/usr/local/apache2/conf/dav_svn.passwd”
#<LimitExcept>
#Require valid-user
#</LimitExcept>
</Location>
</VirtualHost>
#其中authfile是通过“htpasswd [–c] /usr/local/apache2/conf/dav_svn.passwd username password”来创建的
#”Require valid-user”告诉apache在authfile中所有的用户都可以访问。如果没有它,
#则只能第一个用户可以访问新建库
#顺便把你的端口号也改一下,要不然可能&你以前的Apache的端口冲突
#其中AuthzSVNAccessFile指定了文件库访问政策文件,Require valid-use表示只有经过认证的用户才可以访问, Satisfy Any表示允许匿名访问(要与后面提到的*参数配套使用),AuthUserFile用来指示使用htpasswd创建的密码文件的位置。
(3)用Apache的htpasswd指令生成用户名和密码
[root@os11728 ~]# htpasswd -cm /usr/local/apache2/conf/dav_svn.passwd bovin
[root@os11728 ~]# htpasswd -m /usr/local/apache2/conf/dav_svn.passwd bovin
[root@os11728 ~]# htpasswd -m /usr/local/apache2/conf/dav_svn.passwd server
(3)用Apache的htpasswd指令删除用户名和密码
[root@os11728 ~]# htpasswd -D /usr/local/apache2/conf/dav_svn.passwd bovin
htpasswd语法
htpasswd [ -c ] [ -m ] [ -D ] passwdfile username
htpasswd -b [ -c ] [ -m | -d | -p | -s ] [ -D ] passwdfile username password
htpasswd -n [ -m | -d | -s | -p ] username
htpasswd -nb [ -m | -d | -s | -p ] username password
top
选项
-b
使用批处理方式。也就是直接从命令行获取密码而不进行提醒。使用这个选项需要特别注意,因为命令行中的密码是清晰可见的。
-c
创建passwdfile文件。如果passwdfile已经存在,那么将被清空并改写。该选项不能和 -n 同时使用。
-n
在标准输出上显示结果而不是更新文件。用于生成可以为Apache非文本输出存储格式所接受的密码记录。这个选项改变了命令行语法,因为passwdfile参数(通常是第一个)被忽略了。该选项不能和 -c 同时使用。
-m
使用MD5加密密码。在Windows, Netware, TPF上这是默认方法。
-d
使用crypt()对密码进行加密。在Windows, Netware, TPF以外的平台上这是默认方法。虽然有可能在所有的平台上被htpasswd支持,但是在Windows, Netware, TPF上,该方法不能被httpd所支持。
-s
使用 SHA 对密码进行加密。这种方法易于通过LDAP目录交换格式和Netscape server进行交换。
-p
使用明文密码(不加密)。虽然htpasswd在所有平台上都支持这种方法,但是httpd只能在Windows, Netware, TPF上支持这种方法。
-D
如果username存在于passwdfile中,则删除该用户。
passwdfile
包含用户名和密码的文本文件的名称。如果使用了 -c 选项,若文件已存在则更新它,若不存在则创建它。
username
在passwdfile中添加或更新记录。若username不存在则添加一条记录,若存在则更新其密码。
password
将被加密并存储到文件中的明文密码。必须和 -b 同时使用。
(4)编辑/usr/local/apache2/conf/dav_svn.authz文件
[root@os11728 ~]# vi /usr/local/apache2/conf/dav_svn.authz
添加以下内容:
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups]
g_vip = server
g_manager = bovin
g_usr = seal,xieyan,yangdandan,sunny
g_usr_read = prolove
g_all = @g_vip,g_manager,g_user
[/]
@g_vip = rw
@g_manager = rw
[bovin:/]
@g_manager = rw
[finet_tpl:/]
@g_vip = rw
@g_manager = rw
@g_usr = rw
@g_usr_read = r
*=
重启apache。
(5)SVN检出测试
[root@os11728 ~]# mkdir bovin
[root@os11728 ~]# svn checkout http://svn.finet230.cn/svn/bovin bovin #将svn.finet230.cn改为你的域名或IP
配置svn+apache服务器时,在导入或提交时,如果是unix、linux、mac os x等系统可能遇到类似这样的权限问题:
svn: 提交失败(细节如下):
svn: Can’t open file ‘/usr/local/svnroot/bovin/db/txn-current-lock’: Permission denied
或者
svn: 提交失败(细节如下):
svn: Can’t create directory ‘/usr/local/svnroot/bovin/db/transactions/1-2.txn’: Permission denied
这个主要原因:在svnadmin create时是root身份,所以,mod_dav_svn就没有write权限等。
解决办法:
修改目录/usr/local/svnroot的权限属性
[root@os11728 ~]# chown -R daemon /usr/local/svnroot
[root@os11728 ~]# chmod -R 755 /usr/local/svnroot
再试就ok~
1.6. svnsync双机备份
参阅:http://www.scmbbs.com/cn/svntp/2007/11/svntp4.php
使用svnsync备份很简单,步骤如下:
1) 在备份机上创建一个空库:
[root@os11728 ~]# svnadmin create /usr/local/svnroot/bovin
[root@os11728 ~]# chown -R daemon /usr/local/svnroot/bovin
[root@os11728 ~]# chmod -R 755 /usr/local/svnroot/bovin
2)更改该库的钩子脚本pre-revprop-change(因为svnsync要改这个库的属性,也就是要将源库的属性备份到这个库,所以要启用这个脚本):
[root@os11728 ~]# cd /usr/local/svnroot/bovin/hooks
[root@os11728 ~]# cp pre-revprop-change.tmpl pre-revprop-change
[root@os11728 ~]# chmod 755 pre-revprop-change
[root@os11728 ~]# vi pre-revprop-change
将该脚本后面的三句注释掉,或者干脆将它弄成一个空文件。
3)初始化,此时还没有备份任何数据:
[root@os11728 ~]# svnsync init file:///usr/local/svnroot/bovin/ http://192.168.1.230/svn/bovin/ –allow-non-empty
语法是:svnsync init {你刚创建的库url} {源库url}
注意本地url是三个斜杠的:///
4)开始备份(同步):
[root@os11728 ~]# svnsync sync file:///usr/local/svnroot/bovin/
5)建立同步脚本
备份完毕后,建立钩子脚本进行同步。在源库/hooks/下建立/修改post-commit脚本,在其中增加一行,内容如下:
svnsync sync –non-interactive file:///usr/local/svnroot/bovin/
常见问题解决:
问题一:
svnsync init file:///usr/local/svnroot/bovin/ http://192.168.1.230/svn/bovin/
从目标版本库获得锁失败,当前被“rhel500:284ff204-e16b-457f-933c-03d1c26c314b”持有
svnsync: Couldn’t get lock on destination repos after 10 attempts
解决方法,执行以下命令:
svn propdel svn:sync-lock –revprop -r 0 http://192.168.1.230/svn/bovin/
删除属性“svn:sync-lock”于版本库版本 0
问题二:
[root@www conf]# sh /usr/local/svnroot/Bovin/hooks/post-commit
subversion/svnsync/main.c:1384: (apr_err=22)
subversion/svnsync/main.c:1298: (apr_err=22)
svnsync: E000022: Destination HEAD (120) is not the last merged revision (119); have you committed to the destination without using svnsync?
解决方法,执行以下命令:
[root@www conf]# svn proplist -v –revprop -r0 file:///usr/local/svnroot/Bovin/
Unversioned properties on revision 0:
svn:sync-from-uuid
91184778-99fa-495a-80f9-2b4ba10bcf3d
svn:sync-last-merged-rev
119
svn:sync-last-merged-revision
120
svn:date
2011-05-24T05:53:13.406401Z
svn:sync-from-url
svn://192.168.1.230/Bovin
[root@www conf]# svn propset –revprop -r0 svn:sync-last-merged-revision 120 file:///usr/local/svnroot/Bovin/
property ‘svn:sync-last-merged-revision’ set on repository revision 0
[root@www conf]# svn propset –revprop -r0 svn:sync-last-merged-rev 120 file:///usr/local/svnroot/Bovin/
property ‘svn:sync-last-merged-rev’ set on repository revision 0
[root@www conf]# sh /usr/local/svnroot/Bovin/hooks/post-commit
问题三:
[root@www conf]# /usr/local/subversion/bin/svnsync sync file:///usr/local/svnroot/bovin/
Failed to get lock on destination repos, currently held by ‘www.finet85.cn:834e6569-67ad-472f-a745-25792c632a02′
Failed to get lock on destination repos, currently held by ‘www.finet85.cn:834e6569-67ad-472f-a745-25792c632a02′
svnsync: Couldn’t get lock on destination repos after 10 attempts
这个时候可能属性被锁了。
解决方法,执行以下命令:
[root@www conf]# svn propdel svn:sync-lock –revprop -r0 file:///usr/local/svnroot/bovin/
删除成功后,再试一遍基本就可以了。
如果反复操作都是同样错误的话,有可能是你的svn安装的有问题,重新安装一遍就好了,俺就是这样。
从目标版本库获得锁失败,当前被“rhel500:284ff204-e16b-457f-933c-03d1c26c314b”持有
svnsync: Couldn’t get lock on destination repos after 10 attempts
一些备忘:
1.客户机访问
客户机的访问方法与服务器的运行方式有直接关系
window客户机:
1) 服务器以http方式运行
安装完TortoiseSVN-1.1.1-UNICODE_svn-1.1.1.msi后,在你想工作的目录下点击右键,执行checkout,输入http://svn服务器ip/svn/repository即可。
2) 服务器以svnserve方式运行
同上的区别只是URL of repository变为 svn://svn服务器ip/home/mysvn
或者 svn+ssh://svn服务器ip/home/mysvn
(注意不是//svn服务器ip//svn/repository)
linux客户机:
1) 服务器以http方式运行
执行 #svn checkout http: //svn服务器ip/svn/repository
2) 服务器以svnserve方式运行
执行 #svn checkout svn://svn服务器ip/home/mysvn
或者 #svn checkout svn+ssh://svn服务器ip/home/mysvn
2.客户认证机制
这与服务器的运行方式有关
服务器以svnserve方式运行
默认下客户可以以匿名方式通过svn://方式任意访问档案库,为了限制其权限,比如只允许读操作,可以通过修改档案库conf子目录中的svnseve.conf文件来实现。
#vi /home/mysvn/conf/svnseve.conf
修改[general]字段下内容为:
anon-access = read
如果设为anon-access = none,则匿名用户不可以通过svn://方式访问档案库
为了实现用户认证,我们一般采用svn+ssh://访问机制。
首先在svnseve.conf文件设置anon-access = none禁止匿名用户通过svn://方式访问档案库
在其后加入auth-access = write一行
auth-access 是限制有援权的使用者(使用svn+ssh:// 来登入) 的存取权限,我们设为是可以读写。
当用户通过svn+ssh://访问时,服务器会自动启动ssh认证机制,要求用户输入密码,对于window用户来说还需要安装第三方软件openssh,才可以采用这种机制
服务器以http方式运行
比如我们想给 Sally 与 Harry 送交存取档案库的权限. 首先, 我们必须把它们加入到密码档案.
# ### 第一次: 以 -c 建立档案
# htpasswd -c /etc/svn-auth-file harry
New password: *****
Re-type new password: *****
Adding password for user harry
# htpasswd /etc/svn-auth-file sally
New password: *******
Re-type new password: *******
Adding password for user sally
#
接着,在/usr/local/apache2/conf/httpd.conf的加入:
<Location /svn/repository >
DAV svn
SVNPath /home/mycvs
AuthType Basic
AuthName “Subversion repository”
AuthUserFile /etc/svn-auth-file
Require valid-user
</Location>
重新启动 Apache后,如果有人要访问SVN服务器,系统会要求他输入用户名和密码。只有输入Sally 或Harry的用户名和相应的密码,才可以对档案库进行修改和访问
3.添加用户
打开/conf/目录,打开svnserve.conf找到一下两句:
# [general]
# password-db = passwd
去之每行开头的#,其中第二行是指定身份验证的文件名,即passwd文件
同样打开passwd文件,将
# [users]
# harry = harryssecret
# sally = sallyssecret
这几行的开头#字符去掉,这是设置用户,一行一个,存储格式为“用户名 = 密码”,如可插入一行:admin = admin888,即为系统添加一个用户名为admin,密码为admin888的用户
4. 如果linux的登录用户名密码都和svn的其中一个用户名密码相同时,在checkout的时候不会要求输入用户名密码直接就可以checkout出来。比如:linux有个用户wooin,svn也有一个用户wooin,并且密码都是一样的,当用wooin登录linux后,执行checkout,可以直接提取出源码文件,不用输入认证信息。
5. 在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用来管理仓库访问权限的。
6. svn服务器设置有两种方式:http 和 svnserve。这里介绍的是http方法
7. 在/etc/profile的结尾设置一些svn启动时要做的工作 # start apache server for svn
/usr/sbin/apachectl start
export SVN_EDITOR=vi
8. 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
发表评论
-
checking build system type... x86_64-unknown-linux-gnu
2015-11-16 12:16 2012sudo yum -y install make gcc gc ... -
svn更换新仓库地址, 以及UUID不同的解决方式
2015-02-27 09:18 6164shell 命令: svn relocate svn://s ... -
linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小
2015-02-15 23:54 587Linux下最常用的打包程 ... -
用 Apache 和 Subversion 搭建安全的版本控制环境
2015-02-15 18:02 503作为新一代的开源版本 ... -
Linux SVN Server 相关网址
2015-02-15 00:09 576SVN服务器从Windows迁移到LInux: http:// ... -
Linux SVNServer搭建,并支持https访问
2015-02-15 00:02 11641.Subversion安装过程 参考http://blog. ... -
eclipse svn 切换用户
2015-02-14 20:31 797在eclipse中经常用到用svn ... -
SVN authz 配置详解 转载
2015-02-14 15:35 779我们对项目根目录做了限制,该目录只允许arm事业部的经理才能修 ... -
linux服务器,svn认证失败,配置问题,防火墙等等
2015-02-14 15:22 1096之前自己还真没设置过SVN,今天亲自动手,错误百出,真是够头 ... -
Linux 搭建SVN 服务器
2015-02-13 15:55 581一. SVN 简介 S ...
相关推荐
redhat 9.0下,subversion-1.6.3的安装配置 php+postgressql+mysql+gd+apache+memcache+eAccelerator+zend optimizer的安装配置
本文实例讲述了Linux环境(CentOS6.7 64位)下安装subversion1.9.5的方法。分享给大家供大家参考,具体如下: 安装环境以及软件版本如下。 subversion使用1.9.5版本,服务器使用阿里云服务器,CentOS6.7(64位)。 1....
在linux环境下安装svn的软件包. apr-1.4.6.tar.gz apr-util-1.4.1.tar.gz expat-2.1.0.tar.gz neon-0.29.6.tar.gz sqlite-autoconf-3071100.tar.gz subversion-1.7.4.tar.gz zlib-1.2.5.1.tar.gz
linux环境svn安装文件, 解压后包含2个所需文件 subversion-1.6.1.tar.gz 和 subversion-deps-1.6.1.tar.gz ,前者是 svn1.6.5 的源文件,后者是编译时可能需要用到的包
linux下搭建SVN环境,亲手尝试过,才敢放到csdn上,注意,要把 subversion-deps-1.4.5.tar subversion-1.4.5.tar 解压到同一个目录下面,
linux环境搭建svn服务器所需安装包,包括apr-1.7.0.tar.gz, apr-util-1.6.1.tar.gz, expat-2.1.0.tar.gz, openssl-1.0.2l.tar.gz, sqlite-autoconf-3330000.tar.gz, subversion-1.9.4.tar.gz, zlib-1.2.11.tar...
在linux环境下搭建subversion服务器,并整合apache,设置权限
环境 SVN版本:subversion-1.6.6 操作系统:CentOS 5.4 Linux Apache: Apache 2.2.14 当然,版本不同安装配置也几乎是一样的
apr-1.7.0.tar.gz,apr-util-1.6.1.tar.gz,expat_2.0.1.orig.tar.gz,sqlite-autoconf-3330000.tar.gz,subversion-1.14.0.tar.gz,zlib-1.2.11.tar.xz
本文将教大家如何在Linux环境安装一个SVN服务器,并且配置成http可以访问的模式,也是浏览器可以直接访问。 背景 我的Linux机器环境是CentOS release 6.8 (Final)。 安装SVN Server 安装一个全新的SVN...
需要注意的是如果该文件是在windows下创建的,在拷贝到Ubuntu或Linux环境下需要转换格式,可使用dos2unix进行转换。 2.安装Authen::SASL模块 因为Perl通过SMTP发送邮件,其中SMTP验证的时候需要Authen::SASL模块。 ...
工具软件,主要是用于安装在linux环境下面的,该版本较为稳定
1 环境: 服务器放在redhatAS4.0上,客户端在windows 2000。 2 软件包 2.1 服务器: subversion-1.3.2-1.rh90.i386.rpm。可能还会用到其他依赖组件,在我的配置中要用到:apr-0.9.5- 0.2.i386.rpm , ...
搭建svn服务器,客户端平台使用的软件,可用于Linux,windows环境。安装方法不比说。自己搜去
本文主要总结了在Ubuntu10下常用Java Web应用软件的安装,特别是LNMJ Web(Linux+Nginx+Mysql+Java Tomcat)架构和LAMJ Web(Linux+Apache+Mysql+Java Tomcat)架构下的软件安装。为进一步配置和实现LNMJ和LAMJ架构(负载...
包含svn linux版服务器端,客户端软件和安装教程 subversion-1.4.3.tar.bz2 subversion-1.6.1.tar.gz subversion-deps-1.4.3.tar.bz2 ...linux下svn客户端安装及环境配置.docx 本人是在redhat6.1下面配置成功。
SVN是subversion的缩写,是一个开放源代码的版本控制系统,本文介绍了安装SVN服务的环境要求,介绍了centos7环境下安装SVN服务的步骤,介绍了svn Edge访问规则配置,svn服务器配置和window客户端的安装及配置。
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。
第4章 linux环境 114 4.1 程序参数 114 4.1.1 getopt 116 4.1.2 getopt_long 118 4.2 环境变量 120 4.2.1 环境变量的用途 122 4.2.2 environ变量 122 4.3 时间和日期 123 4.4 临时文件 129 4.5 用户信息 ...