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的OTRS安装并想迁移到Linux系统,你需要安装一台Linux服务器或虚拟主机并在系统中安装OTRS(参阅安装说明章节),这将是迁移的目标系统。
进入Windows版的系统管理菜单,并安装最新版的OTRSCloneDB软件包到OTRS:
你可以从软件包管理器中直接安装OTRSCloneDB软件包。从左侧的下拉列表中选择“OTRS Extensions”并点击“更新软件仓库信息”按钮,然后会在一个列表中显示OTRSCloneDB软件包,点击“安装”即可。
你还可以从OTRS的FTP服务器上手动下载这个软件包,并用下面的方法手动安装这个软件包。 http://ftp.otrs.org/pub/otrs/packages/
请下载最高版本号的软件包:
OTRSCloneDB-1.0.13.opm
安装到Windows版的OTRS中:
如果你安装了一些附加功能或对OTRS进行了定制开发也没有问题。你只需注意所有安装的软件也能与Unix类的系统兼容就可以了,由OTRS提供的软件包就是这样。
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
停止目标系统所有运行的服务:
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
进入目标系统的OTRS目录:
shell> cd /opt/otrs
查看目录系统的配置文件:
shell> less Kernel/Config.pm
你往下拉一点就能找到你的数据库密码:
在我们的示例中:
I88cm34A1B6xrl3
把密码写在一张纸上。
切换回Windows版的OTRS,打开系统管理菜单中的系统配置。选择“OTRSCloneDB”组-“Configuration”子组:
我们需要使用下列值来配置系统配置选项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
要运行OTRSCloneDB脚本我们需要切换到Windows版本的OTRS的命令行屏幕,并进入OTRS安装的目录:
shell> cd "C:\otrs"
如果你使用的是StrawberryPerl,则你需要激活Perl shell:
shell> StrawberryPerl\portableshell.bat
OTRSCloneDB脚本位于OTRS目录的bin目录。
shell> cd "OTRS\bin"
运行OTRSCloneDB脚本:
shell> perl otrs.CloneDB.pl
现在你应该能够看到关于这个脚本及其参数的一些信息。
注意:没加参数运行时出现错误可能与错误的数据库登录信息有关,或者数据库连接有问题。
如果没有出现错误,检查试运行能否成功:
shell> perl otrs.CloneDB.pl -n
开始克隆数据库,交叉手指祈祷好运吧:
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系统复制一些文件到目标系统,你可以用一个免费工具软件如“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目录:
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