搜索​​​​

清除过滤器
文章
姚 鑫 · 七月 15, 2022

第六章 使用嵌入式 Python (三)

# 第六章 使用嵌入式 Python (三) # 从 ObjectScript 调用嵌入式 Python 代码 ## 使用 Python 库 嵌入式 `Python` 让可以轻松访问数以千计的有用库。通常称为“包”,它们需要从 `Python` 包索引 `(PyPI)` 安装到 `/mgr/python` 目录中,然后才能使用。 例如,`ReportLab Toolkit` 是一个用于生成 `PDF` 和图形的开源库。以下命令使用软件包安装程序 `irispip` 在 `Windows` 系统上安装 `ReportLab`: ```java C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python reportlab ``` 在基于 `UNIX` 的系统上,使用: ```java $ pip3 install --target /InterSystems/IRIS/mgr/python reportlab ``` 安装包后,可以使用 `%SYS.Python` 类的 `Import()` 方法在` ObjectScript` 代码中使用它。 给定一个文件位置,以下 `ObjectScript` 方法 `CreateSamplePDF()` 创建一个示例 `PDF` 文件并将其保存到该位置。 ```java Class Demo.PDF { ClassMethod CreateSamplePDF(fileloc As %String) As %Status { set canvaslib = ##class(%SYS.Python).Import("reportlab.pdfgen.canvas") set canvas = canvaslib.Canvas(fileloc) do canvas.drawImage("C:\Sample\isc.png", 150, 600) do canvas.drawImage("C:\Sample\python.png", 150, 200) do canvas.setFont("Helvetica-Bold", 24) do canvas.drawString(25, 450, "InterSystems IRIS & Python. Perfect Together.") do canvas.save() } } ``` 该方法的第一行从 `ReportLab` 的 `pdfgen` 子包中导入 `canvas.py` 文件。第二行代码实例化一个 `Canvas` 对象,然后继续调用它的方法,这与调用任何 `IRIS` 对象的方法很相似。 然后,可以以通常的方式调用该方法: ```java do ##class(Demo.PDF).CreateSamplePDF("C:\Sample\hello.pdf") ``` ## 调用用 `Python` 编写的 `IRIS` 类的方法 可以使用嵌入式 `Python` 在 `IRIS` 类中编写方法,然后从 `ObjectScript` 调用它,就像调用用 `ObjectScript` 编写的方法一样。 下一个示例使用 `usaddress-scourgify` 库,可以从 `Windows` 上的命令行安装,如下所示: ```java C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python usaddress-scourgify ``` 在基于 `UNIX` 的系统上,使用: ```java $ pip3 install --target /InterSystems/IRIS/mgr/python usaddress-scourgify ``` 下面的演示类包含美国地址部分的属性和一个用 `Python` 编写的方法,该方法使用 `usaddress-scourgify` 根据美国邮政服务标准对地址进行规范化。 ```java Class Demo.Address Extends %Library.Persistent { Property AddressLine1 As %String; Property AddressLine2 As %String; Property City As %String; Property State As %String; Property PostalCode As %String; Method Normalize(addr As %String) [ Language = python ] { from scourgify import normalize_address_record normalized = normalize_address_record(addr) self.AddressLine1 = normalized['address_line_1'] self.AddressLine2 = normalized['address_line_2'] self.City = normalized['city'] self.State = normalized['state'] self.PostalCode = normalized['postal_code'] } } ``` 给定地址字符串作为输入,类的 `Normalize()` 实例方法规范化地址并将每个部分存储在 `Demo.Address` 对象的各种属性中。 可以按如下方式调用该方法: ```java USER>set a = ##class(Demo.Address).%New() USER>do a.Normalize("One Memorial Drive, 8th Floor, Cambridge, Massachusetts 02142") USER>zwrite a a=3@Demo.Address +----------------- general information --------------- | oref value: 3 | class name: Demo.Address | reference count: 2 +----------------- attribute values ------------------ | %Concurrency = 1 | AddressLine1 = "ONE MEMORIAL DR" | AddressLine2 = "FL 8TH" | City = "CAMBRIDGE" | PostalCode = "02142" | State = "MA" +----------------------------------------------------- ``` ## 运行用 `Python` 编写的 `SQL` 函数或存储过程 当使用嵌入式 `Python` 创建 `SQL` 函数或存储过程时, `IRIS` 会投影一个具有可从 `ObjectScript` 调用的方法的类,就像使用任何其他方法一样。 例如,本文档前面示例中的 `SQL` 函数会生成一个类 `User.functzconvert`,它有一个 `tzconvert()` 方法。从 `ObjectScript` 调用它,如下所示: ```java USER>zwrite ##class(User.functzconvert).tzconvert($zdatetime($h,3),"US/Eastern","UTC") "2021-10-20 15:09:26" ``` 这里,`$zdatetime($h,3)` 用于将当前日期和时间从 `$HOROLOG` 格式转换为 `ODBC` 日期格式。 ## 运行任意 Python 命令 有时,当开发或测试嵌入式 `Python` 代码时,从 `ObjectScript` 运行任意 `Python` 命令会很有帮助。可以使用 `%SYS.Python` 类的 `Run()` 方法来执行此操作。 也许想测试本文档前面使用的 `usaddress_scourgify` 包中的 `normalize_address_record()` 函数,但不记得它是如何工作的。可以使用 `%SYS.Python.Run()` 方法从终端输出函数的帮助,如下所示: ```java USER>set rslt = ##class(%SYS.Python).Run("from scourgify import normalize_address_record") USER>set rslt = ##class(%SYS.Python).Run("help(normalize_address_record)") Help on function normalize_address_record in module scourgify.normalize: normalize_address_record(address, addr_map=None, addtl_funcs=None, strict=True) Normalize an address according to USPS pub. 28 standards. Takes an address string, or a dict-like with standard address fields (address_line_1, address_line_2, city, state, postal_code), removes unacceptable special characters, extra spaces, predictable abnormal character sub-strings and phrases, abbreviates directional indicators and street types. If applicable, line 2 address elements (ie: Apt, Unit) are separated from line 1 inputs. . . . ``` `%SYS.Python.Run()` 方法在成功时返回 `0`,在失败时返回 `-1`。
文章
Claire Zheng · 十月 18, 2022

四则优秀案例分享:医疗数据大规模集成

在美国各地,当需要实现大规模的应用集成时,医疗行业的领导者会使用InterSystems HealthShare Health Connect®。无论是为了连接电子病历,还是为了提升床边护理决策能力,无论是为了创新远程医疗和远程护理,还是为了业务增长,亦或是为未来做准备,InterSystems和Health Connect随时准备好帮助您和您的组织实现目标。我们在此提供几个InterSystems医疗行业的集成实例以作示范。 案例一:大规模的互操作性有助于成功部署Epic 美国东北部的一个主要综合交付网络(IDN)的IT系统每年为13家医院、数千名临床医生和150万名患者提供服务。当该机构将其内部开发的临床和财务应用程序替换为Epic时,Health Connect的集成功能通过以下管理帮助其实现顺利过渡: •连接5000个医疗设备 •得益于基因组学、新的影像技术和互联设备,在Epic之外的数据量增长了225%(从20TB增长到65TB) •Epic与其他IT系统的接口数量增加了34% •Epic部署完成后,消息量增加了近330%(每天7300万) Epic和Health Connect共同将该机构的医疗护理协同和标准化提升到一个新的水平,并将成为未来创新的平台。 案例二:从15个集成引擎减少到1个,节省2100万美元 如果没有收购很多不同的软件系统,你就不可能成为美国前三的综合交付网络(IDNs)之一。这包括集成引擎,它可以通过数千个遗留接口连接所有东西。 当这个IDN决定在一个集成平台上进行整合时,团队意识到他们投资的不只是软件,而是大规模的项目迁移。在仅有4名开发人员的情况下,该机构在21个月内将2000多个接口转换和部署到InterSystems HealthShare Health Connect上,实现了替换7000个接口的目标。更重要的是,IDN有望为每个接口节省3000美元的开发成本,预计总成本为2100万美元。通过支持世界上最大的集中式集成项目之一,Health Connect正在确保该机构能够继续发展和扩大互联医疗业务。 IDN对竞争解决方案的评估突出了HealthShare Health Connect的一个主要优势——可快速转换为新的产品质量接口。 案例三:零停机部署HealthShare Health Connect,提前1年完成计划 当COVID-19大流行来袭时,美国东南部的某大学医疗中心正在用InterSystems HealthShare Health Connect替换其使用了30年的本土数据集成引擎。在这个过程中不允许出现停机或任何切断临床医生和研究人员获取患者重要数据的风险。 该医疗中心与InterSystems公司合作,提前一年完成了集成引擎的更换。IT团队将来自60个医疗机构的临床医生和来自300个数据接口的信息连接了起来,与此同时,临床医护人员却没有感知到他们每天使用的应用程序底层发生的任何变化。由于没有发生停机,在疫情日益严重的情况下所有医疗护理资源得到了充分应用。 案例四:规模化集成,实现业务增长和护理创新 在美国西部,一家大型IDN已经发展到包括23家实体医院、1家线上医院、215家诊所、6个州的远程医疗操作、1个保险计划和4万名护理人员。该机构使用InterSystems集成技术来实现和管理这种增长,同时保持其敏捷和创新。自2014年以来,InterSystems技术通过以下方式服务于IDN的使命和目标: •每月处理2.25 - 2.5亿笔交易,绝对可靠 •集成220个独立应用的数据 •在线上医院中,将电子病历与家庭设备连接,并应用于远程医疗 •使用FHIR标准与外部合作伙伴共享数据 •利用FHIR简化消费者门户网站的数据披露 •规模化
文章
Louis Lu · 四月 15, 2021

2020线上峰会 —— 第2天数据平台专题会议精彩回顾

