提问的智慧SVN版 - 提问者必读
返回列表 回复 发帖

[FAQ] svnmanager 的安装设置FAQ

经过一个月的研究设置,和半个月的试用,对于
svnmanager 的安装设置并解决中文问题(两种中文问题)有了较深的理解,在此做个备忘,同时也和大家分享一下经验。

注:安装文档中参考了一些其他网友的发表的安装手册,特此感谢。.

安装Apache Http Server

下载最新版本的Apache Http Server Windows安装包

下载地址:http://apache.mirror.phpchina.com/httpd/binaries/win32/

(apache_2.2.8-win32-x86-openssl-0.9.8g.msi )

通过安装向导默认安装即可

需要注意的是: Network domainServer nameEmail address都必须填写适当的内容



为了顺利安装,安装之前确认80端口没有被占用,如占用关闭其服务


查看端口是否占用命令行:netstat –anb

访问: http://localhost/, 确认安装是否成功.

安装SVN

下载最新版本的Subversion安装包

下载地址:http://subversion.tigris.org/files/documents/15/41077/svn-win32-1.4.6.zip

解压缩即可(兼容apache2.2.X)

在命令行中,输入:svn --version

I:\svn\bin>svn --version

svn?\239?\188?\140?\231?\137?\136?\230?\156?\172 1.4.6 (r28521)

……………………………………………………………………….

显示版本号即成功

创建一个svn repository

创建svn repository的根目录,比如I:/subversion

在命令行下,进入I:/subversion

输入如下命令:

svnadmin create repos

SVN与Apache的集成

将解压缩后svnbin目录下所有后缀是so的文件复制到apachemodules目录下

将解压缩后svnbin目录下所有后缀是dll的文件复制到apachebin目录下,如果提示是否覆盖,一定注意不要覆盖apache目录下的dll,主要是apr方面的dll

编辑apache/conf/httpd.conf文件

找到配置文件中的LoadModule dav_module modules/mod_dav.soLoadModule dav_fs_module modules/mod_dav_fs.so,将该两行前的#号去掉;

在上述内容后加入:

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

在配置文件末尾添加如下内容:

<Location /svn>


DAV svn


SVNParentPath I:/subversion


AuthType Basic


AuthName "Subversion Reporsitory"


AuthUserFile "H:/Apache2/Apache2.2/conf/svnpasswd"


AuthzSVNAccessFile "H:/Apache/Apache2.2/conf/svnauthz"


Require valid-user

</Location>

重启apache即可。
创建svn用户,在命令行中,进入H:/Apache2/Apache2.2/bin目录,输入:

htpasswd -c ../conf/svnpasswd root

创建password文件,并且创建root用户
conf目录下创建svnauthz用于授权,以下是简单的文件内容:
[/]

root = rw

上述文件为刚创建的root用户设置了对所有目录的读写的权限。
重启apache,并访问http://localhost/svn/repos
如有问题,通过apache/ Apache2.2/logs/error.log检查问题

安装SVNManager

安装svnmanager,用于通过web的方式:

·创建用户和修改密码

·创建和修改用户权限

·创建用户组和修改用户组的权限

·创建SVN

安装svnmanager,需要安装PHP环境和MySQL

基本安装

http://www.php.net/downloads.php, 下载最新版本的PHP, 当前是5.2.5

解压缩到H:/php目录下.

H:/php加入windows环境变量Path.
H:/php/php.ini-recommended改名为H:/php/php.ini

安装PHP扩展

php.ini修改:

extension_dir = "C:/php/ext"

复制dll到windows目录
增加php目录下10个dll库文件到windows\system32目录:

  • ssleay32.dll
  • fdftk.dll
  • fribidi.dll
  • gds32.dll
  • libeay32.dll
  • libmcrypt.dll
  • libmhash.dll
  • libmysql.dll
  • libswish-e.dll
  • msql.dll

设置报错输出

允许显示报错,用于开发环境,修改php.ini

display_errors = On

集成ApachePHP

找到Apache2.2\conf\httpd.conf文件, 文件尾部加入:

LoadModule php5_module H:/php/php5apache2_2.dll

AddType application/x-httpd-php
.php #
后缀.之前有一个空格,不要去掉空格,否则apache不能启动

# configure the path to php.ini

PHPIniDir H:/php

另外,修改(加入index.php作为默认首页):

DirectoryIndex index.html index.php

重新启动Apache.

安装MySQL,本文使用MySQL 5.0.45安装包默认安装即可。
为svnmanager创建数据库:

create database svnmanager;

grant all on svnmanager* to svnmanager@localhost identified by "111111";


svn需要PHP支持PEAR
进入phpPEAR目录,命令行输入:

php go-pear.phar

出现提示的时候,回车即可。中间会有多次的提示

svn需要VersionControl_SVN,这需要通过PEAR安装:

pear install -a VersionControl_SVN-0.3.1 #这行拷贝,不要自己写,否则安装过程有时会提示失败

