CentOS下部署SVN服务器笔记(更新)
2011年4月7日更新验证subversion-1.6.6
所需软件包:
subversion-1.6.6.tar.gz
subversion-deps-1.6.6.tar.gz
sqlite-amalgamation-3.6.13.tar.gz
Python-2.7.1.tgz
swig-2.0.0.tar.gz
查看是否安装subversion
rpm -qa subversion
卸载subversion
rpm -e subversion-1.4.2-4.el5_3.1
注意:在安装之前先确认你的OS上已经安装了python和swig,如果没有安装的话可以下载source code或rpm包来安装,因为我的OS上只装了python,所以下面还要装下swig.
如果没有安装可下载源码进行编译安装;
tar zxvf Python-2.7.1.tgz
cd Python-2.7.1
./configure --prefix=/usr/local/python/
make
make install
使用下面命令将 python 添加到 /usr/bin 中,并且区别其他版本的 python 执行文件,使它们可以共存
ln /usr/local/python/bin/python /usr/bin/python
安装swig
tar zxvf swig-2.0.0.tar.gz
cd swig-2.0.0
./configure
make && make install
cd ..
编译安装Subversion:
tar zxvf subversion-1.6.6.tar.gz
cd subversion-1.6.6
./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-ssl --with-zlib-dir --enable-maintainer-mode --without-berkeley-db PYTHON=/usr/bin/python --with-swig=/usr/local/bin/swig --enable-shared --enable-static --enable-swig-binding=python --enable-dav --enable-so --enable-maintainer-mode --enable-rewrite
在以上编译过程中可能会出现 configure: error: Subversion requires SQLite
可以http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz 可以下载到最新的Sqlite版本sqlite-amalgamation-3.6.13.tar.gz安装Sqlite3.6.13 tar zxvf sqlite-amalgamation-3.6.13.tar.gz 进入文件夹sqlite-amalgamation找到sqlite3.c将其复制到
subversion-1.6.6/sqlite-amalgamation/sqlite3.c
make
make install
经过上面的步骤mod_dav_svn.so and mod_authz_svn.so将会被copy到/usr/local/apache2/modules/下,
同时在 /usr/local/apache2/conf/httpd.conf下,添加如下2行
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
检查一下是否都正确,如果没有的话可能就要手动加进去
同时执行了上面的make && make install后还要编译安装Subversion SWIG Python bindings
cd subversion-1.6.6
make swig-py
make install-swig-py
可以看到swig-py的install目录是/usr/local/subversion/lib/svn-python.用如下命令讲这个扩展包扩展到python:
echo /usr/local/subversion/lib/svn-python >/usr/lib/python2.4/site-packages/subversion.pth
剩下的就是测试svn的swig-py包是不是正常
python <-- 启动python
>>>import svn.repos //按ctrl+d退出
如果不报错,那就说明OK了.
如果报错,那么检查如下问题:
I. subversion的configure是不是enable了shared和static,是不是带--with-swig;
II. libsvn_swig_py-x.so是否存在于/usr/local/subversion/lib目录;
III. /usr/local/subversion/lib是否已经增加到ld.so.conf文件 (/etc/ld.so.conf)
IV. 请使用ldconfig -v |grep swig来检查是否有swig的下列动态库
libsvn_swig_py-1.so.0 -> libsvn_swig_py-1.so.0.0.0
如果一切正常,这个安装就完成了.安装完成后,运行svnserve --version确认版本为1.4.6
配置svn
最好不要让root用户参与到svn的权限管理和日常的运行和维护工作中来,所以我们建立一个用户(如svn)同时为了处理好权限的问题,我们可以建立一个组(如svnrw),其他希望使用svn的用户加入这个组
在root权限下用下面的命令创建用户和组如果用户组已经存在则可不用创建:
groupadd httpd
useradd httpd -g httpd
passwd httpd
然后切换到用户svn来创建svn仓库,对svn进行配置
选择一个目录位置作为svn仓库的存放位置,在这里用/home/svn作为存放位置
创建版本库目录
mkdir -p /home/svn/my_project
//创建版本库"my_project",默认指定仓库的文件格式为fsfs
/usr/local/subversion/bin/svnadmin create /home/svn/my_project
chown -R httpd:httpd /home/svn
chmod -R g+w home/svn/my_project
chmod g+s home/svn/my_project/db