升级OTRS版本(从4到5)

这些说明适用于想升级OTRS版本的人群,从45或从 5到版本5最近的补丁集。

如果你正运行在一个低版本的OTRS上,首先需要按如下升级顺序先升级到OTRS 4:1.1->1.2->1.3->2.0->2.1->2.2->2.3->2.4->3.0->3.1->3.2->3.3->4! 在每个版本间需要执行完全升级,包括修改数据库和升级的Perl脚本。

请注意:如果你从OTRS 2.2之前的版本升级,还需要参照执行额外的步骤

在大版本内你可以跳过小版本升级,比如你可以直接从OTRS 5 补丁级别2直接升级到版本5补丁级别6。如果你只是升级补丁级别,可以跳过步骤6、10、11、14、17和18。

强烈建议在一台独立的测试主机上先进行升级测试。

步骤1:停止所有相关的服务

请确保没有任何运行中的服务或CRON计划任务还在试图访问OTRS。取决于你的服务配置,下面是一个例子:

shell> /etc/init.d/cron stop
shell> /etc/init.d/postfix stop
shell> /etc/init.d/apache stop
            

取决于从个哪个版本升级,按以下顺序停止OTRS CRON计划任务或守护进程:

shell> cd /opt/otrs/
shell> bin/Cron.sh stop
shell> bin/otrs.Scheduler.pl -a stop
            

shell> cd /opt/otrs/
shell> bin/Cron.sh stop
shell> bin/otrs.Daemon.pl stop
            

