内容综合:
http://lxsym.blog.51cto.com/1364623/739864
http://www.cnblogs.com/dengqiye/archive/2009/07/11/1521464.html
两篇文章而成,感谢两位作者辛勤付出!
SVN环境安装
源码下载
wget http://archive.apache.org/dist/httpd/httpd-2.2.19.tar.bz2
wget http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.bz2
wget http://subversion.tigris.org/downloads/subversion-1.6.17.tar.gz
把文件全部上传到SVN服务器的/tmp目录
1、安装apr
bzip2 -d httpd-2.2.19.tar.bz2
cd /tmp/httpd-2.2.19.tar.bz2/srclib/apr
./configure
make
make install
2、安装apr-util
cd ../apr-util
./configure --with-apr=/usr/local/apr
make
make install
3、安装 apache
cd ../..
./configure --prefix=/usr/local/apache2.2.9 --enable-dav --enable-so --enable-maintainer-mode --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config #--prefix表示把apache安装在指定目录
make
make install
4、安装subversion
tar zxvf subversion-1.6.17.tar.gz
bgzip2 subversion-deps-1.6.6.tar.bz2 -d
tar xvf subversion-deps-1.6.6.tar
tar xvf sqlite-amalgamation-3.6.13.tar
#解决configure: maintainer-mode: adding GCC warning flags ,configure: error: –with-zlib requires an argument.错误
cd /tmp/subversion-1.6.6/zlib
./configure --shared
make
#解决configure: error: Subversion requires SQLite 错误
cd /tmp/subversion-1.6.17
mkdir sqlite-amalgamation/
cd sqlite-amalgamation/
cp /tmp/sqlite-3.6.13/sqlite3.c .
./configure --prefix=/opt/svn --with-apxs=/usr/local/apache2.2.9/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr
#报如下BDB WARNING:忽略此警告
make
make install
至此,安装基本完毕,再配置下就可以使用了
5. 配置subversion
mkdir -p /data/svn
创建文件
touch svn-access-file
touch svn-auth-file
修改环境变量PAHT:PATH=/usr/local/apache2.2.9/bin:/opt/svn/bin:$PATH:$HOME/bin, 确保程序路径准确
cd /data/svn
svnadmin create /data/svn/ydzs
cd /usr/local/apache2.2.9/conf
6、在apache中配置SVN
vi /usr/local/apache2.2.9/conf/httpd.conf
① 如果你看到如下两句,说明安装是成功的
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
如果有下面一句就用#注释掉
#LoadModule foo_module modules/mod_foo.so
② 定义apache访问svn配置:
<Location /svn>
DAV svn
# SVNPath /opt/svndata
SVNParentPath /data/svn
AuthzSVNAccessFile /data/svn/svn-access-file
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /data/svn/svn-auth-file
Require valid-user
</Location>
7. 建立本地访问控制文件
/usr/local/apache2.2.9/bin/htpasswd /data/svn/svn-access-file 用户名
然后输入密码即可,默认是MD5加密的
8. 建立本地项目控制文件
[groups]
#<groupname1>=<username1>,<username2>
admin=username
#[<versionLib>:projectName/directory]
#@<groupsname>=<authorities>
#<username>=<authorities>
[/]
@admin = rw #指定用户组成员可以读写根目录所有应用
[repos:/abc/aaa]
username1= rw #指定用户username1可以读写:/abc/aaa目录的文件
9、测试连接
① 启动apache
/usr/local/apache2.2.9/bin/apachectl start
② 打开浏览器,输入http://192.168.1.107/svn/ydzs #本例服务器ip是192.168.1.107
使用刚才创建的权限用户名与密码登录即可访问
注意:在你上传文件的时候可能会有如下权限不足的提示
Permission denied
svn: Commit failed (details follow):
svn: Can't create directory '/opt/svndata/repos/db/transactions/0-1.txn': Permission denied
这是因为apache在线程用户没有权限访问svn的仓库,两者分别属于不同的用户者
本例apache属于daemon拥有者,而svn仓库属于svn拥有者
解决方法:
chown -R daemon /opt/svndata/repos
chmod -R 755 /opt/svndata/repos
重启下apache:
/usr/local/apache2.2.9/bin/apachectl stop
/usr/local/apache2.2.9/bin/apachectl start
新增工程:
vi /usr/local/apache2.2.9/conf/httpd.conf
增加:
<Location /svn_sh>
DAV svn
# SVNPath /opt/svndata
SVNParentPath /data/svn/工程目录名
AuthzSVNAccessFile /data/svn/svn-access-file
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /data/svn/svn-auth-file
Require valid-user
</Location>
svnadmin create /data/svn/工程目录名
chmod -R 777 /data/svn/工程目录名