Centos5.2+svnmanager

很久没有写些东西了,今天下午老大给我说公司的subversion现在认证用户只是写在配置文件里,比较麻烦。让我试着配配svnmanager,用它来管理会好些。参考网上的一些资料,下午已经配置成了,简单的步骤写写:)

 
一、环境
Centos5.2+apache+subversion+mysql+php
 
这些都是系统安装时,一起安装上的,没有什么好说的。
 
除了上面的软件外,还有几个包关系到后面的安装:
php-mysql
php-pear
mod_dav_svn
 
通过如下命令检查:
#rpm -qa |grep php
#rpm -qa |grep mod_dav_svn
 
没有安装的话,用安装盘或yum安装就行。
 
二、集成SVN和Apache
 
1.创建仓库
 

# mkdir - p / var / svn/ repos
# svnadmin create / var / svn/ repos/ test

#chown -R apache:apache /var/svn

2.配置apache

添加如下内容:

LoadModule dav_svn_module modules/ mod_dav_svn. so

LoadModule authz_svn_module modules/ mod_authz_svn. so  #svn使用,顺序也要这样

 

< Location / svn/ >
        DAV svn
        SVNListParentPath on
        SVNParentPath / var / svn/ repos             #仓库路径
        AuthType Basic
        AuthName "ZGSM SVN"
        AuthUserFile / var / svn/ passwdfile
        AuthzSVNAccessFile / var / svn/ accessfile
        Require valid- user
< / Location>

3.创建密码文件及访问文件

#touch /var/svn/passwdfile

#touch /var/svn/accessfile

#chown apache:apche passwdfile accessfile

4.启动apache并验证svn

#service httpd start

在浏览器里输入http://192.168.254.128/svn/test ,看是否有提示输入用户名密码,有吗?哈哈

三、安装和配置svnmanager
 
1.下载svnmanager
 
解压并放置到/var/www/html/下
#tar zxvf svnmanager-1.03.tgz
#mv svnmanager-1.03 svnmanager
#mv svnmanager /var/www/html/
 
2.安装 VersionControl_SVN
 
还记得我们最开始提到的php-pear包,安装这个包后会有/usr/bin/pear命令,我们使用它来安装VersionControl_SVN,最新的版本为0.3.1,输入下面的命令:
#pear install --alldeps VersionControl_SVN-0.3.1
 
 
3.向http.conf文件添加新内容
#vi /etc/httpd/conf/httpd.conf            添加如下内容是为了更安全:
 

< Directory "/var/www/html/svnmanager/" >
        AllowOverride None
        Order deny, allow
        Deny from all
        Allow from all
< / Directory>

 

4.创建svnmanager使用的mysql数据库

#service mysqld start

# mysql
mysql> create database svn;
mysql> grant all on svn. * to svnmanager@ localhost identified by "111111" ;
mysql> flush privileges;
mysql> quit;

 

5.更改svnmanager的配置文件

#cd /var/www/html/svnmanager/

#mv config.php.linux  config.php

#vi config.php                改为如下内容:

< ? php

$ htpassword_cmd = "/usr/bin/htpasswd" ;
$ svn_cmd = "/usr/bin/svn" ;
$ svnadmin_cmd = "/usr/bin/svnadmin" ;

//Subversion locations

$ svn_repos_loc = "/var/svn/repos" ;
$ svn_passwd_file = "/var/svn/passwdfile" ;
$ svn_access_file = "/var/svn/accessfile" ;

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

//moved to this location rather than being deleted.

$ svn_trash_loc = "" ;

//$svnserve_user_file = "/var/www/repos/svnserve_passwd_file";

$ svnserve_user_file = "" ;

//SMTP Server for outgoing mail

$ smtp_server = "smtp.mailserver.net" ;



$ dsn = "mysqli://svnmanager:111111@localhost/svn" ;


$ admin_name = "admin" ;
$ admin_temp_password = "admin" ;

? >

6.验证

重启apache,然后从浏览器里输入http://192.168.254.128/svnmanager ,出现了吗?:)

 

四、汉化
 

首先下载汉化包,下载地址:

http://bbs.iusesvn.com/thread-2122-1-1.html 

我们把汉化包里的文件都替换到现有/var/www/html/svnmanager里的文件之后,还有几步要做:
1.更改/etc/php.ini文件,设置
default_charset='gb2312' 或 
default_charset='gbk‘
 
2.更改/etc/httpd/conf/httpd.conf文件,设置
AddDefaultCharset GB2312  或
AddDefaultCharset GB2312
 
重启apache之后就可以看到中文页面了,:)
 
 
五、未解决的问题:中文目录名显示不正常

 
我想大家在上面那个汉化包的下载地址已经看到了关于中文目录名的解决方法,但是我按照上面的方法做,svnmanager里用户权限设置的下拉列表里,依然无法正常显示中文目录名。我是这么做的:
 
1.修改/etc/my.cnf文件,在相应的标签下添加:
[mysqld]
character-set-server=gbk
collation-server=gbk_chinese_ci
default-character-set=gbk

[mysql.server]
default-character-set=gbk
[mysqld_safe]
default-character-set=gbk
[client]
default-character-set=gbk
 
之后用service mysqld restart重启数据库,然后用
mysql>status   
查看字符集如下,默认的是latin1。
Server characterset gbk Db characterset gbk

Client characterset gbk Conn characterset gbk

 
2.重建数据库
因为我们上面已经建立过svnmanager使用的数据库,且字符集是latin1,现在重新建立:
#mysql
mysql>drop database svn;
mysql>create database svn;
mysql>grant all on svn.* to svnmanager@localhost
 identified by '111111';
mysql>flush privileges;
mysql>quit
 
3.修改svnmanager里的文件
(1)修改程序中连接数据库的字符集,也就是adodb的链接部分: 在文件 /var/www/html/svnmanager/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'");

 
(2)更改/var/www/html/svnmanager/svnmanager/library/class.accessfile.php 在文件 /libarary/class.accessfile.php 中第177行  

require ("config.php"); 

语句前加入以下语句 $accessfile = mb_convert_encoding($accessfile,'UTF-8','GBK'); 

 
 
4.重启apache,再连接http://192.168.254.128/svnmanager/index.php ,仓库的注释部分倒是可以输入中文了。 但到用户权限的页面还是无法正常显示中文目录名。 

 
 
另外也试了其它几种配置,甚至重新编译mysql,默认字符集制定gbk,可都不成功,郁闷!如果哪位大侠成功了,还望执教!!! 

 
 
 
六、后记  

svn建立的仓库是不支持中文的,但是仓库的下面可以存在中文目录。而且如果你之前就配置过svn的用户及权限,那么使用svnmanager不能把它们导入,需要全部重新建立。 

 
 
2008-10-29 晚 22:10 

你可能感兴趣的:(apache,mysql,PHP,SVN,subversion)