步骤2:备份/opt/otrs/下面的所有内容

  • Kernel/Config.pm

  • Kernel/Config/GenericAgent.pm(仅供参考,这个文件不再需要)

  • Kernel/Config/Files/ZZZAuto.pm

  • var/*

  • 当然还有数据库

步骤3:确保你已经备份了所有需要备份的 ;-)

步骤4:安装新版本(源码或RPM包)

步骤4.1:使用源码:

shell> cd /opt
shell> mv otrs otrs-old
shell> tar -xzf otrs-x.x.x.tar.gz
shell> mv otrs-x.x.x otrs
            
恢复原配置文件

  • Kernel/Config.pm

  • Kernel/Config/Files/ZZZAuto.pm

恢复TicketCounter.log

为了让OTRS继续使用正确的工单编号,恢复文件TicketCounter.log到目录/opt/otrs/var/log/。这对于使用自动增长的工单编号特别有用。

恢复工单数据

如果你配置OTRS将信件数据存储在文件系统,你必须恢复article目录到/opt/otrs/var/或在系统配置中指定的目录。

设置文件权限

请执行

shell> cd /opt/otrs/
shell> bin/otrs.SetPermissions.pl
                

参数为你的系统设置需要的权限。例如:

  • 以OTRS用户运行WEB服务器:

    shell> bin/otrs.SetPermissions.pl --web-group=otrs
                    

  • 以wwwrun用户运行WEB服务器(如SUSE):

    shell> bin/otrs.SetPermissions.pl --web-group=wwwrun
                    

  • 以apache用户运行WEB服务器(如Red Hat、CentOS):

    shell> bin/otrs.SetPermissions.pl --web-group=apache
                    

  • 以www-data用户运行WEB服务器(如RDebian、 Ubuntu):

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

步骤4.2:使用RPM包:

shell> rpm -Uvh otrs-x.x.x.-01.rpm
            

在这种情况下通过RPM升级会自动恢复原配置文件并设置文件权限。

步骤5:检查所需的Perl模块

验证所有需要的Perl模块都已经安装到系统中,并安装可能缺失的模块。

shell> /opt/otrs/bin/otrs.CheckModules.pl
        

步骤6:应用数据库修改

步骤6.1:数据库schema升级

MySQL:

注意

注意:在MySQL升级过程中会在默认的表存储引擎创建新表。在MySQL 5.5中,新的默认存储引擎是 InnoDB。如果现有的表如‘users’表的表存储引擎是MyISAM,则在创建外键约束时会报错。在这种情况下,我们推荐将所有的表切换到InnoDB引擎,可通过执行命令行脚本切换:bin/otrs.Console.pl Maint::Database::MySQL::InnoDBMigration

任何与存储引擎相关的问题都可以通过命令检查出来:bin/otrs.Console.pl Maint::Database::Check,所以请运行这个命令来检查可能的问题。

shell> cd /opt/otrs/
shell> cat scripts/DBUpdate-to-5.mysql.sql | mysql -p -f -u root otrs
shell> bin/otrs.Console.pl Maint::Database::Check
                    

PostgreSQL:

shell> cd /opt/otrs/
shell> cat scripts/DBUpdate-to-5.postgresql.sql | psql --set ON_ERROR_STOP=on --single-transaction otrs otrs
                

步骤6.2:数据库迁移脚本

运行迁移脚本(用otrs用户,而不是root用户):

shell> scripts/DBUpdate-to-5.pl
            

如果这个脚本运行不正常,请不要继续升级,否则可能丢失数据。

步骤7:刷新配置缓存并删除缓存

请运行(用otrs用户,而不是root用户):

shell> cd /opt/otrs/
shell> bin/otrs.Console.pl Maint::Config::Rebuild
shell> bin/otrs.Console.pl Maint::Cache::Delete
        

步骤8:重启服务

例如(取决于使用的服务,可能有差异):

shell> /etc/init.d/apache start
shell> /etc/init.d/postfix start
shell> /etc/init.d/cron start
        

现有你可以登录到系统了。

步骤9:检查安装的软件包

注意

OTRS 4的软件包与OTRS 5不兼容,所以你还需要升级软件包!

下列软件会在升级过程中自动卸载(如果之前安装了的话):

  • OTRSGenericInterfaceMappingXSLT

步骤10:配置NodeID(仅适用于多前端的群集安装)

注意

这一步仅在你有多台前端主机的群集安装时才需要。

从OTRS 5开始,每个前端服务器需要有它自己唯一的NodeID(节点编号)。对单前端安装来说默认就是1,不需要配置。如果有多台主机,每台主机都需要设置这个唯一值,可为从1999的任一值。这个配置在文件Kernel/Config.pm中。

$Self->{'NodeID'} =  '2';   # 为每个前端服务器分配一个唯一的值
            

步骤11:检查跟进检测配置

跟进检测设置被重新组织了。现在OTRS默认在邮件主题和引用内容中搜索来检测是否为跟进邮件。如果你想修改跟进检测设置(比如在正文、附件或原始邮件内容中搜索),请在系统管理的系统配置 Ticket -> Core::PostMaster中检查设置。

步骤12:启动OTRS守护进程

新的OTRS守护进程负责处理OTRS中的所有异步和循环任务。之前在cron文件中定义的自动任务现在都由OTRS守护进程处理。这个守护进程还处理所有的‘GenericAgent自动任务’任务,它必须以otrs用户运行。

shell> /opt/otrs/bin/otrs.Daemon.pl start
            

步骤13:升级和激活cron任务

/opt/otrs/var/cron/*.dist有两个默认的cron文件,它们的目的是确保OTRS守护进程正常运行。它们需要复制为没有“.dist”扩展名的新文件来激活。

shell> cd /opt/otrs/var/cron
shell> for foo in *.dist; do cp $foo `basename $foo .dist`; done
            

要在系统中安排这些cron任务,你可以使用otrs运行脚本文件Cron.sh

shell> /opt/otrs/bin/Cron.sh start
            

请注意:如果你有定制的cron任务,应该考虑将它们移到系统配置Daemon -> Daemon::SchedulerCronTaskManager::Task中,以便由OTRS守护进程来统一执行。你可能还需要修改你的定制脚本,因为现在大部分OTRS命令都通过bin/otrs.Console.pl统一管理,而不是单个的脚本。

注意

控制台命令Dev::Code::Generate::ConsoleCommand可以帮助创建新的控制台命令用来定制脚本。这个命令会创建一个模板,可以调整其中的脚本逻辑和相关参数。

步骤14:回顾你的工单通知

在OTRS 5中工单通知配置与之前的版本不一样。它们现在是“事件通知”(以前的版本也有)的一部分(现在被称为“工单通知”)。你原有的工单通知已经迁移到工单通知列表中,但没有激活。你还会接收到新的默认工单通知(默认激活的)。

如果你没有修改老版本中的工单通知你就不需要再做任何事情。如果你做了本地的修改或翻译,可有两个选择:a) 你可以迁移你的修改内容到新的工单通知(推荐),或b)你可以不激活新的通知并重新激活老版本的通知。

还要检查升级通知收件人设置,看看是否匹配你的期望值(工单在其队列中服务人员 vs 拥有读取权限的所有服务人员)。这个设置之前是通过文件Kernel/Config/GenericAgent.pm(现已废弃)来配置的,现在可以通过图形界面中每个通知类型单独控制。

步骤15:升级系统注册(可选)

如果系统已经注册到OTRS集团,强烈推荐这个时候更新注册信息。这将在OTRS集团的记录中更新注册的版本信息及其它变化了的信息,以便从云服务中获得更准确的信息。

如果你不手动更新注册信息,则会在定期连接时自动更新,但这可能是几个小时或几天后的事了,在此期间可能会从云服务得到一些错误信息比如:OTRS Business Solution™更新。

shell> cd /opt/otrs/
shell> bin/otrs.Console.pl Maint::Registration::UpdateSend --force
shell> bin/otrs.Console.pl Maint::Cache::Delete
            

步骤16:迁移基于Perl的定制自动任务(可选)

这一步仅与你有任何定制的自动任务使用了OTRS 4的Perl配置文件如Kernel/Config/GenericAgent.pm有关,这些任务不再能由定期的工单通知处理。这些任务现在需要在系统配置(Daemon -> Daemon::SchedulerCronTaskManager::Task)中注册为OTRS守护进程的cron任务,以便能够定期执行。

在系统配置中为此准备了5个设置参数(Daemon::SchedulerCronTaskManager::Task###GenericAgentFile1Daemon::SchedulerCronTaskManager::Task###GenericAgentFile5)。如果还不够,可以添加到一个定制的系统配置文件中。

请用<ModuleName<替换包含定制的自动任务的配置文件名,如用Kernel::Config::GenericAgent替换Kernel/Config/GenericAgent.pm,按以前的执行周期设置计划时间,选中这个参数(激活)并保存修改。

注意

要获取关于运行自动任务参数的更多信息,请执行以下语句:

shell> bin/otrs.Console.pl Maint::GenericAgent::Run --help
            

步骤17:设置bash自动补齐功能(可选)

所有的常规OTRS命令操作现在都通过OTRS控制台接口 bin/otrs.Console.pl执行。它提供bash的自动补齐功能,在查找正确的命令和选项时更容易些。

你可以安装软件包bash-completion来激活bash的自动补齐功能。它能为otrs用户自动检测到并载入文件/opt/otrs/.bash_completion

重启shell后,你可以在输入bin/otrs.Console.pl后按TAB键,就会显示所有可用的命令。如果你键入了命令的部分字符,按TAB键会列出所有匹配这些字符的命令。在输入完整的命令后,按TAB键会列出所有可用的选项和参数。

步骤18:回顾工单操作窗口配置(可选)

一些工单操作窗口比如“备注”在OTRS 4中有默认的主题(‘备注’的默认主题可通过系统配置参数Ticket::Frontend::AgentTicketNote###Subject设置)。这些默认的主题已经被移除了,以便减少潜在的冗余或无意义的数据。如果这些对你很重要,可以重新添加。

步骤19:审查工单事件模块配置

由于在 OTRS 5s的修正BUG,一些工单事件模块的配置名称必须被修改。任何可能的定制都需要重新应用。请检查您在SysConfig -> Ticket -> Core::Ticket 的设置并检查以 Ticket::EventModulePost开头的所有定制设置是否需要重新应用。例如,你已经激活并配置的事件处理程序以将客户数据保存在工单动态字段中的设置。

步骤20:搞定!