1.2. 最终的实现

1.2.1. 软件安装
1.2.2. 网站部署
1.2.3. 配置
1.2.4. 运行应用
1.2.5. 软件截屏

我们先来看看如何部署最终的实现。下面的安装配置过程中的命令是在 Debian Linux 下完成。至于 Windows 或其他平台,应该与之类似。

1.2.1. 软件安装

理论上最简单的安装模式:

$ sudo easy_install pySvnManager
Searching for pySvnManager
Reading http://pypi.python.org/simple/pySvnManager/
Reading https://sourceforge.net/projects/pysvnmanager

理论上很简单的东西,却奈何不了复杂的现实:

在项目刚刚开发完成,就出现了相当长一段时间的 SourceForge.net 无法访问! 导致 easy_install 为了搜索最新版本,在连接到 http://pysvnmanager.sourceforge.net 时发生了死锁而阻塞。 虽然我打算把项目移到别处,但发现一些依赖的包如: python-ldap 也是要访问 SourceForge.net 网站。因此我取消了搬家的打算,耐心且无助的等待解封。 同时将代码镜像在网址:http://svn.worldhello.net/svn/pysvnmanager 上,供不能访问 http://pysvnmanager.sourceforge.net 的用户参考。

如果遇到阻塞,则需要花费更多的时间,手工下载软件包。easy_install 也可以安装已经下载到本地的软件包。

$ wget http://pypi.python.org/packages/source/p/pySvnManager/pySvnManager... 
$ sudo easy_install pySvnManager-... 
[注意]

PySvnManager 的软件包有两种格式。一种是二进制的格式:pysvnmanager-xxx.egg, 另外一种是源码包 pysvnmanager-xxx.tar.gz

二进制包,是针对特定的 Python 版本编译的,如果您当前的 Python 版本和二进制包的版本不符, 就必须从源码包开始安装过程。无论源码包还是二进制的 Egg 包,都可以方便的使用 easy_install 进行安装。

1.2.2. 网站部署

执行 make-configsetup-app 完成部署。部署过程的细节参见后面软件集成的相关内容。

$ mkdir deploy
$ cd deploy
$ paster make-config pySvnManager config.ini
Distribution already installed:
pySvnManager 0.1.2dev-r9 from /home/jiangxin/pyenv/lib/python2.5/site-packages/pySvnManager-0.1.2dev_r9-py2.5.egg
Creating config.ini
Now you should edit the config files
config.ini
$ paster setup-app config.ini
Running setup_config() from pysvnmanager.websetup

1.2.3. 配置

部署目录下的四个配置文件:

  • config.ini 应用默认运行于5000端口,可以在此文件中定制

  • config/localconfig.py 设置应用缺省的认证方式,缺省用 “config/svn.passwd” 口令认证

  • config/svn.passwd 缺省该口令文件内所有用户的口令均为 "guess"

  • config/svn.access svn路径授权文件,本应用要处理的文件。注意该文件开头的注释是版本号和版本库管理员帐号设置, 不要随意删除!

1.2.4. 运行应用

启动应用,自动开启Web服务于5000端口。用Web浏览器访问。推荐使用 Firefox。

$ paster serve config.ini
Starting server in PID 28937.
serving on 0.0.0.0:5000 view at http://127.0.0.1:5000 

1.2.5. 软件截屏

参见演示网站:http://demo.ossxp.com/svnadmin/

Subversion 的授权机制,可能存在互相冲突的策略,导致用户权限的设置可能并不符合预期。 可以通过“权限检查”的功能对用户权限进行检查。参见: 图 1 “用户权限测试功能”

管理员可以用图形界面对用户帐号进行角色管理,可以对版本库的授权进行设置。参见: 图 2 “路径授权设置功能”

PySvnManager 还提供的版本库创建和删除(仅限空版本库), 以及版本库钩子脚本的设置界面。参见: 图 3 “版本库创建及钩子脚本扩展”

下面将整个开发过程进行概要的介绍,展示如何用 Python 进行敏捷的 Web 开发。