SVNManager的配置过程详解

1.      安装环境

Apache/Mysql/PHP这些在安装系统的时候安装上就OK,如果没安装在系统里rpm安装上就可以了,下面是我安装apachemysqlphpsubversion以及svnmanager的版本:

Linux AS 4      我虚拟机里面有的,就没有更新到AS5之类最新的系统了

Apache 2.0.52        安装AS4时自带的,如果没有可以下一个AS4带的RPM包安装

Mysql-5.1.19         RPM包安装的,如果缺少什么就自己到网上下载吧

subversion-1.4.6    也是通过现成的RPM包安装的

php-5.2.9                     下载的RPM包安装,需要三个包,下载地址分别为:ftp://ftp.pbone.net/mirror/rpms.famillecollet.com/el4.i386/php-5.2.9-1.el4.remi.i386.rpm

ftp://ftp.pbone.net/mirror/rpms.famillecollet.com/el4.i386/php-cli-5.2.9-1.el4.remi.i386.rpm

ftp://ftp.pbone.net/mirror/rpms.famillecollet.com/el4.i386/php-common-5.2.9-1.el4.remi.i386.rpm

VersionControl_SVN-0.3.1 其实可以通过pear工具从服务器下载自动安装,不过还是自己下了一份,直接拷贝到svnmanager目录下面也可以用

pear-1.4.3              我安装好系统后,有一个自带的,但是版本太老,需要进行更新,方法后面给出

svnmanager-1.05  下载源码,然后直接解压到/var/www/html/下,更名为svnmanager即可,不过配置它的config.php也是很麻烦的,后面介绍

2.      Subversion部署

首先先来部署Subversion,我直接下载了一个RPM包,subversion-1.4.6-1.i386.rpm,运行如下命令即可安装:

#rpm -ivh  subversion-1.4.6-1.i386.rpm

安装过程中可能提示缺少如下包,请自己到网上下载:

apr-0.9.12-2.i386.rpm  

apr-util-0.9.12-1.i386.rpm

subversion-1.4.6-1.i386.rpm

subversion-debuginfo-1.4.6-1.i386.rpm

subversion-devel-1.4.6-1.i386.rpm 

subversion-perl-1.4.6-1.i386.rpm 

subversion-tools-1.4.6-1.i386.rpm 

swig-1.3.25-1.i386.rpm

如果AS4系统里面已经存在某个包的低级版本,请先卸载掉 rpm –e

安装完以后,我们后面装svnmanager要用到的svnsvnadmin等命令都默认安装到/usr/bin目录下了。    

接下来是要做Subversion的系统配置了,有些网上的配置说明中,将svn相关的配置都写到httpd.conf当中,其实直接在/etc/httpd/conf.d下配置subversion.conf就可以了,httpd.conf会自动的将conf.d下的配置文件加载起来的。

下面是我的配置文件内容,其中红色字体部分需要注意,这些内容可以根据你自己的情况进行调整的。我这里就直接给出了最终的完整配置,我自己配的时候,从网上找的内容都是七零八落的,不是这里错了就是那里错,所以我一次性给出最终答案,方便大家使用。

#################### /etc/httpd/conf.d/subversion.conf ###################

LoadModule dav_svn_module     modules/mod_dav_svn.so

LoadModule authz_svn_module   modules/mod_authz_svn.so

 

