2. GDA安装¶
2.1. 介绍¶
本节将概述GDA安装和配置GDA的各种方式。
2.2. 安装文件夹结构¶
按照快速入门指南并使用可从opengda网站下载的示例,目录结构将包含以下文件夹:
- builder
包含编译源代码以及从IDL源代码构建客户端和CORBA java代码的脚本。
- 文档
包含文档源。通过运行以下命令编译此代码
make all
。各种形式的编译文档将放在名为Build的子文件夹中。- 示例-配置
包含示例配置。Configuartion文件夹具有标准结构,下面将对其进行说明。
- 特征
标准Eclipse Java IDE工作区目录。包含 特征 项目。
- 许可证
GDA中使用的第三方软件的许可信息。
- 插件
标准Eclipse Java IDE工作区目录。包含 插件 项目。
- 第三方
包含编译GDA所需的一些第三方软件。此软件由GDA引用 建立目标 它应该在从Eclipse IDE编译源代码时设置。这将由构建脚本自动引用。
对于新开发人员来说,最感兴趣的文件夹可能是example-config,需要在其中定义特定于光束线的配置。
2.2.1. 添加新插件或现有插件¶
创建新插件时,插件项目必须位于插件目录中,否则构建和启动脚本将无法正常工作。
通过运行导入向导,可以将现有插件从Eclipse IDE导入到工作区:File->Import.->General->Existing Projects。确保 复制到工作区 复选框处于选中状态。导入项目后,如果尚未将其放入插件文件夹,请执行Refactor->Move.要重新定位新插件项目,请执行以下操作。
2.3. 配置文件夹结构¶
建议您使用 新型配置目录结构 如下所述。
example-config遵循标准文件夹结构。由于目录中的子文件夹的位置是从java属性假定的,因此需要遵循此结构 gda.config
.
配置目录的内容为:
- CSS
CSS概要透视图的配置文件。(仅限RCP客户端)
- 查找表
使用查找表的可扫描对象的查找表的位置。
- 性质
Java、Jacorb和JCA(Epics API)属性文件。Jacorb文件必须放在名为“etc”的子文件夹中。
- 脚本
特定于光束线的Jython脚本的位置
- 用户
对于示例-config,包含日志文件、用户脚本,并且是数据将写入的位置。这些文件很可能希望放在其他位置。使用Java属性定义这些类型的文件所在的目录。有关这些Java属性的更多信息,请参阅后面的部分。
- var
用于在GDA运行时更改的文件。
- XML
定义ObjectServer进程内容的XML文件。
对于新的开发人员来说,当开始使用GDA时,最感兴趣的项目可能是用于定制文件夹位置等的java.properties文件和用于定制表示硬件的对象的ObjectServer XML文件。
2.3.1. 文件权限¶
var和users目录可能需要来自gda安装的睡觉的更广泛的权限,以允许任何用户运行的进程编辑这些目录中的文件。
建议在生产环境中使用GDA安装之外的var目录,因为保存在那里的一些文件可能需要在不同版本的GDA中一致使用。这使得升级到新的GDA版本变得更容易。
2.3.2. 新型配置目录结构¶
从8.10版本开始,GDA将转向一种新的、更显式的配置目录结构,以支持在不同的运行模式、服务器和客户端配置文件之间轻松切换。有关此新配置布局的简要说明,请参阅 here .
下面是此新配置布局的示例,扩展为包括用于日志记录、EPIC、授权等的配置:
config
|-- clients
| |-- main
| | |-- dummy
| | | |-- client.xml
| | |-- live
| | | |-- client.xml
| | |-- main-common.xml
| |-- rcp
| | |-- dummy
| | | |-- client.xml
| | |-- live
| | | |-- client.xml
| | |-- rcp-common.xml
| |-- clients-common.xml
| |-- commandQueueProcessor.xml
|-- epics
| |-- dummy
| | |-- BL11I-gda-interface.xml
| | |-- epics.properties
| |-- live
| | |-- BL11I-gda-interface.xml
| | |-- epics.properties
|-- jacorb
| |-- dummy
| | |-- etc
| | | |-- jacorb.properties
| |-- live
| | |-- etc
| | | |-- jacorb.properties
|-- jca
| |-- dummy
| | |-- JCALibrary.properties
| |-- live
| | |-- JCALibrary.properties
|-- logging
| |-- dummy
| | |-- LogServer.xml
| | |-- log.properties
| |-- live
| | |-- LogServer.xml
| | |-- log.properties
| |-- LoggingConfiguration.xml
| |-- logPanel.xml
|-- lookupTables
|-- permissions
| |-- beamlinestaff.xml
| |-- user_permissions.xml
|-- properties
| |-- dummy
| | |-- java.properties
| |-- live
| | |-- java.properties
| |-- beamline.properties
| |-- gda.properties
| |-- jaas.cclrc.conf
|-- scripts
| |-- localStation.py
|-- servers
| |-- main
| | |-- dummy
| | | |-- .....
| | | |-- server.xml
| | |-- live
| | | |-- .....
| | | |-- server.xml
| | |-- simulation
| | | |-- server.xml
| | |-- .....
| | |-- main_common.xml
| |-- CommandServer.xml
| |-- commandQueueProcessor.xml
| |-- scriptControllers.xml
| |-- servers_common.xml
|-- var
| |-- limitsAndOffset
| |-- motorPositions
| |-- 30.tmp
|-- buckminster.cspec
- clients
客户端对象的Spring配置的位置,它应该有两个配置文件:
main
和rcp
。每个配置文件应依次包含两种模式:dummy
和live
。每种模式必须包含client.xml
文件- epics
GDA-EPICS集成配置的位置(如果需要)(可选),应包含两种模式:
dummy
和live
。其中每一项都应包含EPICS集成规范和epics.properties
.- jacorb
分配给CORBA配置。它必须包含两种模式:
dummy
和live
,它一定有etc
包含以下内容的目录jacorb.properties
.- jca
EPICS通道接入配置的位置(仅在与EPICS IOC通信时需要)。它必须包含两种模式:
dummy
和live
,它又包含JCALibrary.properties
文件。- logging
GDA日志记录配置文件的位置。它应该包含两种模式:
dummy
和live
。这些模式中的每一种都有一个log.properties
和LogServer.xml
日志服务器的配置。可以使对象日志记录和日志查看器配置与模式无关。- lookupTables
使用查找表的可扫描对象的查找表的位置。
- permission
GDA对象访问控制的默认用户授权设置的位置(如果启用)。
- properties
beamline.properties
-定义光束线特定属性;gda.properties
-定义GDA通用属性,其中一些引用了其他属性文件中定义的属性;java.properties
-定义模式相关自定义的属性。这个java.properties
文件必须包括其他属性,如以下示例所示:include=../beamline.properties include=${gda.config}/logging/dummy/log.properties include=${gda.config}/epics/dummy/epics.properties # customisable properties below gda.var=/${user.home}/${gda.beamline.name}/var gda.data = /${user.home}/${gda.beamline.name}/data gda.data.scan.datawriter.datadir = ${gda.data} gda.device.temperature.datadir = ${gda.data}/temperature gda.users.scripts.dir=/${user.home}/${gda.beamline.name}/scripts gda.dummy.mode=True gda.gui.AcquisitionGUI.authorisationMethod = gda.jython.authoriser.FileAuthoriser gda.server.name=localhost # custmisable properties above include=../gda.properties
这个
beamline.properties
必须包含在第一行,即gda.properties
必须包含在的最后一行java.properties
文件。- scripts
特定于光束线的Jython脚本的位置。它至少应该包含GDA启动脚本文件
localStation.py
.- servers
服务器对象的Spring配置的位置,应至少包含一个
main
配置文件。每个配置文件应依次包含两种模式:dummy
和live
。每种模式必须包含server.xml
文件。这个server.xml
进口main-common.xml
在父文件夹中,该文件夹定义了可用于所有模式的通用对象配置;main-common.xml
反过来又进口servers-common.xml
它定义了所有配置文件的公共对象配置。- var
GDA缓存数据目录,用于在GDA运行时更改的文件。
钻石光束线上经常使用的其他目录和文件如下所示:
config
|-- bin
| |-- GDA_RemoteStart_Lin
| |-- GDA_ShowLogFile
| |-- GDA_StartClient
| |-- GDA_StartLogPanel
| |-- GDA_StartLogServers
| |-- GDA_StartRCP
| |-- GDA_StartServers
| |-- GDA_Start_GTK
| |-- GDA_StopServers
| |-- gda_command
| |-- gdaclient
| |-- gdalog
| |-- gdaservers
| |-- lookForFile.sh
| |-- remotestartupscript.sh
| |-- set_facl.sh
|-- Desktop
| |-- DataDispenser.desktop
| |-- gda-beamline-manual.desktop
| |-- gda-client.desktop
| |-- gda-logfile.desktop
| |-- gda-logpanel.desktop
| |-- gda-servers.desktop
| |-- gda-startup-guide.desktop
| |-- gda-user-guide.desktop
| |-- gda.directory
| |-- gda.menu
|-- doc
| |-- images
| | |-- gdadesktoplaunchers.png
| | |-- gdamenulaunchers.png
| |-- BLS-I11-MAN-001-v0.5.html
| |-- Starting_GDA_Help.html
| |-- mythen.doc
|-- etc
| |-- README
| |-- gda_environment.sh
| |-- i11_profile.sh
|-- launcherInstaller
| |-- beamline.sh
| |-- gda_launchers.sh
| |-- install-gda-launchers.sh
| |-- install-launchers.sh
| |-- logout.sh
|-- launchers
| |-- EventServer.launch
| |-- Gui.launch
| |-- LogPanel.launch
| |-- LogServer.launch
| |-- NameServer.launch
| |-- ObjectServer.launch
| |-- RcpPorduct.launch
|-- pytools
| |-- src
| |-- fileappender.py
| |-- mergecolumns.py
| |-- mythenbin.py
| |-- mythensum.py
| |-- rebin.py
| |-- rebin_idl.py
- bin
用于启动GDA组件的Shell脚本
- Desktop
用于启动GDA组件的Linux桌面文件
- doc
特定于光束线的单据
- etc
GDA的光束线特定环境
- launcherInstaller
用于安装GDA启动器的shell脚本
Applications
Linux上的菜单。- launchers
用于GDA组件的Eclipse启动器
- pytools
用于在线和离线数据处理的特定于beamline的python脚本。
2.4. 开始开发GDA¶
给新开发人员的几点注意事项:
一旦您有了GDA源代码的版本,并且下载/签出了光束线或示例配置,您就可以通过在Eclipse IDE中打开源代码或运行编译脚本进行编译。编译脚本将把编译后的类放在与Eclipse IDE相同的位置。
GDA服务器作为常规Java进程运行,因此使用位于插件和功能目录中的项目中的编译类。
但是,客户端是一个RCP“产品”,一旦编译,就会在客户端目录内使用自己的编译类(在使用gda-build脚本编译客户端时创建)运行。
您可以从Eclipse IDE运行客户端,这不会使用客户端目录中的任何源代码或其他文件。这将完全从插件和功能目录中的编译代码运行。
2.4.1. 香草GDA¶
要让“空的”GDA安装添加您自己的对象,请对example-config进行以下更改:
删除脚本目录中除localStation.py之外的所有脚本
删除用户/脚本目录中的所有脚本
在xml/client/client.xml中,删除注释下面的所有对象
在xml/server中,删除除server.xml之外的所有文件和子文件夹
在xml/server/server.xml中,删除文件底部附近的导入