在Windows上使用OTRS

如何迁移现有的Windows安装到Linux
说明和准备
取得OTRSCloneDB脚本以克隆数据库
允许目标系统PostgreSQL数据库的远程访问
停止OTRS服务
删除目标系统现有的数据库,为克隆数据腾空数据库
获取数据库的PostgreSQL密码
克隆数据库到目标系统
从Windows系统复制下列文件到目标系统
重新安装所有软件包
禁用目标系统PostgreSQL数据库的远程访问
启动OTRS服务

OTRS可以在各种不同的系统平台上运行,包括企业级Linux平台如OTRS on Windows和SUSE Linux Enterprise Server及一系列其它的Linux分支。

然而在Windows平台上运行OTRS时我们遭遇了反复的性能损失,尽管做过详尽的分析,但是由于技术的差异,好像不可能解决这些性能问题到令人满意的程度。由于目前缺少其他供应商提供的必要的第三方组件,因此带着一颗沉重的心,我们已经停止开发Windows安装程序和OTRS Appliance(OTRS一体机,部署在虚拟机中无需安装可直接使用的OTRS系统)。

在这些情况下,我们不能保证OTRS能持续地运行于Windows平台,所以推荐将OTRS迁移到上面提及的Linux平台或使用我们托管的OTRS Business Solution™(OTRS商业解决方案)

为了更容易地将OTRS从Windows迁移到Linux以获得最佳性能,我们在这里为你准备了详细的说明。

如何迁移现有的Windows安装到Linux

说明和准备

如果你有了一个基于Windows的OTRS安装并想迁移到Linux系统,你需要安装一台Linux服务器或虚拟主机并在系统中安装OTRS(参阅安装说明章节),这将是迁移的目标系统。

取得OTRSCloneDB脚本以克隆数据库

进入Windows版的系统管理菜单,并安装最新版的OTRSCloneDB软件包到OTRS:

你可以从软件包管理器中直接安装OTRSCloneDB软件包。从左侧的下拉列表中选择“OTRS Extensions”并点击“更新软件仓库信息”按钮,然后会在一个列表中显示OTRSCloneDB软件包,点击“安装”即可。

你还可以从OTRS的FTP服务器上手动下载这个软件包,并用下面的方法手动安装这个软件包。 http://ftp.otrs.org/pub/otrs/packages/

请下载最高版本号的软件包:

OTRSCloneDB-1.0.13.opm
                

图 2.10. 下载OTRSCloneDB - 屏幕截图

下载OTRSCloneDB - 屏幕截图


安装到Windows版的OTRS中:

图 2.11. 安装OTRSCloneDB - 屏幕截图

安装OTRSCloneDB - 屏幕截图


如果你安装了一些附加功能或对OTRS进行了定制开发也没有问题。你只需注意所有安装的软件也能与Unix类的系统兼容就可以了,由OTRS提供的软件包就是这样。

允许目标系统PostgreSQL数据库的远程访问

OTRSCloneDB脚本通过网络复制数据库的数据,所以我们需要允许到数据库的远程访问。不同的数据库设置方法不一样,我们在这里描述的是打开PostgreSQL数据库的远程访问。

通过SSH登录到目标系统后,切换到postgresql目录:

shell> cd /etc/postgresql/9.4/main
shell> vi postgresql.conf
                

将下列行添加到文件末尾:

listen_addresses = '*'
                

保存文件。

shell> vi pg_hba.conf
                

将下列行添加到文件末尾:

host all all  0.0.0.0/0 md5
                

保存文件。

重启PostgreSQL服务器:

shell> service postgresql restart
                

停止OTRS服务

停止目标系统所有运行的服务:

shell> service cron stop
shell> service apache2 stop
shell> su - otrs
shell> cd /opt/otrs/
shell> bin/Cron.sh stop
shell> bin/otrs.Daemon.pl -a stop
shell> exit
                

删除目标系统现有的数据库,为克隆数据腾空数据库

OTRSCloneDB脚本不会移除目标系统存在的otrs数据库的数据,所以我们需要手动删除:

切换到postgresql用户:

shell> su - postgres
                

删除已有的otrs数据库:

shell> dropdb otrs
                

为otrs用户创建一个新的otrs数据库:

shell> createdb --owner=otrs --encoding=utf8 otrs
                

返回到root用户:

shell> exit
                

获取数据库的PostgreSQL密码

进入目标系统的OTRS目录:

shell> cd /opt/otrs
                

查看目录系统的配置文件:

shell> less Kernel/Config.pm
                

你往下拉一点就能找到你的数据库密码:

图 2.12. 获取目标数据库的密码 - 屏幕截图

获取目标数据库的密码 - 屏幕截图


在我们的示例中:

I88cm34A1B6xrl3
                

把密码写在一张纸上。

克隆数据库到目标系统

切换回Windows版的OTRS,打开系统管理菜单中的系统配置。选择“OTRSCloneDB”组-“Configuration”子组:

图 2.13. 配置OTRSCloneDB的系统配置1 - 屏幕截图