当前svnmanager版本是1.0.3

另外,需要修改php.ini文件,取消下列行的注释:

extension = php_mbstring.dll

extension = php_mysql.dll

extension = php_gb2.dllà
下载的PHP版本中文件名是 php_gd2.dll

extension = php_mysqli.dll

extension = php_pdo.dll

extension = php_pdo_mysql.dll

下载svnmanager

下载地址:http://sourceforge.net/project/showfiles.php?group_id=135933
apache/htdocs目录下,建一个目录svnmanager
将下载的文件解压缩到上述的svnmanager
svnmanager目录中的config.php.win改名为config.php
修改文件中的内容如下:

<?php

//

//
SVNManager config.php file for Windows based servers

//

$htpassword_cmd
= "H:\\Apache\\Apache2.2\\bin\\htpasswd";

$svn_cmd
= "I:\\svn\\bin\\svn";

$svnadmin_cmd
= "I:\\svn\\bin\\svnadmin";

//Subversion locations

$svn_repos_loc
=
"I:\\subversion";

$svn_passwd_file
=
"H:\\Apache\\Apache2.2\\conf\\svnpasswd";

$svn_access_file
=
"H:\\Apache\\Apache2.2\\conf\\svnauthz";

//If the following is set, removing a repository will cause it to be

//moved to this location rather than being deleted.

$svn_trash_loc
=
"";

// If $svnserve_user_file is defined, then SVNManager will create a

// user/password file suitable for use with SVNSERVE

//

// When not set, this feature isn't enabled.

//

// Warning: When enabled, this mode requires that passwords are stored in the database readable!

//

// Note: When is feature is enabled later, passwords need to be re-set before they are included in

//


the svnserve user file.

//

//$svnserve_user_file
=
"c:\\svn\\svnserve_passwd_file";

$svnserve_user_file = "";

//SMTP Server for outgoing mail

$smtp_server
=
"smtp.mailserver.net";

//Data Source Name (only tested with mysql and sqlite databases!!)

//

//Either:

//

//Use the createtables.sql script to build the tables in a mysql database

//

// or

//

//An empty SQLite database will automatically be generated with the first

//startup!

//

//Please note that if you change the directory for a SQLite database that you

//choose a location that is not accessible via web!!

//

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

//$dsn = "mysql://svnmanager:svnmgmpw@localhost/svnmanager";

//The following location is not readable from internet by means of an .htaccess file

//$dsn = "sqlite://svnmanager\\svnmanager.db";

//Administrator account

//

//This account can be used to create a first administrator user.

//When an administrator user is added, this account doesn't work

//anymore!

//

$admin_name
= "admin";

$admin_temp_password = "admin";

// If $post_create_script is defined, then this script / command will be

// executed after a repository is created.

// When the script/command is executed the one and only parameter will be

// the physical location of the repository.

// This might copy a default set of hooks or config files

//

// $post_create_script = "svn-update-config-files.bat";

?>

注:红色文字为添加修改部分

重启apache,然后通过http://localhost/svnmanager/index.php访问。

用户名/密码都是:admin

创建第一个用户,通过user admin链接,点击add按钮

注意构选admin复选项:第一次用admin登录后,此用户就会被锁定

例如:

Root

Root

Root

user@user.com

选中复选框

0

Admin # 以后再创建新用户时,输入第一次创建的用户密码,否则不能提交

通过刚刚创建的用户登录,就可以看到各种功能的链接

以后就可以通过该界面创建用户和权限了,而不需要再通过svnapache的命令和配置文件了

另外,可下载中文汉化包,http://bbs.iusesvn.com/attachment.php?aid=453

Svnmanger SVN同事使用不同外网域名设置
注意:“Location”比“vhosts”的权限高,我分配两个域名,在http.conf中设置两个监听端口

Listen 80

Listen 90

使用虚拟主机,“Location”总是最先执行,所以,虚拟主机的两个域名不能同时使用,我在conf\extra下的httpd-vhosts.conf中将Location放在VirtualHost内部,同时在httpd.conf中不再写Location那段语句,就解决了这个问题。如下例:

NameVirtualHost localhost:80

NameVirtualHost localhost:90

<VirtualHost localhost:80>


ServerAdmin


DocumentRoot "F:\svn1"


ServerName
域名1


ServerAlias
域名1


ErrorLog "logs/error.log"


CustomLog "logs/access.log" common

<Location />


DAV svn


SVNPath F:\svn1


AuthzSVNAccessFile F:\svncfg\authz.conf


Satisfy Any


AuthType Basic


AuthName "Subversion repository"


AuthUserFile D:\passwd.conf


Require valid-user

</Location>

</VirtualHost>

<VirtualHost localhost:90>


ServerAdmin


DocumentRoot "E:\web\svnmanager"


ServerName
域名2:90


ServerAlias
域名2:90


ErrorLog "logs/error.log"


CustomLog "logs/access.log" common

<Location /svnmanager>


DAV svn


