pySvnManager 0.5 升级指引
对于不能提供 SSH 远程登录服务器的用户,可以参照本文进行 pySvnManager 的升级。关于 pySvnManager 的新功能,参照:《pySvnManager新功能:LDAP用户同步》
升级的步骤简单的说就是:备份 -> 软件升级 -> 重启服务
数据备份
你可以备份 /opt/pysvnmanager 整个目录(主要是下面的 sites 目录)。$ sudo cp -a /opt/pysvnmanager /opt/pysvnmanager.old如果使用 gistore 备份,也可以执行命令:
$ sudo gistore commit-all -v
软件升级
- 首先更新 APT 源,以便 Debian/Ubuntu 能够感知上游软件的更新。
$ sudo aptitude update
- 升级 pysvnmanager
$ sudo aptitude install pysvnmanager
- pysvnmanger 软件包实际上包含了下列组件包:
- pysvnmanager :不包含实际数据,仅用于确立包的依赖关系。必须安装 pysvnmanager-common 包,以及pysvnmanager-deploy-sys 或者 pysvnmanager-deploy-virt 包中的任何一个。
- pysvnmanager-common : 主要的源代码和执行脚本都在这个包中。
- pysvnmanager-deploy-sys : 使用系统提供的第三方软件包,使得 pySvnManager 依赖的框架可以正常运行
- pysvnmanager-deploy-virt : 使用 easy_install 和 virtualenv 建立的虚拟python环境,设置 pySvnManager 的依赖关系
- pysvnmanager-doc : 文档伪包,依赖下面两个文档包
- pysvnmanager-doc-devel : 开发者手册
- pysvnmanager-doc-user : 用户手册
- 在有的平台,pysvnmanager-deploy-sys 会无法安装,会自动选择 pysvnmanager-deploy-virt 包。因为 pysvnmanager-deploy-sys 依赖很多系统自带的包,有的操作系统或者没有相关的包,或者相关的软件包的版本太低:
- 依赖 0.10 以上版本的 python-pylons
- 依赖 2.6 以上版本的 python 或者在 2.5 版本的 python 下需要安装 python-simplejson 包
- 依赖 0.5.7 以上版本的 python-sqlalchemy 包
- 或者原来采用了 pysvnmanager-deploy-sys 安装,但新版本必须换做 pysvnmanager-deploy-virt 包。这是因为新版本的 pySvnManager 引入了新的依赖,如果不能满足,也会自动选择 pysvnmanager-deploy-virt 包。
- 实际上能够满足上述所有标准的,只有 Debian Sarge 或者以上版本(SID?)
- Debian Lenny 或者 Ubuntu (9.10, 10.04)都存在依赖关系无法满足的情况。对于这些平台,就必须选择安装 pysvnmanager-deploy-virt 包。
- 系统会自动选择安装合适的 pysvnmanager-deploy 包,在 Ubuntu 平台,会选择安装 pysvnmanager-deploy-virt 包。
- 安装 pysvnmanager-deploy-virt 包,会自动调用 easy_install,安装需要的 egg 包。安装过程可能根据网络的情况花费几分钟甚至几十分钟的时间。 (在特殊时期,如果遇到 sourceforge.net 或者其它国外服务器被“墙”,会造成无法用正常渠道和谐的安装某些软件包)
实例运行时自动升级
新版本 pySvnManager 增加了数据库支持,但无须进行特殊设置。 重新运行实例,会自动创建数据库。不再以服务方式运行 pysvnmanager,而是以 WSGI 方式和 Apache 整合
最新的 pysvnmanager 通过 WSGI 方式运行在 Apache2 服务器下,而不是像之前要启动服务(缺省5000端口),还要配置 Apache 代理(类似和Tomcat整合的方式)。 新版本的 pysvnmanager (>= 1:0.5.2r167-59),会自动完成缺省实例配置文件等的升级:- 删除 pysvnmanager 服务脚本(/etc/init.d/pysvnmanager*)
- 升级 /opt/pysvnmanager/sites/ 下各个实例
- 新的 INI 文件
- 新的 localconfig.py 文件
- 新的 cgi-bin/pysvnmanager.wsgi 脚本
- 安装新的缺省实例的 Apache2 配置文件,缺省实例为 /opt/pysvnmanager/default 目录,缺省访问 URL 为 /svnadmin
- 无须启动服务(缺省端口5000),也不会出现因为服务故障造成日志文件失控
- 支持单点登录,因为在此部署方式下, pySvnManager 能够获取 Apache2 传递的环境变量
- 配置多实例更为简便