我们刚刚结束了第二天的专题会议,会议内容精彩纷呈!虽然大家无法同时观看多个平行会议,但是线上会议有一个优势,那就是您可以根据自己的需要回看错过的内容! 在昨天的博客文章(第一天会议亮点)中,我介绍了大部分值得关注的公告,如 InterSystems IRIS Adaptive Analytics 和FHIR加速器服务等。所以,今天我想更宽泛地讨论一些战略主题。 运营和系统管理 现在,越来越多的客户业务已经运行在云端,也有越来越多的人开始在本地部署现代部署策略。Mark Bolinsky今天主持了两场背靠背会议:CL003 云存储策略和CL004 云备份策略,为使用云端生产工作的用户带来了很多技术细节。我们新推出的系统警报和监控(SAM)模块也得到了不错的反馈。相关内容请查看DEV007 系统警报和监控和CL005 分布式部署。另一个另广大开发者兴奋的消息是,集群监控现在可以轻松实现。在此感谢所有参与并提出问题的与会者! 安全性 在安全性方面,InterSystems一直受到客户和分析师的高度好评,不过大多数人会认为这样做是为了保持自身产品的安全。这当然是我们的一个目标,但是我们还添加了许多新的安全特性。今天的SEC000 OCSP装订就是一个典型的例子。虽然OCSP(在线证书状态协议)可提供更强的安全性,但也会影响浏览器性能。使用OCSP装订功能后,服务器会检查X.509证书的有效性,并将状态进行装订响应给浏览器,从而大幅缩短响应时间,并增强安全性。 机器学习 去年,我们发布了一款纯SQL的嵌入式机器学习工具——IntegratedML。现在,这一工具已被广泛应用。今天,Tom Dyar向大家介绍了这款工具的入门教程,并深入探讨了H2O和DataRobot的合作。昨天的内容还包括我们的早期采用者Baystate的用例。更多关于机器学习平台的最佳实践的内容将在明天为大家揭晓! 数据仓库和商业智能 为了让InterSystems IRIS能够更加成功地应用于分析用例中,我们做了大量投资,新的自适应分析产品只是其中的一项。Benjamin De Boe在会上概述了公司在数据仓库技术方面所做出的努力,并向大家介绍了我们SQL引擎的一些内部结构。在终端用户方面,Mark Massias介绍了我们为用户提供的自由选择——用户可以自由选择商业智能和报告工具,以便将数据仓库中的数据可视化。最后,Carmen Logue介绍了我们的合作伙伴——来自BioReference Labs的Mike Senatore,他们采用了我们新的“Selective Cube Build”功能,以最大限度地提高其InterSystems IRIS BI环境的可用性。明天会介绍关于我们与新技术合作伙伴Altheryx在该领域的更多合作内容! 开发人员对话 在今天的几个会议中,我们的开发人员介绍了几款将数据和应用程序导入IRIS数据平台的强大工具。Harry介绍了如何使用Change Data Capture这一现代技术在数据库之间进行数据迁移。如果您想要构建客户端应用程序,请查看Bob Kuszewki的指南:对象、关系和本机客户端Java API。说到应用程序开发,如果您想要构建和部署IRIS应用程序,那么Tim Leavitt主持的ZPM软件包管理器专题会议不容错过。 互操作性和FHIR Matt Spielman在FHIR展望专题会议中回顾了自2014年开始的InterSystems对FHIR技术的研究历史。他概述了未来两年的FHIR路线图,包括bulk FHIR和FHIR分析。随着FHIR的发展,FHIR的需求增长越来越多地来自客户,而InterSystems工程师的推动作用越来越小。 InterSystems在增强X12支持方面将继续投入大量资金。IP004:新的X12增强功能展示专题会议简短介绍了X12的新功能,并演示了一些值得关注的功能,包括SNIP Level 1和2验证以及专门针对X12的合并DTL支持功能。 Stefan Wittmann在IP003:HL7 Feeds助力高效运行专题会议中提前展示了HL7生产力工具包的最新功能。InterSystems IRIS现在能够根据入站和出站HL7v2消息生成DTL存根,支持接口开发人员采用迭代模式改进DTL和重新测试。我们希望此功能可以进一步提高生产力。另一个功能是将用户跨命名空间或安装实例对production进行修改成为可能,从而显着降低升级成本。 自InterSystems API Manager(IAM)问世一年多以来,许多合作伙伴已经使用了InterSystems IRIS数据库平台的这一新功能。所以今天的会议对IAM进行了更深入的介绍。IP002:快速入门InterSystems API Manager 为尚未探索IAM的人士提供了一次快速了解IAM主要功能的机会,并介绍了下一版本IAM 1.5.0.3将包含的新特性。Stefan还在IP001:IAM的最佳实践专题会议中探讨了实现高可用性并对API流量提供最佳粒度控制的方法。 未来活动 专题会议将于明天结束,我们期待会议取得圆满成功。会后大家仍然可以通过多种方式与我们互动。欢迎通过VS2020questions@InterSystems.com发送您的问题和反馈。您还可以在当天结束时参与现场问答环节,充分利用下周的学习和工作时间。 如果想深入了解您感兴趣的话题,最好的途径是参与我们的咨询专家活动。欢迎提前预约10月30日或11月2日由专家或培训师主持的相关会议! 今天的线上峰会上您最喜欢的内容是什么?请在下方的评论中告诉我们。 祝明天的会议顺利! Jeff
公告
Claire Zheng · 六月 16, 2021

6月19日直播报名 | 国内外互联互通标准解读与实践

为了解国内外最新的互联互通标准,共同助推我国卫生信息互联互通标准化成熟度测评工作,指导各地医院信息平台的建设,《中国卫生信息管理杂志》社决定召开国内外互联互通标准解读与实践线上交流会。会议由《中国卫生信息管理杂志》社主办,InterSystems中国协办,欢迎报名参会!
公告
Claire Zheng · 二月 22, 2021

版主招募进行时

大家好! InterSystems开发者社区中文版正在招募版主,以更好地推动中文社区建设,期待每一位开发者的积极参与,共同打造一个高效沟通的技术社区! 欢迎点击报名(或扫描下方二维码),审核通过后,我们会与您详细沟通版主权益及义务。 - 已经停止收集拉 没有停止收集,请直接扫码报名
问题
li liao · 八月 30, 2023

Caché 2016.1 CDC

参考 https://blog.csdn.net/InterSystems/article/details/115350635 搭建 mirror ,获取数据变更,示例给出了获取数据变更的代码: Class ZCustom.MirrorDejournal Extends SYS.MirrorDejournal{ Method RunFilter( MirrorDBName As %String, GlobalReference As %String, RecordType As %String, Address As %Integer) As %Integer{ Set ^CDCLog( $I($^CDCLog))=$lb(MirrorDBName,GlobalReference,RecordType,Address) Quit 1} 示例代码将变更存储在 global 对象 CDCLog 中,想请问下获取变更前后数据,发送到外部系统,有哪些方式? 可以参考我们的CDC系列文章https://cn.community.intersystems.com/node/491941,谢谢!
公告
Michael Lei · 四月 29, 2022

欢迎给我们提供创意!

我们很高兴向您介绍我们新的反馈门户网站--InterSystems Ideas! 我们的目标是改善我们的反馈机制,使您可以建议我们的产品如何发展以满足您的业务挑战。在开发者社区提问是与您的同行就特定的代码问题进行互动的好方法,而我们的客户支持网站WRC则一如既往地是解决实时问题的方法。 这个新的门户是为了获得您更高层次的想法。不是关于今天如何,更多是关于未来,您想看到我们的产品在未来如何更好地工作。您可以发布您自己的反馈,也可以对其他人提供的反馈进行评论/投票。InterSystems将查看你提交的任何反馈,直接回应你的反馈,并且如果您的建议有了任何进展,我们将及时更新状态。 所以,欢迎提出您的想法,为了我们共同的未来!谢谢!
公告
Claire Zheng · 十月 17, 2023

重要公告:征文大赛将延期至11月24日!欢迎继续投稿,参加InterSystems开发者社区中文版第二届技术征文大赛!

嗨,开发者们! 我们决定将🏆InterSystems开发者社区中文版第二届技术征文大赛 🏆的参赛时间延长至11月24日,请参赛者关注重要时间节点的变化。 📝 2023年9月19日-11月23日(北京时间),文章发布与点赞收集!在社区发布文章后即可开始为您的文章收集点赞。越早发布文章,就越有时间收集更多点赞(这是您获得“开发者社区奖”的关键)。 📝 2023年11月23日(北京时间),专家打分截止(专家提名奖)。 🎉 2023年11月24日(北京时间),公布获奖名单。 欢迎大家继续积极投稿,赢取大奖! 了解参赛规则及文章样例:点击此处 了解奖品详情:点击此处 欢迎投稿参赛! 快乐分享技术,期待您的大作!✨ 🏆InterSystems开发者社区中文版第二届技术征文大赛 🏆(←点击链接进入参赛页面,浏览所有参赛文章)
公告
Claire Zheng · 五月 24, 2021

CHIMA大讲堂第十九期“集成平台赋能智慧医院建设”将于5月27日开讲

5月27日,CHIMA大讲堂第十九期邀请医院信息化专家和InterSystems技术专家,共同探讨集成平台赋能智慧医院建设这一话题。欢迎大家围观参会!InterSystems专家演讲概要如下: 演讲人 李岩 ( @Li.Yan ),InterSystems中国业务拓展经理演讲主题构建更智慧的医院信息平台演讲概要在需求的拉动下和政策、标准的推动下,为了给患者提供更好的就医体验,给医务人员提供更好的临床服务,给管理者提供更好参考和手段,智慧医院的建设如火如荼地发展起来了。智慧医院的建设并不是某一应用、某一系统的点状建设,而是打通各个环节、各个系统的全面的建设。 作为医院系统互通的核心的医院信息平台,如何更加“智慧”,如何更好地赋能智慧医院建设?希望本期分享能为您带来一些启发。 演讲人 乔鹏 (@Qiao.Peng) ,InterSystems中国技术总监演讲主题从集成平台到医院信息平台演讲概要当前医院信息化建设是否需要一个集成平台?是不是仅仅因为互联互通才需要集成平台? 集成平台是否只是一个过渡性的产品?医院信息平台是集成平台的发展方向吗? 此次分享将和大家一起讨论这些问题,探究集成平台出现的原因、它的价值和不足,以及目前医疗信息化建设对集成平台的挑战。探讨医院信息平台作为集成平台的未来,它的核心价值、能力、设计思路和实施路径。 完整日程如下: 手机端请扫描图片中二维码,电脑端请复制下方链接观看。https://djt.chima.org.cn/ 欢迎大家报名、围观、参会! 陆主任会从目前平台建设存在的问题、平台框架选择、平台建设注意事项等全方位,多角度的介绍广医二院的医疗信息平台建设
文章
Qiao Peng · 四月 15, 2021