SVNPath F:\svn1


AuthzSVNAccessFile F:\svncfg\authz.conf


Satisfy Any


AuthType Basic


AuthName "Subversion repository"


AuthUserFile D:\passwd.conf


Require valid-user

</Location>

</VirtualHost>


解决中文乱码问题


第一种中文问题,Svnmanager、SVN不能正常显示中文,注意以下文件的设置:

1Mysql5.0中的My.ini

[mysql]

default-character-set=utf8

[mysqld]

default-character-set=utf8

2php中的php.ini

default_charset = "utf8"

include_path = ".;C:\php\PEAR\pear;C:\php\pear"

extension_dir = "C:/php/ext"

3svnmanger中的config.php:

增加以下行——

$htpassword_cmd ="C:\\Progra~1\\Apache~1\\Apache2.2\\bin\\htpasswd";

$svn_cmd ="D:\\Subversion\\bin\\svn";

$svn_config_dir='/tmp';

$svnadmin_cmd ="D:\\Subversion\\bin\\svnadmin --config-dir /tmp";

4svnmanager\prado-2.0.3\framework\Data\adodb\drivers\中的adodb-mysql.inc.phpadodb-mysqli.inc.php

1)因为这里使用的是 mysql 数据库,因此修改
svnmanager\prado-2.0.3\framework\Data\adodb\drivers\adodb-mysql.inc.php
function _connect 倒数第三行前加入 mysql_query("set names 'gbk'");
设定操作mysql的字符集为GBK

                        mysql_query("set names 'gbk'");               
                  if ($this->_connectionID === false) return false;
                if ($argDatabasename) return $this->SelectDB($argDatabasename);
                return true;        
        }

2)在文件 /prodo-0.2.3/framwork/data/adodb/drivers/adodb-mysqli.inc.php 88 if ($argDatabasename)  return $this->SelectDB($argDatabasename); 语句前加入 一下语句:mysqli_query($this->_connectionID,"set names 'gbk'");

5svnmanager\svnmanager\RepositoryModule中的GroupPrivilegesEditPage.phpUserPrivilegesEditPage.php

打开D\usr\www\localhost\public_html\svnmanager\svnmanager\RepositoryModule\UserPrivilegesEditPage.php找到require_once("VersionControl/SVN.php");
修改为:require_once("SVN.php");

打开D:\usr\www\localhost\public_html\svnmanager\svnmanager\RepositoryModule\GroupPrivilegesEditPage.php找到require_once("VersionControl/SVN.php");
修改为:require_once("SVN.php");

6svnmanager\global\header.tpl

修改 svnmanager\global\header.tpl  将页面的字符集设置为 gbk 或者 gb2312
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />



第二种中文问题,Svnmanager可以中文显示,但是SVN库中中文文件夹显示乱码,不能正常设置权限。


在以上设置的基础上,再注意以下文件的设置:

1、
Apache2.2\conf\中的httpd.conf;

注意你以下语句上下是否有类似设置

AddType application/x-gzip .gz .tgz

AddType application/x-httpd-php .php

ScriptAlias /php/ "c:/php/"

我就是在这里多了两句下边语句的设置,所以在Svnmanager中出现如下图的中文乱码,请检查你们的Apache设置是否有这样的设置问题。屏蔽掉有问题的语句,如下例加##


##AddType application/x-compress .Z

##AddType application/x-http-php .php


##Action application/x-http-php "/php/php-cgi.exe"


重起apache,安装完成,仔细观察下apache log目录下的error.log文件,看看有什么错误没有.
如果没有错误,打开浏览器,输入http://localhost/svnmanager就可以登陆了。
第一次登陆需要使用一个默认的临时用户admin 密码 admin,登录后要创建一个管理员帐号,当你logout后,临时帐号将被禁用。

Svnmanager权限设置

正确利用user组(全部员工),来代替原来的
/*”组的作用,如果这个组只有部分人可以看,就要在此组中加入“@user =”,阻止别的员工浏览此目录。但是不能将其放倒根目录下,否则所有人都无法打开SVN界面,最好是[svn1:/]@user = r

以下为一个设置例子:

[groups]

admin = jackie,

rd = jackie,jiabao

user = jackie, yoom, jiabao

[svn1:/]

jackie = rw

zhuwenjun = rw

[svn1:/]

@user = r

[svn1:/gameArtwork]

yoom = rw

jiabao = rw

[svn1:/gameArtwork]

@user =

[svn1:/]

@admin = rw

[svn1:/内务管理/各部门内部文档/研发部]

@rd = rw

本人的总结还不是很完善,也有不少错误,欢迎大家指正;有许多问题还在发现和解决中,会持续补充。欢迎大家把SvnmanagerFAQ继续扩大。

返回列表
订阅 我用Subversion - SVN中文论坛 邮件列表:iUseSVN@googlegroups.com
电子邮件:
网站重要事项将会在这个列表进行通知,点击这里浏览存于列表中的所有邮件