配置OTRSCloneDB的系统配置1 - 屏幕截图


我们需要使用下列值来配置系统配置选项OTRSCloneDB::TargetSettings :

TargetDatabaseHost => 192.168.137.20 (Here you need to enter the ip address of your target system)
TargetDatabase => otrs
TargetDatabaseUser => otrs
TargetDatabasePw => I88cm34A1B6xrl3 (Here you need to set the password of your target system)
TargetDatabaseType => postgresql
                

图 2.14. 配置OTRSCloneDB的系统配置2 - 屏幕截图

配置OTRSCloneDB的系统配置2 - 屏幕截图


要运行OTRSCloneDB脚本我们需要切换到Windows版本的OTRS的命令行屏幕,并进入OTRS安装的目录:

shell> cd "C:\otrs"
                

如果你使用的是StrawberryPerl,则你需要激活Perl shell:

shell> StrawberryPerl\portableshell.bat
                

图 2.15. 运行OTRSCloneDB脚本1 - 屏幕截图

运行OTRSCloneDB脚本1 - 屏幕截图


OTRSCloneDB脚本位于OTRS目录的bin目录。

shell> cd "OTRS\bin"
                

运行OTRSCloneDB脚本:

shell> perl otrs.CloneDB.pl
                

现在你应该能够看到关于这个脚本及其参数的一些信息。

图 2.16. 运行OTRSCloneDB脚本2 - 屏幕截图

运行OTRSCloneDB脚本2 - 屏幕截图


注意:没加参数运行时出现错误可能与错误的数据库登录信息有关,或者数据库连接有问题。

如果没有出现错误,检查试运行能否成功:

shell> perl otrs.CloneDB.pl -n
                

图 2.17. 运行OTRSCloneDB脚本3 - 屏幕截图

运行OTRSCloneDB脚本3 - 屏幕截图


开始克隆数据库,交叉手指祈祷好运吧:

shell> perl otrs.CloneDB.pl -r
                

一个成功的运行就像这样:

Generating DDL for OTRS.
Generating DDL for package OTRSCloneDB.
Creating structures in target database (phase 1/2)
...
...
Creating structures in target database (phase 2/2)
...
done.
                

从Windows系统复制下列文件到目标系统

你需要从Windows系统复制一些文件到目标系统,你可以用一个免费工具软件如“WinSCP”(直接在网上搜索“WinSCP”就行)。从Windows版本的OTRS中复制下列文件:

C:\otrs\OTRS\Kernel\Config\GenericAgent.pm
C:\otrs\OTRS\Kernel\Config\Files\ZZZAuto.pm
C:\otrs\OTRS\var\article\*
C:\otrs\OTRS\var\log\TicketCounter.log
                

到目标系统:

/opt/otrs/Kernel/Config/GenericAgent.pm
/opt/otrs/Kernel/Config/Files/ZZZAuto.pm
/opt/otrs/var/article/*
/opt/otrs/var/log/TicketCounter.log
                

在目标系统中打开文件 /opt/otrs/Kernel/Config/Files/ZZZAuto.pm ,并将所有类似“C:/otrs/OTRS/”格式的路径替换为“/opt/otrs/”格式的路径!

如果你手动修改过文件Kernel/Config.pm,请复制这些修改内容到目标系统的Kernel/Config.pm。不要复制原样复制,因为你现在的数据库设置不同,并且文件路径在目标系统和原Windows系统不一样!

重新安装所有软件包

用软件包管理器重新安装所有软件包,以获取所有定制的文件。

shell> bin/otrs.SetPermissions.pl --otrs-user=otrs --otrs-group=otrs --web-user=www-data --web-group=www-data /opt/otrs
shell> su - otrs
shell> cd /opt/otrs
shell> perl bin/otrs.Console.pl Maint::Cache::Delete
shell> perl bin/otrs.Console.pl Maint::Loader::CacheCleanup
shell> perl bin/otrs.Console.pl Admin::Package::ReinstallAll
shell> exit
                

再次修复OTRS系统的所有权限:

shell> bin/otrs.SetPermissions.pl --otrs-user=otrs --otrs-group=otrs --web-user=www-data --web-group=www-data /opt/otrs
                

禁用目标系统PostgreSQL数据库的远程访问

撤消在目标系统启用PostgreSQL数据库远程访问的所有步骤。

切换到postgresql目录:

shell> cd /etc/postgresql/9.4/main
shell> vi postgresql.conf
                

移除这个文件末尾的下列行:

listen_addresses = '*'
                

保存文件。

shell> vi pg_hba.conf
                

移除这个文件末尾的下列行:

host all all  0.0.0.0/0 md5
                

保存文件。

重启PostgreSQL服务器

shell> service postgresql restart
                

启动OTRS服务

启动目标系统的服务:

shell> service cron start
shell> service apache2 start
shell> su - otrs
shell> cd /opt/otrs/
shell> bin/Cron.sh start
shell> bin/otrs.Daemon.pl -a start
                

现在你就能在浏览器中打开复制了Windows版本数据的OTRS系统。