我安装的相关包:
httpd-2.2.11.tar.gz
subversion-1.5.5.tar.gz
subversion-deps-1.5.5.tar.gz
也可以到相应网站查看下载最新包
下载subversion
http://subversion.tigris.org/getting.html
下载apache
http://httpd.apache.org/download.cgi
创建subversion目录
mkdir /opt/subversion
(不一定放在opt目录)
把httpd-2.2.11.tar.gz、subversion-1.5.5.tar.gz、subversion-deps-1.5.5.tar.gz放在subversion目录下
cp httpd-2.2.11.tar.gz /opt/subversion
cp subversion-1.5.5.tar.gz /opt/subversion
cp subversion-deps-1.5.5.tar.gz /opt/subversion
cd /subversion/
解压安装包
tar zxvf httpd-2.2.11.tar.gz
tar zxvf subversion-deps-1.5.5.tar.gz
tar zxvf subversion-1.5.5.tar.gz
源码包安装
cd /opt/subversion/httpd-2.2.11
./configure --prefix=/usr/local/apache2 --enable-so --enable-dav
make && make install
(此时检查80端口是否被使用,默认情况下apache监听80
如果80已使用可以修改apache的配置文件,具体位置/usr/local/apache2/conf/httpd.conf
找到Listen 80 一行,修改成其他端口即可,例Listen 8080)
启动apache
/usr/local/apache2/bin/apachectl start
测试apache服务器是否启动
在浏览器中输入安装的服务器ip+port 地址,如果出现“It Works!”字样则表示apache安装成。
/opt/subversion/subversion-1.5.5/configure --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apache2/ --with-apr-util=/usr/local/apache2/ --prefix=/usr/local/subversion --with-ssl --with-zlib --enable-maintianer-mode
make && make install
请确保命令是否正确,直接复制粘贴的话也不能确保一定正确,我这里就遇到了粘贴后命令漏了几个”-“的问题。调试了不少时间才发现。
(这里还需要注意linux版本,我的安装环境是fedora7 x86_64。不能正常编译安装,出现了一些未知的异常,未能解决。所以最终还是通过yum命令来安装subversion,也可以试试用rpm安装包。)
建立库文件夹 具体路径 /subversion/repository
建立版本库test
svnadmin create /subversion/repository/test
导入项目到版本库
svn import myproject file:///subversion/repository/test/ -m "initial import"
成功后会看到一个committed revision 1. 的提示。
把/subversion/repository/test目录下的所有文件设置成777权限
例如:
cd /subversion/repository/test/
chmod -R 777 *
Apache的HTTP服务器是一个Subversion可以利用的“重型”网络服务器,通过一个自定义模块,httpd可以让Subversion版本库通过WebDAV/DeltaV协议在客户端前可见,WebDAV/DeltaV协议是HTTP 1.1的扩展(见http://www.webdav.org/来 查看详细信息)。这个协议利用了无处不在的HTTP协议是广域网的核心这一点,添加了写能力—更明确一点,版本化的写—能力。结果就是这样一个标准化的健 壮的系统,作为Apache 2.0软件的一部分打包,被许多操作系统和第三方产品支持,网络管理员也不需要打开另一个自定义端口。这样一个Apache-Subversion服务器具备了许多svnserve没有的特性,但是也有一点难于配置,灵活通常会带来复杂性。
注意:使用yum安装httpd的话,安装目录都在/etc/之下
为了让你的版本库使用HTTP网络,你基本上需要两个包里的四个部分。你需要Apache httpd2.0和包括的mod_dav DAV模块,Subversion和与之一同分发的mod_dav_svn文件系统提供者模块,如果你有了这些组件,网络化你的版本库将非常简单,如:
• 配置好httpd 2.0,并且使用mod_dav启动,
• 为mod_dav安装mod_dav_svn插件,它会使用Subversion的库访问版本库,并且
• 配置你的httpd.conf来输出(或者说暴露)版本库。
首先,查看httpd目录下的module文件夹,看看是否有mod_dav_svn.so文件。
如果没有则先把mod_dav_svn.so插件下载回来放在此目录下,一般情况下apache
httpd目录下的conf文件夹,打开httpd.conf文件。
确保已经存在下面一行,若没有就添加上去。
LoadModule dav_module modules/mod_dav.so
然后把下面一行添加进去,确保服务启动
LoadModule dav_svn_module modules/mod_dav_svn.so
加上DAV配置
<Location /svn>
DAV svn
SVNParentPath /subversion/repository
</Location>
保存退出。
重启apache
访问
http://localhost/svn/test/
测试访问成功
最简单的客户端认证方式是通过HTTP基本认证机制,简单的使用用户名和密码来验证一个用户所自称的身份,Apache提供了一个htpasswd工具来管理可接受的用户名和密码,这些就是你希望赋予Subversion特别权限的用户。
首先,再打开httpd的httpd.conf文件,在里面加上以下一行,启动安全插件。
LoadModule authz_svn_module modules/mod_authz_svn.so
然后DAV的配置修改如下
<Location /svn>
DAV svn
SVNParentPath /subversion/repository
AuthzSVNAccessFile /subversion/repository/conf/authz
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile /subversion/repository/conf/passwd
Satisfy Any
Require valid-user
</Location>
htpasswd -cm /subversion/repository/conf/passwd 用户名
参数c代表创建文件
修改用户或者增加用户的话把c去掉即可,例:
htpasswd -m /subversion/repository/conf/passwd 用户名
vi /subversion/repository/conf/authz
开始编辑权限文件,内容例子如下
#[groups]标记存放用户组,等号后为用户
[groups]
developers= kenny,cat
managers= xz
#表示managers组用户拥有任何项目rw权限
[/]
@managers=rw
#配置test仓库的访问权限,例子为任何人可以匿名访问并且只有developers组能修改
[test:/]
#*代表任意访问者,匿名。r代表可读,w代表可写。
* = r
# @号加组名代表此组用户追加的权限
@ developers = rw
#配置source仓库下的document s文件夹访问权限
[source:/ document s/]
# 等号后什么都不写代表拒绝访问。没任何权限
* =
#除了组,也可以灵活的为人设置权限
kenny=rw
Apache提供多种验证方法,剩下的还例如有SSL和MySQL验证等方式。此处我仅仅用了一个简单的http认证方式。有需要的朋友可以另行查看一下资料。