数据平台焦点会议第 3 天的亮点

圆满结束! 所有的专题会议都已经播出了。当然,我们全部102部预录制的专题会议现在可以点播了,您可以随意观看,即使您错过了现场问答的机会。 说到现场问答,我们已经举办了6次现场会议,您也可以观看。我之前写过一篇单独的博客文章,题目是如何让您的问题会帮助我们做得更好。 智能工厂启动包 今天备受关注的亮点之一是Intersystems IRIS智能工厂启动包在OpenExchange上发布。为此,我们的合作伙伴ITVisors和他们的客户Vlisco与我们的Joe Lichtenberg一起举办了一场精彩的会议“MFG001:介绍适用于制造业的InterSystems IRIS智能工厂启动包”。 容器和Kubernetes平台 今天我们宣布了一个高度安全的新版IRIS容器,名为“iris-lockeddown”,这个容器非常适合在Kubernetes中使用加固型pod安全策略的团队。说到Kubernetes,Steve Lubars演示了我们新的InterSystems Kubernetes Operator,它让您可以很轻松地在Kubernetes 中部署IRIS集群。而Luca Ravazzolo则演示了如何用CPF合并文件配置您的IRIS实例,特别是如何自动化进行镜像配置。还有其他一些有趣的问题。 以上精彩内容尽在对话Ontario Systems公司企业架构师Jim Howell中,讲述了他们从庞大的旧系统迁移到Kubernetes现代化微服务架构的经历。 更多分析: 如果您觉得我们在分析领域没什么可谈论和宣布的了,再想想!Sergey在“DA014平台内AI的最佳实践”中分享了我们对平台内AI的观点,以及如何通过IRIS协调机器学习操作从而实现持续集成和交付(CI & CD)。作为“分析”板块的压轴,Benjamin展示了我们采用Alteryx的新协作项目,其允许业务分析师和主题专家不需要编程就可以构建分析工作流,并且可以轻松地将他们的工作融合到IRIS中。观看“DA011使用Alteryx搭配IRIS打造您的分析工作流”,了解更多关于这项合作的详情。 更多VS Code - ObjectScript https://intersystems.6connex.com/event/virtual-summit/en-us/contents/434914/share?rid=FocusSessions&nid=851040 我在第1天的博客中谈过这个,今天我们再次更深入地探讨了最热门的话题之一:源代码控制,观看“DEE006使用Visual Studio Code进行ObjectScript开发:选择IDE/源代码控制组合”和“DEE005使用Visual Studio Code进行ObjectScript开发:服务器端源代码控制”。我还注意到人们深入探讨了实战实验室并给与了高度评价——值得一试! 让我感到特别兴奋的是,我们在保持这一社区作为真正的开源社区的同时,还能提供大量InterSystems核心开发周期和InterSystems的深度支持。请加入社区并将您的建议反馈给我们! 是的,更多关于FHIR的内容 我们的FHIR板块一直很棒,第3天也不例外。 Russ Leftwich展示了一部很棒的动画,这部动画描绘了FHIR从起源到如今的整个发展历程,其中包括了所有最新的InterSystems FHIR技术。“FH008 FHIR:为未来设计的医疗数据标准”20分钟的总结,是我见过的最棒的关于FHIR的总结。 Kurt Dawn介绍了InterSystems客户非常关注的热门话题FHIR Profiles。他展示了如何将用于实现规范的FHIR包轻松导入IRIS医疗版。Jeff Morgan的IRIS医疗版中的FHIR实现模式演示了如何使用带生产和定制逻辑的FHIR服务器——高级开发者肯定想了解一下。 持续学习 还有很多其他的会议我没有提到;我建议大家去会议网站搜索自己感兴趣的话题——您可以看到所有板块的专题会议,演示区的各种演示,以及资源区的各种内容。 如果您先想看看亮点,然后再选择观看其他内容,您可以查看我的第1天和第2天总结,我们的紧密合作伙伴J2也一直在发布每日精彩回顾(查看J2第1天专题会议的精彩回顾和第2天专题会议的精彩回顾) 请教专家是深入了解任何您感兴趣的主题的好方法。现在预约10月30日或11月2日与专家或培训师会面也不迟!而且下周是实验室周——可以尝试实战实验室!您可以选择Office Hours以及On-Demand和Live Labs。 感谢参与我们的首次线上峰会! 您可以在下面评论或通过任何您喜欢的方式告诉我们您的想法。 查看原帖 由 @Jeff Fried 撰写
文章
Lele Yang · 二月 2, 2023

停止提供内置Apache Web 服务器(也称为私有 Web 服务器 (PWS))

正如之前在 2022 年全球峰会上宣布的那样,InterSystems 将停止交付或安装基于 Apache 的web服务器(通常称为私有web服务器或 PWS);此更改目前计划用于 InterSystems IRIS 2023.2。 使用这种新方法,您可以完全控制选择最适合您目的的 Web 服务器,以及如何配置、维护和更新它。这一变化的一个主要好处是您将不再需要等待 InterSystems 的更新套件来获得最新版本,这在安全漏洞情况下尤其重要。 InterSystems 将提供可用于帮助配置 Apache 或 IIS 的工具。 (请注意,InterSystems IRIS Community Edition 将继续安装 PWS。) 安装 Web 服务器是一个常见的过程,通常很容易 - 各个 Web 服务器供应商都有详细的文档记录。 以下是适用于 Ubuntu、Windows 和 macOS 的示例。它们演示了快速安装,因此您可以看到当 InterSystems 产品不包含或安装 Web 服务器时的新行为。 (请注意,此代码按原样提供,不受支持,也不足以托管关键任务或数据敏感的应用程序。) 提供了常见问题解答,其中提供了更多信息并可访问用于尝试此新过程的工具包。请参阅本文末尾链接的 PDF 以获取常见问题解答,或者如果您想添加到讨论中,请访问https://community.intersystems.com/post/discontinue-apache-web-server-installations-faq 。 安装 Web 服务器通常有多种方法,请选择您熟悉且最适合您的方法。 已为希望试用不包含 PWS 的新安装程序的客户创建了一个新的抢先体验计划 (EAP)。如果您希望成为此 EAP 的一部分并访问这些工具包,请发送电子邮件至 nopws@InterSystems.com 。 如需反馈或疑虑,请通过nopws@InterSystems.com联系我们。 以下是 Microsoft Windows 的示例: 使用 Microsoft Windows 安装 IIS。 安装后,您可以安装 InterSystems IRIS,它将询问用户是否应配置 IIS。 下面是一个使用 Ubuntu 的例子: 先决条件:允许用户使用 sudo,Ubuntu 操作系统,未安装 PWS 对于 Ubuntu,Apache 的官方存储库可以与 apt-get 命令一起使用。 更新存储库 $ sudo apt-get update 安装Apache $ sudo apt-get install apache2 验证是否已安装 $apache2 -v 安装 InterSystems IRIS 使用 SMP 进行测试 ( http://localhost/iris/csp/sys/UtilHome.csp ) 如果您只是出于测试目的安装了 apache2,您可以使用以下命令删除 apache2: $ sudo apt-get remove apache2 这是一个使用 macOS 的示例: 安装 $ brew install apache-httpd 在升级或安装后重新启动 httpd: $ brew services restart httpd 通过使用启动它 sudo apachectl -k start 或使用重新启动它 $ sudo apachectl -k restart 测试它是否通过将您的浏览器定位到 http://localhost:8080 它应该显示:"It works" 安装 IRIS(请注意新的安装对话框,因为它是新的) 重新启动web服务器 $ sudo apachectl -k restart 使用 SMP 进行测试 ( http://localhost:8080/iris/csp/sys/UtilHome.csp ) 如果您只是出于测试目的安装了 apache-http,您可以使用以下命令删除 apache-http: $ brew remove apache-httpd 删除 Apache 相关设置或安装 请小心删除设置或配置,并自行承担使用风险。 删除单个实例的 apache httpd 配置。 找到 Apache httpd.conf 文件。它的位置取决于平台: macOS:/usr/local/etc/httpd/httpd.conf SuSE Linux: /etc/apache2/httpd.conf 红帽 Linux:/etc/httpd/conf/httpd.conf Ubuntu Linux: /etc/apache2/apache2.conf AIX:/opt/freeware/etc/httpd/conf/httpd.conf_64(如果使用 64 位 httpd) /opt/freeware/etc/httpd/conf/httpd.conf(如果使用 32 位 httpd) 以 root 身份编辑 httpd.conf 并在文件末尾删除以下部分,从 #### 开始-ApacheCSP-SECTION-<INSTANCENAME> #### 开始结束于 #### 开始-ApacheCSP-SECTION-<INSTANCENAME> ####。 使用命令“sudo apachectl -k restart”重新启动 Apache 要删除单个实例的 Web Gateway 配置: 如果更改了 WebGateway 安装目录的默认目录,请使用以下说明中的适当路径。 以 root 身份编辑 /opt/webgateway/conf/CSP.ini 并删除以下行: 在“[SYSTEM_INDEX]”部分中删除行 <INSTANCENAME>=Enabled 在“[APP_PATH_INDEX]”部分中删除行“/<nstancename>=Enabled” 删除部分“[APP_PATH:/<instancemame>]” 从所有 IRIS 实例中清除 Apache httpd: Apache配置 找到 Apache httpd.conf 文件。它的位置取决于平台: macOS:/usr/local/etc/httpd/httpd.conf SuSE Linux: /etc/apache2/httpd.conf 红帽 Linux:/etc/httpd/conf/httpd.conf Ubuntu Linux: /etc/apache2/apache2.conf AIX:/opt/freeware/etc/httpd/conf/httpd.conf_64(如果使用 64 位 httpd) /opt/freeware/etc/httpd/conf/httpd.conf(如果使用 32 位 httpd) 以 root 身份编辑 httpd.conf 并在文件末尾删除以下所有部分,以 #### 开始-ApacheCSP- 开始并结束于 #### 结束 ApacheCSP 使用命令“sudo apachectl -k restart”重新启动 Apache 要从所有 IRIS 实例中清除 Web Gateway: 要删除单个实例的 Web Gateway 配置: 如果更改了 WebGateway 安装目录的默认目录,请使用以下说明中的适当路径。 sudo rm -rf /opt/webgateway sudo rm -f /usr/local/etc/irissys/CSP_options PWS Removal FAQ
文章
Johnny Wang · 二月 6, 2022

