环境:ArcGIS Server10 in RedHat5.4/5.5 直连另一台服务器上的SDE for oracle 10.2.0.4 64位或oracle11g R1/R2 64位
注意:
1)ArcGIS Server在linux上对机器名有要求,需要包含完整的域名,因此在安装前需要在/etc/hosts文件里添加:IP地址 机器名.esri.com 机器名
2)SELINUX的问题,需要关闭SELINUX,执行:/usr/sbin/setenforce 0
引用:
When packaging an application on RHEL or CentOS, you may receive the following error:
cannot restore segment prot after reloc: Permission denied
This is likely due the the SE Linux setting being set to "enforcing"
.
To Temporarily disable enforcement on a running system
/usr/sbin/setenforce 0
To permanently disable enforcement during a system startup
change "enforcing" to "disabled" in ''/etc/selinux/config'' and reboot.
.
By default, CentOS 5 has the SE Linux feature set to "enforcing". We are looking into ways to removing these steps.
1、检查系统的包:
rpm -qa compat-libf2c-34
rpm -qa compat-libstdc++-33
rpm -qa compat-libstdc++-296
rpm -qa compat-openldap
rpm -qa compat-g77
rpm -qa libXp
rpm -qa mesa-libGL
rpm -qa mesa-libGLU
rpm -qa openldap
rpm -qa openssl
缺少的包可以采用以下命令安装:(一般这些包都能在操作系统光盘里找到)
rpm -ivh openldap-2.3.43-12.el5.i386.rpm --replacefiles
rpm -ivh compat-openldap-2.3.43_2.2.29-12.el5.i386.rpm --replacefiles
rpm -ivh compat-g77-3.3.5-42.1.i586.rpm --replacefiles
因为要直连sde for oracle数据库,所以需要在ArcGIS Server所在服务器安装oracle客户端(最好是32位)
具体安装oracle client的过程就不写了,网上有很多详细的安装过程。
2、配置oracle client的net service name,在tnsnames.ora下添加:
ORCL165 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.165)(PORT = 1521))
)
(CONNECT_DATA =
(SID = orcl)
)
)
以确保sqlplus sde/sde@orcl165能连上sde数据库。
3、添加arcgis用户,最好跟oracle用户相同的组,以免权限麻烦
useradd -g dba -G oinstall -d /home/arcgis arcgis
passwd arcgis 修改密码为arcgis
编辑.bash_profile环境变量:
export SDEHOME=/home/arcgis/server10.0
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/client_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$SDEHOME/lib
export PATH=$PATH:$ORACLE_HOME/bin:$SDEHOME/bin
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LANG=en_US.UTF8
su - arcgis重新切换让环境变量生效
红色需要注意:LD_LIBRARY_PATH主要用来指向oralce的lib库,如果是安装的32位客户端,直接用lib;如果是64位客户端,则需要使用lib32
确保在arcgis用户下能cd到ORACLE_HOME目录,能查看lib库里的文件。
如果RedHat系统是中文环境的(或64位的),一定要设置LANG=en_US.UTF8,否则在发布连接sde数据源的mxd(无论是服务连接还是直连),都会找不到data frame:
操作系统中文环境下LANG=zh_CN.UTF8,所以一定要确认这个环境变量的正确。当然本地文件数据发布是正常的,这个与客户端和oracle数据库字符集有关。
这里找不到data frame,即使不理会过去了,后面启动服务也会直接报错:server object container create failed。
遇到的麻烦就是在起初没设置LANG=en_US.UTF8,这样将直连sde的数据源(或sde服务)放到server机器上后,通过执行Server10.0/java/tools/mappatheditor/startMapPathEditor.sh打开mxd文档,能正常看到地图,表示连接sde库成功,但在发布mxd的时候,change dataframe为空,被折腾了好久,才发现是语言环境设置的问题。但之前在该机器上安装ArcGIS Server9.3.1时不需要设置LANG环境