通过像这样的URL(http://MyServer/svn)来访问Subversion版本库

<Location /repos>

告诉Apache哪个模块负责服务上面的URL-在这里就是Subversion模块

   DAV svn

告诉Subversion在目录/svn/repos下寻找版本库,这是版本库的父目录

   SVNParentPath /svn/repos

   #版本库必须通过SSL连接才能访问,URL中必须加入HTTPS

   SSLRequireSSL

   启用基本的验证,比如用户名/密码对

   AuthType Basic  

   AuthName "subversion repository"

   #用这个密码文件来验证用户,这个文件由svnmanager来维护,下面讲述如何创建它

   AuthUserFile /svn/repos/passwdfile

   #控制这个用户的访问权限,这个文件由svnmanager来维护

   AuthzSVNAccessFile /svn/repos/accessfile

   限定用户只有输入正确的用户名及密码后才能访问这个路径

   Require valid-user  

</Location>

 

http权限控制增加如下内容,以加强安全控制

<Directory "/var/www/html/svnmanager/">

   AllowOverride None

   Order deny,allow

   Deny from all

   Allow from all

</Directory>

#####################################################################

为了验证你的subversionapache是否可以正常工作,在配置好svnmanager之前,先用subversion带的工具创建一个版本库,命令如下:

#svnadmin create /svn/repos/testrepos

#chown –R apache.apache /var/svn/repos/testrepos

#/etc/rc.d/init.d/httpd start

用本机的浏览器访问http://127.0.0.1/repos/testrepos,若通过Apache可以访问到则证明ApacheSubversion的结合配置正确。

 

3.      安装SVNManager

准备SVNManager源代码包(v1.05):下载地址:http://nchc.dl.sourceforge.net/sourceforge/svnmanager/svnmanager-1.05.tar.gz

将文件解压至/var/www/html下:

#tar –xvzf svnmanager-1.05.tar.gz

#mv svnmanager-1.05 /var/www/html/svnmanager

SVNManager需要通过php-pear安装一个叫VersionControl_SVN的。你的机器必须连接上互联网,并执行如下命令:

#pear install --alldeps VersionControl_SVN-0.3.1.tgz

注意,我在我的AS4系统上执行上面的指令总是不成功,报告如下错误:

HTTP error, got response: HTTP/1.1 410 Gone

Didn't receive 200 OK from remote server. (HTTP/1.1 410 Gone)

这就说明可能是机器上的pear工具版本太低了,与服务器之间的网络协议不匹配,所以如果出现上述错误,请先升级pear工具本身,方法如下:

$ pear upgrade --force http://pear.php.net/get/PEAR-1.3.3

 $ pear upgrade --force http://pear.php.net/get/Archive_Tar http://pear.php.net/get/XML_Parser http://pear.php.net/get/Console_Getopt-1.2.2

 $ pear upgrade --force http://pear.php.net/get/PEAR-1.4.3.tar

 $ pear upgrade PEAR

    然后再执行VersionControl_SVN-0.3.1的安装:

#pear install --alldeps VersionControl_SVN-0.3.1.tgz

 

4.      SVNManager创建数据库

SVNManager创建访问用户及数据库:
#mysql –u root –p

Mysql>create database svnmanager;

Mysql>grant all privileges on svnmanager.* to svnmanager@localhost identified by ‘[访问用户密码]’;

Mysql>flush prifileges;

Mysql>quit;

全部执行成功后,svn数据库svnmanager创建成功,用户名是svnmanager

 

5.       增加权限配置

这一段我就不写了,实际就是在/etc/httpd/conf.d/subversion.conf中的那些内容,不过这里还需要你来手动的创建用户密码文件和访问控制文件,这里我们假定svn代码库的根目录是/svn/repos,密码文件passwdfile以及访问控制文件accessfile

#cd /svn/repos

#chown –R apache.apache passwdfile

#chown –R apache.apache accessfile

 

6.      配置svnmanager

svnmanager的配置文件在/var/www/html/svnmanager目录下,有一个config.php.linuxconfig.php.win,分别针对LinuxWindows操作系统下的配置模板,请将config.php.linux拷贝一份,并重命名为config.php

下面是我的/var/www/html/svnmanager/config.php文件中的全部配置信息,如下:
$htpassword_cmd = "/usr/bin/htpasswd";

$svn_cmd = "/usr/bin/svn";

$svnadmin_cmd = "/usr/bin/svnadmin";

$svn_repos_loc = "/svn/repos";

$svn_passwd_file = "/svn/repos/passwdfile";

$svn_access_file = "/svn/repos/accessfile";

$smtp_server = "smtp.domain.org";

$dsn = "mysql://svnmanager:[password]@localhost/svnmanager";

//Administrator account

$admin_name = "admin";

$admin_temp_password = "admin";

启动ApacheMysql,并访问http://localhost/svnmanager,初始用户名称为admin,密码为admin,此时你必须创建一个系统管理员,否则是看不到版本库管理菜单的。创建管理员用户后admin帐号失效。至此整个服务部署完毕。

7.      遇到的问题及解决方法

整个的安装过程中,包括apachemysqlphp以及subversion都没有遇到太大的问题,但是安装和部署svnmanager时遇到不少问题,说明这个开源工具还是存在很多不理想的地方,通过上面的努力,我们已经可以正常的看到svnmanager的主页了,用新建立的管理员登录进去以后,可以创建新的用户、组以及版本库,并且可以给每一个版本库以及下属的子目录分配权限。

问题1,在点击创建版本库以后,系统提示创建成功,而我在/svn/repos下却找不到创建出来的版本库目录,而 accessfile里面已经出现了刚刚创建的版本库名称以及默认的用户权限。

问题2在给用户分配权限的时候报错如下:

svn: Can't open file '/root/.subversion/servers': Permission denied (cmd: usr/bin/svn list --non-interactive file:///svn/repos/testrepos)

Command used: /usr/bin/svn list --non-interactive file:///svn/repos/testrepos

在网上查阅了资料,发现这两个问题其实是一个问题,解决的方法是:

1)  svnmanagerconfig.php文件中:

$svnadmin_cmd = "/usr/bin/svnadmin";改为如下内容:

$svn_config_dir='/tmp';

$svnadmin_cmd="/usr/bin/svnadmin --config-dir /tmp";

2)  进入/var/www/html/svnmanager/svnmanager/RepositoryModule目录,

编辑如下两个文件,UserPrivilegesEditPage.php249 GroupPrivilegesEditPage.php中的243行,替换$switches=array();$switches=array('config_dir'=>$svn_config_dir);

由于svnmanager刚刚装好,所以目前遇到的问题就这些,可能在后续使用过程中还会遇到新问题,那是再进一步补充这个文档。

 

你可能感兴趣的:(apache,mysql,SVN,cmd,subversion,工具)