最近计划把SVN仓库从Windows迁移Linux平台,原来的AD验证不能用,也不想再用了--用户要登录到域才能修改个人密码,太麻烦了
比较过多样SVN仓库管理软件后,决定使用SVNManager,它的安装文档和过程都比较简单,但有一些特殊情况网上的其它信息处理得并不正确。
安装过程: (基于debian lenny)
1. 安装必要的包
apt-get install subversion libapache2-svn
apt-get install apache2 php libapache2-mod-php5 mysql-server
apt-get install php-pear php-xml-parse
注:RHEL/CentOS用yum 代替apt-get, apache2在RHEL中名字是httpd, 类似差异要灵活变通
2.升级php-pear和安装必要的包
pear channel-update pear.php.net (如果直接安装没提示,则可选)
pear install VersionControl_SVN
#这些在SVNManager安装文档中都有提及
#另:我实在很厌恶那些安装文档中一大堆的make && make install, 以为用tarball安装httpd, php, mysql这些软件很cool, 文章篇幅主次不分~
#注:debian 可以安装sysv-rc-conf对系统启动时的运行哪些服务进行控制
3.安装SVNManager
http://svnmanager.sourceforge.net/
当前(2009-9-17)最新版本1.0.8, linux下载tar包
把压缩包解压到自己希望的位置...
注:位置可以是www根,也可以虚拟主机的某个Alias, 具体请自行研究apache配置,在debian中www根是/var/www, 在RHEL中,www根是/var/www/html
4.准备数据库和文件系统
1)准备存储svn仓库的文件系统,比如/opt/svnrepo
文件系统属主要修改为apache进程的用户名
debian下是www-data 用ps -ef | grep apache 显示
RHEL下是apache, 用ps -ef | grep httpd 显示
比如:chown www-data:www-data /opt/svnrepo
2)准备存储配置数据的mysql数据库(用sqllite据说也行,没测试)
mysql -u root -p
>create database svnmanagerdb CHARACTER SET utf8 ;
>有兴趣的话,单独创建个专用用户会比用root要安全, 请参考mysql资料
5.修改SVNManager的config.php
cp config.php.linux config.php 从模板创建配置文件.
关键内容如下:
$lang = "en_US.UTF-8";
$htpassword_cmd = "/usr/bin/htpasswd";
$svn_cmd = "/usr/bin/svn";
$svnadmin_cmd = "/usr/bin/svnadmin";
//Subversion locations
$svn_config_dir = "/opt/svnrepo/svnconfig";
$svn_repos_loc = "/opt/svnrepo";
$svn_passwd_file = "/opt/svnrepo/svn-repos_passwdfile";
$svn_access_file = "/opt/svnrepo/svn-repos_accessfile";
$smtp_server = "";没有就为空
$dsn = "mysqli://dbuser:password@localhost/svnmanagerdb";
6.修改apache的配置文件
在默认或相应虚拟主机中加下如下内容
DAV svn
SVNParentPath /opt/svnrepo
SVNReposName "Subversion Repository"
AuthType Basic
AuthName "subversion repos user"
AuthUserFile /opt/svnrepo/svn-repos_passwdfile
Require valid-user
#SSLRequireSSL
AuthzSVNAccessFile /opt/svnrepo/svn-repos_accessfile
访问路径就是http://virtualhost/svn/repo_name
几个疑难点的处理:
1.进入Repository Admin 菜单时页面提示:skip setlocale() failed, unicode characters might fail!
网上有资料的处理办法是修改$lang = "zh_CN.GBK";
其实这是个表面解决办法,实质上这个是跟php的setlocale函数和操作系统libc库支持的locale有关.
RHEL把几乎所有的locale都在系统中准备好了
而debian则只准备需要的几样
为尽可能少修改软件,并支持utf8编码(也就支持中文了),作如下处理:
在debian系统中,可以把en_US.UTF-8的locale生成好,方法如下:
vi /etc/locale.gen 把en_US.UTF-8前面的注释号去掉
保存后,执行locale-gen
可能要安装locales包,请apt-get install之
在RHEL中,用locale -a | grep en_US显示其正确名称(en_US.utf8),填写到$lang变量中
2.新建/编辑用户时总是提示Invalid e-mail address!
这有两个原因:
1.php pear库中 XML_Parser 和VersionControl_SVN两个包安装不正确(网上资料)
2.php框架prado的原因,会强制验证邮件地址域对应DNS中的MX记录,如果乱填邮件地址或者是网络问题或者DNS问题,都会导致这个非法邮件提示,很让人头大。
解决办法:
1.重装相关包
2a.确保邮件地址正确,邮件域有MX记录,DNS工作正常~
2b.修改/svnmanager/UserModule/AddPage.tpl删除 com:TEmailAddressValidator标签
3.中文用户名支持(虽然不建议这么做)
网上很多资料说的,又要改/etc/my.cnf, 又要修改源码mysql连接代码,在连接数据库时加一句set char之类的...
这些做法都是多余的!
只需要两点:
1.在创建数据库时使用utf8编码
2.$lang使用utf8编码的locale, 比如en_US.UTF-8, zh_CN.UTF-8(en_US.utf8)等
注:在有仓库访问控制时,中文用户名和组名会造成访问制作,估计是某些地方的编码解码不一致造成的,建议避免使用中文用户名
使用过程注意事项:
1.开始时建议马上生成一个admin账号,覆盖内置的admin帐号,并重新登录
2.功能很简单也很实用,不过有些功能很古怪,比如用户可以修改用户名,而存取控制又是跟用户名有关的,所以修改用户名后,肯定要重新设定一次仓库访问权限
3.仓库文件中如果有中文路径的话,在仓库访问控制界面会出错,要避免之.
最佳参考资料:
http://blog.chinaunix.net/u2/88936/showart_1728225.html
比较过多样SVN仓库管理软件后,决定使用SVNManager,它的安装文档和过程都比较简单,但有一些特殊情况网上的其它信息处理得并不正确。
安装过程: (基于debian lenny)
1. 安装必要的包
apt-get install subversion libapache2-svn
apt-get install apache2 php libapache2-mod-php5 mysql-server
apt-get install php-pear php-xml-parse
注:RHEL/CentOS用yum 代替apt-get, apache2在RHEL中名字是httpd, 类似差异要灵活变通
2.升级php-pear和安装必要的包
pear channel-update pear.php.net (如果直接安装没提示,则可选)
pear install VersionControl_SVN
#这些在SVNManager安装文档中都有提及
#另:我实在很厌恶那些安装文档中一大堆的make && make install, 以为用tarball安装httpd, php, mysql这些软件很cool, 文章篇幅主次不分~
#注:debian 可以安装sysv-rc-conf对系统启动时的运行哪些服务进行控制
3.安装SVNManager
http://svnmanager.sourceforge.net/
当前(2009-9-17)最新版本1.0.8, linux下载tar包
把压缩包解压到自己希望的位置...
注:位置可以是www根,也可以虚拟主机的某个Alias, 具体请自行研究apache配置,在debian中www根是/var/www, 在RHEL中,www根是/var/www/html
4.准备数据库和文件系统
1)准备存储svn仓库的文件系统,比如/opt/svnrepo
文件系统属主要修改为apache进程的用户名
debian下是www-data 用ps -ef | grep apache 显示
RHEL下是apache, 用ps -ef | grep httpd 显示
比如:chown www-data:www-data /opt/svnrepo
2)准备存储配置数据的mysql数据库(用sqllite据说也行,没测试)
mysql -u root -p
>create database svnmanagerdb CHARACTER SET utf8 ;
>有兴趣的话,单独创建个专用用户会比用root要安全, 请参考mysql资料
5.修改SVNManager的config.php
cp config.php.linux config.php 从模板创建配置文件.
关键内容如下:
$lang = "en_US.UTF-8";
$htpassword_cmd = "/usr/bin/htpasswd";
$svn_cmd = "/usr/bin/svn";
$svnadmin_cmd = "/usr/bin/svnadmin";
//Subversion locations
$svn_config_dir = "/opt/svnrepo/svnconfig";
$svn_repos_loc = "/opt/svnrepo";
$svn_passwd_file = "/opt/svnrepo/svn-repos_passwdfile";
$svn_access_file = "/opt/svnrepo/svn-repos_accessfile";
$smtp_server = "";没有就为空
$dsn = "mysqli://dbuser:password@localhost/svnmanagerdb";
6.修改apache的配置文件
在默认或相应虚拟主机中加下如下内容
DAV svn
SVNParentPath /opt/svnrepo
SVNReposName "Subversion Repository"
AuthType Basic
AuthName "subversion repos user"
AuthUserFile /opt/svnrepo/svn-repos_passwdfile
Require valid-user
#SSLRequireSSL
AuthzSVNAccessFile /opt/svnrepo/svn-repos_accessfile
访问路径就是http://virtualhost/svn/repo_name
几个疑难点的处理:
1.进入Repository Admin 菜单时页面提示:skip setlocale() failed, unicode characters might fail!
网上有资料的处理办法是修改$lang = "zh_CN.GBK";
其实这是个表面解决办法,实质上这个是跟php的setlocale函数和操作系统libc库支持的locale有关.
RHEL把几乎所有的locale都在系统中准备好了
而debian则只准备需要的几样
为尽可能少修改软件,并支持utf8编码(也就支持中文了),作如下处理:
在debian系统中,可以把en_US.UTF-8的locale生成好,方法如下:
vi /etc/locale.gen 把en_US.UTF-8前面的注释号去掉
保存后,执行locale-gen
可能要安装locales包,请apt-get install之
在RHEL中,用locale -a | grep en_US显示其正确名称(en_US.utf8),填写到$lang变量中
2.新建/编辑用户时总是提示Invalid e-mail address!
这有两个原因:
1.php pear库中 XML_Parser 和VersionControl_SVN两个包安装不正确(网上资料)
2.php框架prado的原因,会强制验证邮件地址域对应DNS中的MX记录,如果乱填邮件地址或者是网络问题或者DNS问题,都会导致这个非法邮件提示,很让人头大。
解决办法:
1.重装相关包
2a.确保邮件地址正确,邮件域有MX记录,DNS工作正常~
2b.修改/svnmanager/UserModule/AddPage.tpl删除 com:TEmailAddressValidator标签
3.中文用户名支持(虽然不建议这么做)
网上很多资料说的,又要改/etc/my.cnf, 又要修改源码mysql连接代码,在连接数据库时加一句set char之类的...
这些做法都是多余的!
只需要两点:
1.在创建数据库时使用utf8编码
2.$lang使用utf8编码的locale, 比如en_US.UTF-8, zh_CN.UTF-8(en_US.utf8)等
注:在有仓库访问控制时,中文用户名和组名会造成访问制作,估计是某些地方的编码解码不一致造成的,建议避免使用中文用户名
使用过程注意事项:
1.开始时建议马上生成一个admin账号,覆盖内置的admin帐号,并重新登录
2.功能很简单也很实用,不过有些功能很古怪,比如用户可以修改用户名,而存取控制又是跟用户名有关的,所以修改用户名后,肯定要重新设定一次仓库访问权限
3.仓库文件中如果有中文路径的话,在仓库访问控制界面会出错,要避免之.
最佳参考资料:
http://blog.chinaunix.net/u2/88936/showart_1728225.html