在 QNAP TS-209 Pro 上跑 Subversion Server
在 QNAP TS-209 Pro 上跑 Subversion Server一开始购买 QNAP TS-209 Pro NAS 伺服器时,就打算要安装 Subversion Server,但是当时受限于以为一定要安装 Apache Web Server 2.X 以上的版本,而 QNAP 内嵌的 ARM-based Linux 系统,预设是安装 Apache 1.X。 后来才恍然大悟,并不需要透过 Apache 来做连接传输与权限管控,利用 Subversion 预设跑的 svnserver daemon 当然也可以作到,而且使用 svn 的传输协定,效能还好上很多呢。
安装 Subversion Server 有两大项目,一为先为 QNAP 安装 iPKG;另一个就是再利用 ipkg 安装 Subversion Server。 iPKG 是一种轻量 (lightweight)级的套件管理系统,其作用如同 Fedora 的 RPM 或如 Debian 的 APT。而 iPKG 多是应用在容量有限的嵌入式 (Embedded) Linux 系统内。 当然,执行这两件项目前,要先利用如 PieTTY 登入 QNAP NAS 的 Console 内。
iPKG 的安装方法直接参照此篇:: Install any Linux app on TS-109/209/PRO。
先下载 iPKG 的安装压缩档,储存该档桉于 /share/Public/ 目录下,并解压缩它。 只要依照该安装步骤,执行自动安装程序,过程非常顺利,没有任何问题。这裡所提供的压缩档是最新版的,一切均会自动执行设定与安装,包括环境变数等,都不需要再自行新增修改。安装完毕后,重新开机再利用 PieTTY 登入后即可利用 iPKG 执行安装 Subversion。
Subversion 的安装步骤是参考该篇: Subversion Server on QNAP-209 Pro ,不过我有调整了一些步骤,参考如下:
1. 安装 Subversion binary:
ipkg install svn
2. 这样就安装完毕了,相当简单! 不过,为了让 QNAP NAS 重开机后可以自动执行 svnserver,所以需执行下列程序: (请记得要指定 Port,这裡我是採预设的 3690。)
mount /dev/mtdblock5 -t ext2 /tmp/config
cd /tmp/config
echo "/opt/bin/svnserve -d --listen-port=3690" >> autorun.sh
umount mount /dev/mtdblock5
3. 重开机后登入,执行 svnadmin --version 即可确认安装是否成功。
4. 再来就是新增 Repository 与存取权限设定等程序。关于内建的权限管控设定,可以参考 subversion 手册:Built-in authentication and authorization。
5. 指定 Repository 的根目录所在位置。我是新增了一个目录 /svn (最好是用 QNAP 的网页版的档桉管理新增,并指定存取权限),它会位于 /share/svn 目录下。
6. 创建 Repository。我的策略是採多个 Repository 管理个别的专桉,但是只用一组帐户与存取规则统筹管控。
svnadmin create /share/svn/repos1
svnadmin create /share/svn/repos2
7. 上述提过,我只利用一个帐户密码档 (passwd),以及把存取规则是定义在一个独立的授权 (authorization)档 (authz)内,这称之为 Path-Based Authorization。 我是把这两个档桉集中放在自行定义的 /share/svn/conf 目录内。 帐号密码并不需要事先新增在 Linux 系统内,只要定义在 passwd 档桉内即可;不过,有个缺点是密码是採明码的设定,似乎无法如同利用 Apache 的权限设定,可以利用工具设定编码后的密码? 还有,请注意,在 authz 的 repository 路径要设为绝对路径,而不是相当路径,例如 /share/svn/repos1,为了这个问题,我在权限设定设定这部分了好久才找到这个原因。
passwd:
-------------------------------------
admin = adminpassword
christine = christinepassword
funkid = funkidpasswod
-------------------------------------
authz:
-------------------------------------
administrators = admin
developers = christine, funkid
[/]
* =
@administrators = rw
@developers = rw
christine = rw
-------------------------------------
8. 至每一个 repository 的子目录 /conf (如 /share/svn/repos1),编辑 svnserve.conf 档桉,内容如下:
password-db = /share/svn/conf/passwd
#每一个 repository 的 realm 均指定为一个共同的字串名称,即代表共用同一个 namespace。
realm = global_repository
# Specific access rules for specific locations
authz-db = /share/svn/conf/authz
大功告成! 在 WindowsXP Client 端利用如 TortoiseSVN 工具,连结测试,并输入所使用的帐号密码等,即可知道设定是否正确。 一般若可以连结,但无法存取,问题多半出在授权档 (authz)的设定上。 另请注意,repository 的路径为:
svn://your_ip_address_or_domain:3690/share/svn/repos1/
*** 备注 (2008/06/08) ***
我放弃在 SvnServer 使用 "Path-Based Authorization" 的方式了,验证一直无法通过,找不出设定的问题。 目前採用折衷的作法是将 passwd 档桉统一放置在 /share/svn/conf 目录下;但是每一个 repository 则个别管理它们自己的授权 authz 档桉。 用不到这个,不过还是支持下楼主!顺便睡一下沙发 IPKG现在有QKPG安装包了,我装了后不会用IPKG装LINUX应用,比如AMULE,如何进入控制台模式?
页:
[1]