经过一个月的研究设置,和半个月的试用,对于
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 domain,Server name和Email 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的集成 将解压缩后svn的bin目录下所有后缀是so的文件复制到apache的modules目录下 将解压缩后svn的bin目录下所有后缀是dll的文件复制到apache的bin目录下,如果提示是否覆盖,一定注意不要覆盖apache目录下的dll,主要是apr方面的dll 编辑apache/conf/httpd.conf文件 找到配置文件中的LoadModule dav_module modules/mod_dav.so和LoadModule 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 集成Apache和PHP 找到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
进入php的PEAR目录,命令行输入:
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 # 以后再创建新用户时,输入第一次创建的用户密码,否则不能提交 通过刚刚创建的用户登录,就可以看到各种功能的链接 以后就可以通过该界面创建用户和权限了,而不需要再通过svn和apache的命令和配置文件了 另外,可下载中文汉化包,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不能正常显示中文,注意以下文件的设置:
1、Mysql5.0中的My.ini; [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 2、php中的php.ini; default_charset = "utf8" include_path = ".;C:\php\PEAR\pear;C:\php\pear" extension_dir = "C:/php/ext" 3、svnmanger中的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"; 4、svnmanager\prado-2.0.3\framework\Data\adodb\drivers\中的adodb-mysql.inc.php和adodb-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'"); 5、svnmanager\svnmanager\RepositoryModule中的GroupPrivilegesEditPage.php和UserPrivilegesEditPage.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"); 6、svnmanager\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 本人的总结还不是很完善,也有不少错误,欢迎大家指正;有许多问题还在发现和解决中,会持续补充。欢迎大家把Svnmanager的FAQ继续扩大。 |