翻译文章-数据迁移工具 - 第二部分:从My SQL到IRIS

本文是上一篇关于如何从流行数据库(如 PostgreSQL 和 MySQL)迁移到 IRIS 的后续文章。 我们将使用与从 PostgreSQL 迁移相同的过程。 但是,您会发现它更容易,因为 MySQL 中的数据类型与 IRIS 非常相似。 这就是为什么我们不需要在列中创建转换规则。 获取示例数据到迁移过程 在 GitHub 中,可以下载 docker-compose 项目来构建和运行 2 个数据库: 源数据库:带有示例数据库的 MySQL 数据库 Docker 实例。 目标数据库:InterSystems IRIS 数据平台 Docker 实例,具有用于接收源数据库的现成模式。 要获取示例并运行它,请执行以下步骤: 转到 git 存储库 https://github.com/yurimarx/migration-mysql-iris。 克隆项目:https://github.com/yurimarx/migration-mysql-iris.git。 转到项目文件夹migration-mysql-iris。 进行构建:docker-compose build。 执行容器:docker-compose up -d。 如果一切正常,请使用实例检查您的 docker 桌面: 关于要迁移的数据 要迁移的数据与第一部分中使用的数据模型相同,在这里表示: 所以,从 MySQL 到 IRIS 的迁移过程会迁移: 8张表 5000行销售数据。 2500 行用户数据。 200 行产品数据。 50行商店数据。 100行国家数据。 30行城市数据。 5 行 status_name。 迁移目标将是 InterSystems IRIS 数据库中 USER 命名空间内的 dc_test 模式。 从 MySQL 迁移到 IRIS 的开源工具:DBeaver 在第一部分中,我们使用 DBeaver 社区版进行迁移。 我们将再次使用它。 DBeaver 是一个数据库工具,用于连接、创建、删除、选择、更新和删除市场上主要数据库产品中的数据对象。 从以下网址下载:https://openexchange. intersystems.com/package/DBeaver。 现在按照安装说明将这款出色的产品安装到您的笔记本电脑或台式机中。 DBeaver 可用于在数据库连接之间迁移数据,即使它们来自不同的制造商和版本。 使用 DBeaver 连接源数据库和目标数据库 现在我们将设置要迁移的数据库连接。 设置 MySQL 到 DBeaver 的连接: 1. 在 DBeaver 中,转到文件 > 新建。 2. 选择数据库连接并单击下一步: 3. 选择 SQL 选项卡 > MySQL,然后单击下一步: 4. 填写 Main 选项卡中的 MySQL 连接字段,如下图所示: 主机:本地主机 端口:3306 数据库:db 用户名:user 密码:密码 5. 转到驱动程序属性选项卡并将 allowPublicKeyRetrieval 设置为值 TRUE: 6. 在驱动程序属性选项卡中继续,并将 useSSL 设置为值 FALSE: 7. 如果 DBeaver 请求下载 MySQL 驱动程序,请按 Yes 或 OK。 8. 单击完成。 设置 InterSystems IRIS 与 DBeaver 的连接: 在第一部分中,您配置了 IRIS 连接,但如果您没有保存它,请执行以下操作: 1. 在 DBeaver 中,转到文件 > 新建。 2. 选择数据库连接并单击下一步: 3. 选择 SQL 选项卡 > InterSystems IRIS 并单击下一步: 4. 如果 DBeaver 请求下载 InterSystems IRIS 驱动程序,请按 Yes 或 OK。 5. 设置 InterSystems IRIS 连接字段,如下图所示: 主机:本地主机 数据库/架构:用户 用户名:_SYSTEM 密码:SYS 单击文本连接并完成。 连接(db 和 user)在 Database Navigator 中可用: 进行迁移 迁移过程与第一部分中描述的非常相似。只需按照以下步骤操作: 1. 展开 db connection > Databases > db > Tables 并选择所有表。 在选定的表上单击鼠标右键,然后选择导出数据,如下图所示: 2. 选择数据库,如图所示,然后单击下一步: 3. 单击选择按钮: 4. 选择 dc_test 并点击 OK(注:如果您需要在目标和源列之间创建高级转换,请点击 Columns 按钮)。 5. 现在,单击下一步。 6. 将 Fetch size 设置为 1000000,然后单击下一步。 7. 接受数据加载设置中的默认值,然后单击下一步。 8. 在确认中单击继续。 9. 现在,如果您打开 Database Navigator,您将能够看到 InterSystems IRIS dc_test 模式中的所有 MySQL 表。 就像 PostgreSQL 迁移一样,MySQL 迁移过程对于表来说非常简单。 但是,对于视图、函数、触发器和存储过程,您需要使用 ObjectScript 或 SQL 重写 SQL 源代码。 请跟第一篇连起来形成系列,谢谢!
文章
姚 鑫 · 九月 13, 2022

第三十一章 管理许可(四)

[toc] # 第三十一章 管理许可(四) ## 显示本地许可证信息的方法 下面列出的子例程转储实例共享内存中本地包含的许可证表的内容。一般来说,他们识别客户: `$System.License.DumpLocalAll` 将所有本地许可证表条目转储到当前目录中的 `all.dmp` 文件中: ```java USER> Do $System.License.DumpLocalAll() 25 条目转储到 c:\intersystems\irishealth\mgr\user\all.dmp ``` `all.dmp` 文件的内容示例: ![image](1A9A88C990F34F43A3BD77FEDC1F933F) `$System.License.DumpLocalInUse` 将所有正在使用的本地许可证表条目转储到当前目录中的 `inuse.dmp` 文件: ```java USER> Do $System.License.DumpLocalInUse() 2 条目转储到 c:\intersystems\irishealth\mgr\user\inuse.dmp ``` `inuse.dmp` 文件内容示例: ![image](F20698F5E3FF4303BBB43608AB0C58AD) `$System.License.DumpLocalPID` 将进程 `ID` 使用的本地许可证表转储到当前目录中的 `piduse.dmp` 文件中: ```java USER> Do $System.License.DumpLocalPID() 33 条目转储到 c:\intersystems\irishealth\mgr\user\piduse.dmp ``` ![image](EF5E73E9B2814D6E9E35EB45BC4CFAFE) ## 显示许可证服务器信息的方法 以下子例程转储许可证服务器维护的许可证表的内容。输出文件位于运行活动许可证服务器的主机上的指定目录中。 `$System.License.ShowSummary` 显示许可证服务器上的许可证信息摘要。分布式许可证使用部分提供许可证服务器当前支持的所有 `IRIS` 实例的许可证使用的集体视图。本地许可证使用部分展示了运行程序的单个 `IRIS` 实例的许可证使用视图: ```java USER> Do $System.License.ShowSummary() 软件许可服务器活动密钥摘要视图. 分布式软件许可使用: 当前使用的软件许可单元 = 2 使用的最大软件许可单元数 = 2 授权的软件许可单元 = 25 本地软件许可使用: 当前连接 = 2 最大连接数 = 6 当前用户 = 2 最大用户数 = 3 ``` `$System.License.DumpServer` 将与运行此例程的服务器相关的许可服务器数据库信息转储到运行许可服务器的主机上的文件 `dumpserver.txt` 中: ```java USER> Do $System.License.DumpServer() License server database dumped to: c:\intersystems\irishealth\mgr\dumpserver.txt at LAPTOP-ARLL3DSO ``` ![image](91029303049146BEB37C8B99303CC7EA) `$System.License.DumpServers` 将所有已知服务器的许可证服务器数据库信息转储到运行许可证服务器的主机上的文件 `dumpservers.txt` 中: ```java USER> Do $System.License.DumpServers() 1 server database[s] dumped to: c:\intersystems\irishealth\mgr\dumpservers.txt at LAPTOP-ARLL3DSO ``` ![image](E192C3B466DB41C6BF6105C102A9FDE1) `$System.License.DumpKey` 将此实例和共享它的实例使用的密钥转储到运行许可证服务器的主机上的文件 `dumpkey.txt` 中: ```java USER> Do $System.License.DumpKey() License server Client data dumped to: c:\intersystems\irishealth\mgr\dumpkey.txt at LAPTOP-ARLL3DSO ``` ![image](8F12D1DD7F8343D1AF364C4EA70795E2) `$System.License.DumpKeys` 转储所有密钥,将使用它们的实例和客户端显示到运行许可证服务器的主机上的文件 `dumpkeys.txt` 中: ```java USER> Do $System.License.DumpKeys() License server Client data (1 key[s]) dumped to: c:\intersystems\irishealth\mgr\dumpkeys.txt at LAPTOP-ARLL3DSO ``` ![image](4332B2E4448343F9B86ED55EB2AC5109) 注意:请注意,本地许可方法显示的信息比许可服务器方法显示的信息更新;许可证服务器只定期更新,而本地数据是实时的。 可能会暂时超出许可限制,因为登录是在本地控制的,但许可服务器会强制执行该限制。每个实例根据其在实例共享内存中维护的本地许可证表允许或拒绝登录。每个实例都会定期向许可证服务器发送更新,描述本地许可证表的更改。如果所有实例的组合许可证使用超过限制,则许可证服务器将发送否定确认以更新来自每个实例的消息。 这种否定确认会导致每个实例拒绝新的登录,因为没有额外的许可单元可用。当尝试启动的 `IRIS` 进程的许可用户 `ID` 与任何当前进程的许可用户 `` 不匹配时,登录被视为新登录。这种状态一直持续到所有实例的组合使用量低于授权限制,此时许可证服务器开始发送肯定确认以响应实例更新。然后各个实例允许新的登录。
文章
Hao Ma · 四月 19, 2022

Linux系统IRIS安装总结

本文档只是给您一个大致的概念,方便您了解IRIS安装的方方面面。并非官方安装手册或者安装建议。生产环境的安装请仔细研究并参照[IRIS官方的安装文档](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=AB_install#AB_install_Linux) ### 操作系统的选择 IRIS支持多种Linux系统。详细的列表请参见各个版本的支持列表,比如这个是最新的[2021IRIS的支持列表](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ISP_technologies#ISP_platforms_server)。需要注意的是, CentOS只支持作为测试系统, 并不支持生产系统的安装。 官方文档是以Redhat为主介绍的IRIS安装, 这是IRIS在生产环境中最常用的Linux系统之一。另一个Ubantu, InterSystems提供的docker版本是安装在Ubantu上的。 我自己测试的时候喜欢使用CentOS, 所以后面有具体安装步骤中,使用的CentOS上的记录。 ### 服务器的配置 对于生产系统,安装前需要一个硬件配置方案,这个方案通常是您的项目的实施部门根据用户需求提供的。 对于测试系统,只有一个最小的磁盘的要求:1.5G。无论是实体服务器, 虚拟服务器,或者docker container,根据您要测试的内容, 一切以方便为准。如果不做性能测试,我个人经常使用的CentOS虚拟机是2核CPU, 2G或4G内存,没有运行不流畅的问题。 ### 磁盘分区 标准的Linux磁盘分区并不适合IRIS的生产运行。哪怕要创建一个尽量接近生产的测试环境,建议您安装软件前要有一个完整的磁盘分区规划。在官方文档中,创建IRIS服务器分区有以下原则: 1. **IRIS程序,客户的数据库,首选Journal,备选Journal应该是分开标准分区或者逻辑盘存储的。所以至少要4个分区/逻辑盘**。 您也可能会喜欢再给backup文件和其他的比如IRIS使用的web文件添加更多的逻辑盘。 2. 文件系统方面,IRIS程序,客户的数据库推荐使用xfs文件格式,**journal盘推荐ext4格式**。( 经过专家确认,这个推荐不属于强烈推荐,更不是强制要求。大多数情况下使用xfs格式没问题。只是在大项目中,比如当您的Journal盘需要分配1TB的空间,特别是使用ECP服务器的情况下, ext4会因为更低的延时带来相对好的性能表现) 以下是一个测试系统中的分区配置,仅仅是示意。 ```sh [root@MyCentOS7 ~]# cat /etc/fstab /dev/mapper/centos_hmscentos7-root / xfs defaults 0 0 UUID=1d1b46a2-d66d-4346-8709-e70854088b11 /boot xfs defaults 0 0 /dev/mapper/vg_iris-isc_data /isc/data xfs defaults 0 0 /dev/mapper/vg_iris-isc_iris /isc/iris xfs defaults 0 0 UUID=c9ce6576-b469-4c74-8867-fe5b5060ad62 /isc/j1 ext4 defaults 1 2 UUID=0be8a20a-b76c-4a17-9018-ecea1964b73b /isc/j2 ext4 defaults 1 2 /dev/mapper/centos_hmscentos7-swap swap swap defaults 0 0 [root@hmsCentOS7 ~]# ``` 这是一个生产环境的配置实例, 其中/isc/iris是iris安装路径:下面放系统的文件,系统使用的数据库,以及和系统工作相关的文件等等,通常分配100-200G。其他的逻辑盘按客户需要分配。SWAP, /boot, /home, /var等等的配置按Linux的推荐及客户的方案配置。 | **Mount Point** | **VG** | **LV** | Size | **File System** | **Mount Options** | | :-------------- | :------ | :-------- | :--- | --------------- | :---------------- | | /isc/iris | vg_iris | lv_iris | 200G | XFS | 默认, nobarrier | | /isc/db | vg_iris | lv_irisdb | 1TB | XFS | 默认, nobarrier | | /isc/jrnpri | | | 500G | EXT4 | 默认 | | /isc/jrnsec | | | 500G | EXT4 | 默认 | 在上面的方案中, iris系统自带的数据库IRISTEMP是放在/isc/iris下的。 IRISTEMP正常情况下不会很大,但如果应用的设计很特别,或者出了什么问题,分配了200G大小的/isc/iris可能不足够。如果生产环境发现IRISTEMP有过大的风险,您可能需要单独给IRISTEMP分配一个逻辑盘。 ###优化服务器内存配置 以下的对服务器内存的设置可以提高IRIS的性能。 **使用HugePage内存** IRIS会自动使用系统配置的HugePage, 这会提高IRIS的内存使用效率。在线文档有这么一句: **在超大页内存中可用的内存数量应大于待分配的共享内存总数;否则,将不会使用超大页内存**。 因为 内存数据的总数是为Global, Routine, Lock等分配的内存的和。可以简单的从IRIS启动的日志message.log里看到。 比如下面IRIS被分配了8913M的总内存: ```sh 12/24/21-16:28:58:490 (14080) 0 [Generic.Event] Allocated 8913MB shared memory: 8003MB global buffers, 300MB routine buffers ``` 另外,因为操作系统自身的进程不会使用HugePage内存, 您也不能把内存都设置成HugePage。所以设置为**比IRIS需要的多一点就好**。 我们来看看配置HugePage的一个简单例子 ```bash # 查看服务器物理内存 [root@hmsCentOS7 ~]# cat /proc/meminfo | grep MemTotal MemTotal: 995676 kB #查看HugePage配置 [root@hmsCentOS7 ~]# cat /proc/meminfo | grep Huge AnonHugePages: 67584 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB # 修改配置,分配256个2M的HugePage [root@hmsCentOS7 ~]# vi /etc/sysctl.conf [root@hmsCentOS7 ~]# cat /etc/sysctl.conf | grep -v ^# vm.nr_hugepages=256 #load新配置 [root@hmsCentOS7 ~]# sysctl -p vm.nr_hugepages = 256 [root@hmsCentOS7 ~] [root@hmsCentOS7 ~]# cat /proc/meminfo | grep Huge AnonHugePages: 6144 kB HugePages_Total: 256 HugePages_Free: 256 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB [root@hmsCentOS7 ~]# ``` 如果此时您启动IRIS, 会出现“Allocated xxxxMB shared memory using Huge Pages"的日志记录,而且能在/proc/meminfo里看到HugePage的占用情况。 **禁用THP(Transparent Huge Pages)** InterSystems建议在IRIS服务器禁用THP。RedHat或者CentOS是默认打开的: ```SH [root@hmsCentOS7 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never [root@hmsCentOS7 ~]# ``` 禁用THP您需要修改/etc/default/grub中的GRUB_CMDLINE_LINUX记录,添加“transparent_hugepage=never“ ```sh # 修改文件 [root@hmsCentOS7 ~]# cat /etc/default/grub | grep GRUB_CMDLINE GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos_hmscentos7/root rd.lvm.lv=centos_hmscentos7/swap rhgb quiet transparent_hugepage=never" # regenerate grub2配置 [root@hmsCentOS7 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-bd06ad08438443f5a959cb7c0c264e89 Found initrd image: /boot/initramfs-0-rescue-bd06ad08438443f5a959cb7c0c264e89.img done #重启 [root@hmsCentOS7 ~]shutdown -r now # 确认配置成功 [root@hmsCentOS7 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never] [root@hmsCentOS7 ~]# ``` > [Redhat文档:配置THP](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/performance_tuning_guide/sect-red_hat_enterprise_linux-performance_tuning_guide-configuring_transparent_huge_pages) **Dirty Page Cleanup** 在一个大内存(比如大于8G)的Linux系统中,以下参数的修改会提高大量flat-files的写性能,比如大量的文件拷贝或者IRIS backup。 - dirty-background_ratio: InterSystems建议设置为5 - dirty_ratio: InterSystems建议设置为10 您需要修改/etc/sysctl.conf文件, 添加这两行: ```sh vm.dirty_background_ratio=5 vm.dirty_ratio=10 ``` ###配置NTP服务 各个数据库服务直接以及数据库服务器和应用服务,Web服务,打印服务等等之间要求精准的时间同步。客户可以自己选择采用chornyd或者ntpd来配置NTP。而且, 每个IRIS服务器推荐配置至少2个NTP Server地址。 有关配置NTP的方法请参考相关文档。 比如:[Redhat文档: CONFIGURING NTP USING THE CHRONY SUITE](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-configuring_ntp_using_the_chrony_suite#sect-differences_between_ntpd_and_chronyd) ### 安装Web Server (optional) IRIS提供Web服务需要单独安装的Web服务器。在Linux系统,IRIS支持Apache Web Server和Nginx。 生产环境中, 推荐将Web Server和IRIS安装在不同的硬件服务器上。但是, **如果是要将Web服务器和IRIS安装在同一台服务器,那么最好最好先装好Web Server, 再安装IRIS。** 在执行IRIS的安装脚本时,会提示用户是否需要连接那么先装Apache Web Server和Nginx是正确的顺序, 这样安装IRIS的时候可以将IRIS的Web服务组件,IRIS_WebGateway安装到Apache Web Server的安装目录,并生成相应的配置文件。 ```sh # 修改httpd状态的常用命令 systemctl start httpd.service #启动apache systemctl stop httpd.service #停止apache systemctl restart httpd.service #重启apache #设置开机启动 sudo systemctl enable httpd.service #设置开机启动 ``` > 如果启动httpd显示错误“httpd: Could not reliably determine the server's fully qualified domain name”,您需要修改httpd.conf文件, 添加ServerName, 比如设为ServerName localhost:80 **到这里, 您已经基本完成了安装IRIS的准备工作,下面是IRIS的安装步骤。** ### 加载IRIS安装软件 ```sh # 解压安装文件 [root@hmsCentOS7 ~]# mkdir /tmp/iriskit [root@hmsCentOS7 ~]# chmod og+rx /tmp/iriskit [root@hmsCentOS7 ~]# umask 022 [root@hmsCentOS7 ~]# gunzip -c IRIS-2022.1.0.140.0-lnxrh7x64.tar.gz | (cd /tmp/iriskit; tar xf -) [root@hmsCentOS7 iriskit]# cd /tmp/iriskit/IRIS-2022.1.0.140.0-lnxrh7x64/ [root@hmsCentOS7 IRIS-2022.1.0.140.0-lnxrh7x64]# ls LICENSE NOTICE cplatname dist docs irisinstall irisinstall_client irisinstall_silent kitlist lgpl.txt package tools ``` > tar -zxvf *.tar.gz是centos上常用的解压命令。上面使用的gunzip来着文档,据说是更通用,适合无法用tar来操作.gz文件的linux系统环境。 ###安装依赖的软件包 建议执行IRIS安装脚本前先检查需要的软件包。 ```sh # 查看安装需要的软件包 [root@hmsCentOS7 IRIS-2022.1.0.140.0-lnxrh7x64]# ./irisinstall --prechecker Your system type is 'Red Hat Enterprise Linux (x64)'. Checking Requirements ... Requirement for openssl version 1.0.2 is satisfied. Requirement for zlib version 1.2.7 is satisfied. [root@hmsCentOS7 IRIS-2022.1.0.140.0-lnxrh7x64]# ``` 除此以外,以下软件包是按情况可选的: - snmpd: 如果您需要使用SNMP来监控IRIS - jre或者jdk : 如果您需要IRIS服务器使用JDBC连接其他数据库 - unixODBC: 如果您需要IRIS服务器使用ODBC连接其他数据库 - policycoreutils-python, policycoreutils-devel, settroubleshoot-server : 如果您需要使用SELinux管理IRIS文件的读写。 它们只是IRIS工作时需要的软件包,IRIS的安装并不依赖或者检查它们。 ###创建iris用户 安装iris需要root用户或者拥有root权限的sudoer。然而,按照Linux的常规做法,出于安全的考虑,IRIS的管理和运行应该拥有自己的用户和用户组。在安装过程中, 您会被要求提供以下的内容: - What user should be the owner of this instance? - What group should be allowed to start and stop? "owner of instance"和“group to start and stop"可以是一个用户和它的用户组。比如您创建了一个irisowner的用户, 它默认的用户组irisowner可以作为“group start to stop"。当然您也可以专门创建一个用户组, 比如irisadmin, 将您的管理员tom, jerry, mickey等等加入irisadmin。 在标准的安装步骤下, 用户组irisowner和用户组irisadmin权限相同, 因此最简单的方式就是使用irisowner用户和irisowner用户组。 ```sh # 创建iris owner useradd irisowner # 创建您的管理员团队 [root@hmsCentOS7 mail]# useradd -N tom [root@hmsCentOS7 mail]# useradd -N jerry [root@hmsCentOS7 mail]# useradd -N iscbackup [root@hmsCentOS7 mail]# gpasswd irisowner -a tom Adding user tom to group irisowner [root@hmsCentOS7 mail]# gpasswd irisowner -a jerry Adding user jerry to group irisowner [root@hmsCentOS7 mail]# gpasswd irisowner -a iscbackup Adding user iscbackup to group irisowner [root@hmsCentOS7 mail]# cat /etc/group | grep irisowner irisowner:x:1000:tom,jerry,iscbackup [root@hmsCentOS7 mail]# ``` *如果需要,您可以把tom, jerry等用户加入sudoer列表。* **实际上, 在后面安装脚本的执行过程中, 还有2个重要的用户被创建出来, 他们是:** - **irisusr**: 所有iris进程使用这个user运行。它还用来访问数据库和journal。在一个安全的系统里,irisusr组里就只有一个用户irisusr, 也不要添加其他的user。 - **iscagent**: 用于运行镜像使用的iscagent进程 IRIS用户和管理员不要动这两个用户。 ###执行IRIS安装脚本 安装脚本会设置user, group,和安装后文件的权限,您需要在按照前检查umask, 确认设置为022。 **执行标准的安装流程** ```bash # 开始安装步骤 [root@hmsCentOS7 iriskit]# cd /tmp/iriskit/IRIS-2022.1.0.140.0-lnxrh7x64/ [root@hmsCentOS7 IRIS-2022.1.0.140.0-lnxrh7x64]# ls LICENSE NOTICE cplatname dist docs irisinstall irisinstall_client irisinstall_silent kitlist lgpl.txt package tools [root@hmsCentOS7 IRIS-2022.1.0.140.0-lnxrh7x64]# ./irisinstall Your system type is 'Red Hat Enterprise Linux (x64)'. Currently defined instances: Enter instance name: iris Do you want to create InterSystems IRIS instance 'iris' ? Enter a destination directory for the new instance. Directory: /isc/iris ------------------------------------------------------------------ NOTE: Users should not attempt to access InterSystems IRIS while the installation is in progress. ------------------------------------------------------------------ Select installation type. 1) Development - Install InterSystems IRIS server and all language bindings 2) Server only - Install InterSystems IRIS server 3) Custom Setup type ? 1 How restrictive do you want the initial Security settings to be? "Minimal" is the least restrictive, "Locked Down" is the most secure. 1) Minimal 2) Normal 3) Locked Down Initial Security settings ? 2 What user should be the owner of this instance? irisowner An InterSystems IRIS account will also be created for user irisowner. Install will create the following InterSystems IRIS accounts for you: _SYSTEM, Admin, SuperUser, irisowner and CSPSystem. Please enter the common password for _SYSTEM, Admin, SuperUser and irisowner: Re-enter the password to confirm it: Please enter the password for CSPSystem: Re-enter the password to confirm it: What group should be allowed to start and stop this instance? irisowner Do you want to install IRIS Unicode support ? InterSystems IRIS did not detect a license key file Do you want to enter a license key ? Please review the installation options: ------------------------------------------------------------------ Instance name: iris Destination directory: /isc/iris InterSystems IRIS version to install: 2022.1.0.140.0 Installation type: Development Unicode support: Y Initial Security settings: Normal User who owns instance: irisowner Group allowed to start and stop instance: irisowner Effective group for InterSystems IRIS processes: irisusr Effective user for InterSystems IRIS SuperServer: irisusr SuperServer port: 1972 WebServer port: 52773 JDBC Gateway port: 53773 Web Gateway: using built-in web server Not installing IntegratedML ------------------------------------------------------------------ Confirm InterSystems IRIS installation ? Starting installation Starting up InterSystems IRIS for loading... ../bin/irisinstall -s . -B -c c -C /isc/iris/iris.cpf*iris -W 1 -g2 Starting Control Process Allocated 238MB shared memory 32MB global buffers, 80MB routine buffers Creating a WIJ file to hold 32 megabytes of data IRIS startup successful. locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory System locale setting is 'en_US.UTF-8' This copy of InterSystems IRIS has been licensed for use exclusively by: Local license key file not found. Copyright (c) 1986-2022 by InterSystems Corporation Any other use is a violation of your license agreement ^^/isc/iris/mgr/> ^^/isc/iris/mgr/> Start of IRIS initialization Loading system routines Updating system TEMP and LOCALDATA databases Installing National Language support Setting IRISTEMP default collation to IRIS standard (5) Loading system classes Updating Security database Loading system source code Building system indices Updating Audit database Updating Journal directory Updating User database Updating Interoperability databases Scheduling inventory scan IRIS initialization complete See the iboot.log file for a record of the installation. Starting up InterSystems IRIS... Once this completes, users may access InterSystems IRIS Starting IRIS Using 'iris.cpf' configuration file Starting Control Process Global buffer setting requires attention. Auto-selected 25% of total memory. Allocated 463MB shared memory 243MB global buffers, 80MB routine buffers Creating a WIJ file to hold 99 megabytes of data This copy of InterSystems IRIS has been licensed for use exclusively by: Local license key file not found. Copyright (c) 1986-2022 by InterSystems Corporation Any other use is a violation of your license agreement 1 alert(s) during startup. See messages.log for details. You can point your browser to http://hmsCentOS7:52773/csp/sys/UtilHome.csp to access the management portal. Installation completed successfully [root@hmsCentOS7 IRIS-2022.1.0.140.0-lnxrh7x64]# ``` **执行customer安装IRIS+WebGateway** 如果要在本机安装WebGateway, 需要在执行安装脚本的过程中,当被问到:“Select installation type.”时选择Customer, 而不是Development。这样后面就脚本将在Web Server上加载IRIS专用的动态连接库,并创建和Web Server连接的IRIS Web网关。 在此之前, 您还需要配置安装semanage来保证可以配置SELinux。安装脚本会检查,如果没有发现semanag, 会提示您停止继续安装。 ```sh # 安装semanage, 确认命令可以工作。省略输出 [root@hmsCentOS7 ~]# yum install policycoreutils-devel [root@hmsCentOS7 ~]# yum instll setroubleshoot-server [root@hmsCentOS7 ~]# yum install setroubleshoot-server [root@hmsCentOS7 ~]# semanage -h ... [root@hmsCentOS7 ~]# ``` 假设你已经创建了一个/isc/iris2的目录,然后就可以安装了。注意下面使用的superserver和web端口是51773和52774。这是默认的第2个IRIS实例的端口号,您也可以输入其他端口号或者在安装后在维护页面修改这些端口。 ```sh [root@hmsCentOS7 IRIS-2022.1.0.140.0-lnxrh7x64]# ./irisinstall Your system type is 'Red Hat Enterprise Linux (x64)'. Currently defined instances: IRIS instance 'IRIS' directory: /isc/iris versionid: 2022.1.0.140.0 datadir: /isc/iris conf file: iris.cpf (SuperServer port = 1972, WebServer = 52773) status: down, last used Fri Apr 8 13:32:47 2022 product: InterSystems IRIS Enter instance name: iris2 Do you want to create InterSystems IRIS instance 'iris2' ? Enter a destination directory for the new instance. Directory: /isc/iris2 ------------------------------------------------------------------ NOTE: Users should not attempt to access InterSystems IRIS while the installation is in progress. ------------------------------------------------------------------ Select installation type. 1) Development - Install InterSystems IRIS server and all language bindings 2) Server only - Install InterSystems IRIS server 3) Custom Setup type ? 3 How restrictive do you want the initial Security settings to be? "Minimal" is the least restrictive, "Locked Down" is the most secure. 1) Minimal 2) Normal 3) Locked Down Initial Security settings ? 2 What user should be the owner of this instance? irisowner An InterSystems IRIS account will also be created for user irisowner. Install will create the following InterSystems IRIS accounts for you: _SYSTEM, Admin, SuperUser, irisowner and CSPSystem. Please enter the common password for _SYSTEM, Admin, SuperUser and irisowner: Re-enter the password to confirm it: Please enter the password for CSPSystem: Re-enter the password to confirm it: What group should be allowed to start and stop this instance? irisowner Do you want to configure additional security options ? Do you want to install IRIS Unicode support ? Enter the SuperServer port number : Enter the WebServer port number : Do you want to configure the Web Gateway to use an existing web server ? yes Specify the WebServer type. Choose "None" if you want to configure your WebServer manually. 1) Apache 2) None WebServer type ? 1 Enter user name used by Apache server to run its worker processes : Please enter location of Apache configuration file [/etc/httpd/conf/httpd.conf]: // /etc/httpd/conf.d/isc.conf Please enter location of Apache executable file : Apache version 2.4 is detected. Apache httpd server will be restarted during the install. Please enter destination directory for Web Gateway files [/opt/webgateway]: InterSystems IRIS did not detect a license key file Do you want to enter a license key ? Do you want to install IntegratedML (this feature requires additional 1166MB of disk space) ? Please review the installation options: ------------------------------------------------------------------ Instance name: iris2 Destination directory: /isc/iris2 InterSystems IRIS version to install: 2022.1.0.140.0 Installation type: Custom Unicode support: Y Initial Security settings: Normal User who owns instance: irisowner Group allowed to start and stop instance: irisowner Effective group for InterSystems IRIS processes: irisusr Effective user for InterSystems IRIS SuperServer: irisusr SuperServer port: 51773 WebServer port: 52774 JDBC Gateway port: 53773 Web Gateway: installed into /opt/webgateway Apache web server will be configured for Web Gateway Not installing IntegratedML ------------------------------------------------------------------ Confirm InterSystems IRIS installation ? yes Starting installation Updating Apache configuration file ... - /etc/httpd/conf/httpd.conf Starting up InterSystems IRIS for loading... ../bin/irisinstall -s . -B -c c -C /isc/iris2/iris.cpf*iris2 -W 1 -g2 Starting Control Process Allocated 238MB shared memory 32MB global buffers, 80MB routine buffers Creating a WIJ file to hold 32 megabytes of data IRIS startup successful. locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory System locale setting is 'en_US.UTF-8' This copy of InterSystems IRIS has been licensed for use exclusively by: Local license key file not found. Copyright (c) 1986-2022 by InterSystems Corporation Any other use is a violation of your license agreement ^^/isc/iris2/mgr/> ^^/isc/iris2/mgr/> Start of IRIS initialization Loading system routines Updating system TEMP and LOCALDATA databases Installing National Language support Setting IRISTEMP default collation to IRIS standard (5) Loading system classes Updating Security database Loading system source code Building system indices Updating Audit database Updating Journal directory Updating User database Updating Interoperability databases Scheduling inventory scan IRIS initialization complete See the iboot.log file for a record of the installation. Starting up InterSystems IRIS... Once this completes, users may access InterSystems IRIS Starting IRIS2 Using 'iris.cpf' configuration file Starting Control Process Global buffer setting requires attention. Auto-selected 25% of total memory. Allocated 463MB shared memory 243MB global buffers, 80MB routine buffers Creating a WIJ file to hold 99 megabytes of data This copy of InterSystems IRIS has been licensed for use exclusively by: Local license key file not found. Copyright (c) 1986-2022 by InterSystems Corporation Any other use is a violation of your license agreement 1 alert(s) during startup. See messages.log for details. You can point your browser to http://hmsCentOS7:52774/csp/sys/UtilHome.csp to access the management portal. Installation completed successfully [root@hmsCentOS7 IRIS-2022.1.0.140.0-lnxrh7x64]# ``` 上面步骤中当提示:”Please enter location of Apache configuration file [/etc/httpd/conf/httpd.conf]: “ 的时候我使用了默认选项/etc/httpd/conf/httpd.conf, IRIS安装脚本回修改httpd.conf文件, 加入连接IRIS的配置。这里更好的做法是先在/etc/httpd/conf.d里创建一个单独的配置文件,比如isc.conf, 在回答上面的提示是输入**/etc/httpd/conf.d/isc.conf**。很遗憾您需要自己手工先创建这个文件,安装脚本不回替您创建。 ### 安装后的检查 **检查安装日志** 查看上面的安装日志,确认没有错误发生。 **查看新创建的用户irisusr和iscagent** ```sh [root@hmsCentOS7 ~]# id irisusr uid=1001(irisusr) gid=1001(irisusr) groups=1001(irisusr) [root@hmsCentOS7 ~]# id iscagent uid=1002(iscagent) gid=1002(iscagent) groups=1002(iscagent) [root@hmsCentOS7 ~]# ``` **查看文件系统权限** ```sh [root@hmsCentOS7 ~]# ls -l /isc total 8 drwxr-xr-x. 2 root root 6 Apr 1 23:57 data drwxrwxr-x. 14 irisowner irisusr 4096 Apr 6 14:28 iris drwxr-xr-x. 3 root root 1024 Apr 1 23:57 jrnpri drwxr-xr-x. 3 root root 1024 Apr 1 23:57 jrnsec [root@hmsCentOS7 ~]# ls -l /isc/iris total 112 -r--r--r--. 1 irisowner irisusr 11358 Apr 6 14:28 LICENSE -r--r--r--. 1 irisowner irisusr 534 Apr 6 14:28 NOTICE -rwxr-xr-x. 1 irisowner irisusr 4497 Mar 7 15:20 ODBCinstall drwxrwxr-x. 2 irisowner irisusr 26 Apr 6 14:27 SNMP -rwxrw-r--. 1 irisusr irisusr 9703 Apr 6 14:28 _LastGood_.cpf drwxr-xr-x. 2 root irisowner 8192 Apr 6 14:28 bin drwxrwxr-x. 7 irisowner irisusr 106 Apr 6 14:27 csp drwxr-xr-x. 17 irisowner irisusr 214 Apr 6 14:28 dev drwxrwxr-x. 3 irisowner irisusr 20 Apr 6 14:28 devuser drwxr-xr-x. 3 root root 21 Apr 6 14:28 dist drwxr-xr-x. 5 irisowner irisusr 156 Apr 6 14:28 docs drwxr-xr-x. 5 irisowner irisusr 68 Apr 6 14:28 fop drwxrwxr-x. 5 irisowner irisusr 41 Apr 6 14:27 httpd -rw-rw-r--. 1 root root 9557 Apr 6 14:28 install.cpf -rw-rw-r--. 1 irisowner irisusr 9732 Apr 6 14:28 iris.cpf -rwxr-xr-x. 1 irisowner irisusr 9557 Apr 6 14:28 iris.cpf_20220406 -r-xr-x---. 4 irisowner irisowner 909 Apr 6 14:28 irisforce -r-xr-x---. 4 irisowner irisowner 909 Apr 6 14:28 irisstart -r-xr-x---. 4 irisowner irisowner 909 Apr 6 14:28 irisstop -r--r--r--. 1 irisowner irisusr 7639 Apr 6 14:28 lgpl.txt drwxr-xr-x. 6 irisowner irisusr 80 Apr 6 14:28 lib drwxrwxr-x. 13 irisowner irisusr 4096 Apr 6 14:28 mgr -rw-------. 1 root root 3299 Apr 6 14:28 parameters.isc drwxr-xr-x. 2 irisowner irisusr 237 Apr 6 14:27 patrol [root@hmsCentOS7 ~]# ls -l /isc/iris/mgr total 163952 -rw-r-----. 1 irisowner irisusr 62914560 Apr 6 14:31 IRIS.DAT -rw-rw----. 1 irisowner irisusr 104857600 Apr 6 14:36 IRIS.WIJ drwxr-xr-x. 2 irisowner irisusr 4096 Apr 6 14:28 Locale -rwxrw-r--. 1 irisusr irisusr 66 Apr 6 14:28 SystemMonitor.log drwxrwxr-x. 2 irisusr irisusr 6 Apr 6 14:28 Temp -rwxrw-r--. 1 irisusr irisusr 134 Apr 6 14:28 alerts.log -rwxrw-r--. 1 irisusr irisusr 13759 Apr 6 14:28 ensinstall.log drwxrwxr-x. 3 irisowner irisusr 36 Apr 6 14:28 enslib -rwxr-xr-x. 1 irisowner irisusr 38319 Apr 6 14:28 iboot.log -rwxrwxrwx. 1 irisowner irisusr 0 Apr 6 14:28 ilock -rw-rw----. 1 irisowner irisusr 10 Apr 6 14:28 iris.ids -rw-rw----. 1 irisowner irisusr 30 Apr 6 14:28 iris.lck -rw-rw-rw-. 1 irisowner irisusr 2 Apr 6 14:28 iris.shid -rw-rw-r--. 1 irisowner irisusr 5 Apr 6 14:28 iris.use drwxrwxr-x. 3 irisowner irisusr 52 Apr 6 14:28 irisaudit drwxrwxr-x. 3 irisowner irisusr 36 Apr 6 14:28 irislib drwxrwxr-x. 3 irisowner irisusr 52 Apr 6 14:28 irislocaldata -rw-rw----. 1 irisowner irisusr 933 Apr 6 14:28 irisodbc.ini drwxrwxr-x. 3 irisowner irisusr 52 Apr 6 14:28 iristemp drwxrwxr-x. 2 irisowner irisusr 42 Apr 6 14:28 journal -rw-rw----. 1 irisowner irisusr 211 Apr 6 14:28 journal.log -rw-rw-r--. 1 irisowner irisusr 14146 Apr 6 14:28 messages.log drwxrwxr-x. 2 irisowner irisusr 6 Apr 6 14:27 python -rw-rw-rw-. 1 irisowner irisusr 55 Apr 6 14:28 startup.last drwxrwxr-x. 2 irisowner irisusr 6 Apr 6 14:28 stream drwxrwxr-x. 3 irisowner irisusr 52 Apr 6 14:28 user [root@hmsCentOS7 ~]# ``` **修改文件系统权限** 将/isc/data, /isc/jrnpri, /isc/jrnsec文件系统的user和group,以及权限修改到下面的样子 ```sh [root@hmsCentOS7 ~]# chown irisowner:irisusr /isc/data /isc/jrnpri /isc/jrnsec [root@hmsCentOS7 ~]# chmod 775 /isc/data /isc/jrnpri /isc/jrnsec [root@hmsCentOS7 ~]# ls -l /isc total 8 drwxrwxr-x. 2 irisowner irisusr 6 Apr 1 23:57 data drwxrwxr-x. 14 irisowner irisusr 4096 Apr 6 14:28 iris drwxrwxr-x. 3 irisowner irisusr 1024 Apr 1 23:57 jrnpri drwxrwxr-x. 3 irisowner irisusr 1024 Apr 1 23:57 jrnsec [root@hmsCentOS7 ~]# ``` **打开防火墙IRIS的TCP端口** IRIS系统使用以下TCP端口: - superserver port: 默认是1972 - web port: 默认是52773 - mirror port: 默认是2188 - license server port: 默认是4001, (很少使用) ```sh [root@hmsCentOS7 iris]# firewall-cmd --permanent --add-port=1972/tcp success [root@hmsCentOS7 iris]# firewall-cmd --permanent --add-port=52773/tcp success [root@hmsCentOS7 iris]# firewall-cmd --permanent --add-port=2188/tcp success [root@hmsCentOS7 iris]# firewall-cmd --list-port 1972/tcp 2188/tcp 52773/tcp [root@hmsCentOS7 iris]# firewall-cmd --reload success [root@hmsCentOS7 iris]# ``` **访问系统管理界面** 通过SMP(System Management Portal)的url, 您可以访问IRIS。 http://host-ipaddr:52773/csp/sys/UtilHome.csp 用户名使用superuser, 密码为您安装创建的密码。 **激活IRIS License** 到管理界面的“系统 > 软件许可颁发 > 软件许可授权码”,加载在本机保存的IRIS许可。 注意弹出窗口的文件选项默认是.key文件。所以您上传文件到Linux服务器前最好把文件改为iris.key。另外,文件和文件夹一定要可以被irisowner访问。如果放在/root文件夹,或者不运行other用户访问,您要么在选文件的窗口无法找到这个文件,要么无法成功激活。 **创建数据库** 到 "系统 > 配置 > 本地数据库"创建数据库。查看在/isc/data里的文件夹和权限。举例:创建demo数据库到/isc/data/demo: ```sh [root@hmsCentOS7 isc]# ls -Rl /isc/data /isc/data: total 0 drwxrwxr-x. 3 irisusr irisusr 52 Apr 6 15:37 demo /isc/data/demo: total 1028 -rw-rw----. 1 irisusr irisusr 1048576 Apr 6 15:38 IRIS.DAT -rw-rw----. 1 irisowner irisusr 30 Apr 6 15:37 iris.lck drwxrwxr-x. 2 irisusr irisusr 6 Apr 6 15:37 stream /isc/data/demo/stream: total 0 [root@hmsCentOS7 isc]# ``` **设置Journal文件夹** 到“系统 > 配置 > Journal 设置”设置journal的主备路径到/isc/jrnprm和/isc/jrnsec。 查看两个路径里的文件权限是660(rw-rw----) ```sh [root@hmsCentOS7 opt]# ls -l /isc/jrnpri total 272 -rw-rw----. 1 irisowner irisusr 262144 Apr 6 15:29 20220406.002 -rw-rw----. 1 irisowner irisusr 30 Apr 6 15:29 iris.lck drwx------. 2 irisowner irisusr 12288 Apr 1 23:57 lost+found [root@hmsCentOS7 opt]# ls -l /isc/jrnsec total 15 -rw-rw----. 1 irisowner irisusr 30 Apr 6 15:29 iris.lck drwx------. 2 irisowner irisusr 12288 Apr 1 23:57 lost+found [root@hmsCentOS7 opt]# ``` **启动ISCAgent** 如果需要配置镜像,服务器需要人工启动ISCAgent ```bash # 启动iscagent服务 systemctl start ISCAgent.service # 设置iscagent systemctl enable ISCAgent.service ``` **SELinux配置**(Optional) 如果您上面执行的是“**执行customer安装以安装WebGateway**”,那么这里您需要配置SELinux。 SELinux会限制httpd对系统其它文件的访问权限,比如说//usr/sbin/httpd无法访问IRIS的WebGateway, 它工作在/opt/webgateway/bin目录。你需要做以下几步来保证SELinux不再限制对IRIS文件的访问: - 允许httpd读写WebGateway文件 ```sh # httpd_sys_content_t – set on directories that Apache is allowed access to, # httpd_sys_rw_content_t – set on directories that Apache is allowed read/write access # httpd_sys_script_exec_t – used for directories that contain executable scripts. [root@hmsCentOS7 conf]# ls -Z /opt/webgateway/conf -rw-------. apache root unconfined_u:object_r:httpd_sys_content_t:s0 CSP.ini -rw-------. apache root unconfined_u:object_r:httpd_sys_content_t:s0 CSPRT.ini [root@hmsCentOS7 conf]# semanage fcontext -a -t httpd_sys_rw_content_t /opt/webgateway/conf/CSP.ini [root@hmsCentOS7 conf]# restorecon -v /opt/webgateway/conf/CSP.ini restorecon reset /opt/webgateway/conf/CSP.ini context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_sys_rw_content_t:s0 [root@hmsCentOS7 conf]# semanage fcontext -a -t httpd_sys_rw_content_t /opt/webgateway/conf/CSPRT.ini [root@hmsCentOS7 conf]# restorecon -v /opt/webgateway/conf/CSPRT.ini restorecon reset /opt/webgateway/conf/CSPRT.ini context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_sys_rw_content_t:s0 [root@hmsCentOS7 conf]# ls -Z -rw-------. apache root unconfined_u:object_r:httpd_sys_rw_content_t:s0 CSP.ini -rw-------. apache root unconfined_u:object_r:httpd_sys_rw_content_t:s0 CSPRT.ini [root@hmsCentOS7 conf]# [root@hmsCentOS7 webgateway]# semanage fcontext -a -t httpd_sys_rw_content_t /opt/webgateway/logs/CSP.log [root@hmsCentOS7 webgateway]# restorecon -v /opt/webgateway/logs/CSP.log restorecon reset /opt/webgateway/logs/CSP.log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_sys_rw_content_t:s0 [root@hmsCentOS7 webgateway]# ``` - 允许httpd读写IRIS的Web Application文件,假设文件目录是/isc/web, -R是recursively ```sh semanage fcontext -a -t httpd_sys_rw_content_t "/isc/web(/.*)?" restorecon -Rv /isc/web/ ``` - 运行httpd到IRIS的连接, (最新版本也许不需要手工配置了) ```sh # 默认的superserver端口为1972, 上面的iris2使用的是51773 [root@hmsCentOS7 ~]# semanage port -a -t http_port_t -p tcp 51773 ValueError: Port tcp/51773 already defined [root@hmsCentOS7 ~]# semanage port -a -t http_port_t -p tcp 1972 [root@hmsCentOS7 ~]# semanage port -l | grep http_port http_port_t tcp 1972, 51773, 80, 81, 443, 488, 8008, 8009, 8443, 9000 pegasus_http_port_t tcp 5988 [root@hmsCentOS7 ~]# setsebool -P httpd_can_network_connect 1 [root@hmsCentOS7 ~]# ``` 到这里, 您的IRIS安装过程已经结束了。后面的实施工作可能包括: - IRIS配置 - 镜像配置 - WebGateway配置 我会在其他文章中介绍上述内容。 另外, 请注意重启(reboot)在安装过程中十分重要: 通常的情况是,至少有一些配置在第一次重启时并不存在。这可能包括被挂载的卷、/etc/fstab中的错误、启动时不启动的服务、在没有重载服务的情况下进行的配置修改等等。 一旦你认为服务器已经完成,并验证所有的配置都符合预期,而且应用程序仍在工作,那么重新启动服务器是非常明智的。如果不这样做,也不测试集群(例如,一次重启一个节点),可能意味着在第一次重启或HA事件中出现灾难。 *The End*
问题
Weiwei Yang · 一月 25, 2021

docker deploy

生产环境要使用80端口访问服务器,采用直接部署程序的方式,是在Linux服务器上同时部署HealthConnect和Apache。类似的现在想要使用Docker技术,在一台服务器上部署了HealthConnect和Apache容器,该如何配置http.conf文件,使80端口的请求转到HealthConnect上呢?如果这种方式不可行,有没有其他方法呢? 你好, 请参考在Openexchange中发布的例子:Example of InterSystems IRIS with external Apache and WebGateway( https://openexchange.intersystems.com/package/iris-webgateway-example)