Red Hat 7.x 配置ArcGIS Enterprise開機自動啟動

b10l07發表於2018-11-19

前言

要想在Red Hat 7.x上配置ArcGIS Datastore、ArcGIS Server、Portal for ArcGIS、WebAdaptor所在的tomcat自動啟動,和之前的版本是不同的。在7之前的版本,參考教程為:

  1. 在Linux環境下設定ArcGIS的 Server,Portal和DataStore服務開機自啟
  2. Linux下Tomcat開機自啟

絕對不要嘗試在Red Hat 7.x上使用RedHat6.8上的實施方案。

一、Portal, Server, Datastore 開機啟動

在開始之前,預設您已經按照Linux上安裝ArcGIS Enterprise超詳細教程——以Redhat7.2上安裝ArcGIS Enterprise 10.5為例的步驟將ArcGIS Enterprise安裝完畢。

1.拷貝

用root使用者登入
將 <Portal for ArcGIS installation directory>/framework/etc/arcgisportal.service 服務註冊檔案複製到 /etc/systemd/system
將 <ArcGIS Server 安裝目錄>/framework/etc/scripts/arcgisserver.service 單元檔案複製到 /etc/systemd/system
將 <ArcGIS Data Store installation directory>/framework/etc/scripts/arcgisdatastore.service 複製到 /etc/systemd/system

具體命令:

cp /home/arcgis/arcgis/server/framework/etc/scripts/arcgisserver.service /etc/systemd/system/arcgisserver.service
cp /home/arcgis/arcgis/arcgisportal/framework/etc/arcgisportal.service /etc/systemd/system/arcgisserver.service
cp /home/arcgis/arcgis/arcgisdatastore/framework/etc/arcgisportal.service /etc/systemd/system/arcgisserver.service

2.修改許可權

檔案複製完成後,請確保將其檔案許可權設定為 600。

chmod -R 600 /etc/systemd/system/arcgisserver.service
chmod -R 600 /etc/systemd/system/arcgisportal.service
chmod -R 600 /etc/systemd/system/arcgisdatastore.service

3.配置啟動

仍然以root使用者的身份執行以下命令,以在 /etc/systemd/system/multi-user.target.wants 中自動建立連結:

systemctl enable arcgisportal.service
systemctl enable arcgisserver.service
systemctl enable arcgisdatastore.service

4.如果想要驗證是否配置正確

先停止了以上的產品。例如各產品安裝目錄下的./stopxxx
利用systemd 重新啟動服務後檢查其狀態。以ArcGIS Server為例

systemctl stop arcgisserver.service
systemctl start arcgisserver.service
systemctl status arcgisserver.service

可以重啟此伺服器進行測試。看Server Datastore Portal服務能否起來。

reboot

二、Tomcat自動啟動

同樣的,預設您已經按照Linux上安裝ArcGIS Enterprise超詳細教程——以Redhat7.2上安裝ArcGIS Enterprise 10.5為例的步驟將ArcGIS Enterprise安裝完畢。Linux版的ArcGIS WebAdaptor 是執行在tomcat 容器裡的。所以設定了tomcat開機自動啟動也就實現了WebAdaptor開機自動啟動。
使用root使用者

1.建立pid檔案

在tomcat目錄下新建一個空檔案tomcat.pid 命令如下

cd /home/tomcat8
vi tomcat.pid
:wq!

2.設定tomcat記錄pid

在/home/tomcat8/bin目錄下新建setenv.sh(catalina.sh呼叫)

cd /home/tomcat8/bin
vi setenv.sh
$CATALINA_BASE為tomcat安裝的目錄路徑,將tomcat.pid指給了CATALINA_PID
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
:wq

CATALINA_PID 是個變數,在tomcat啟動的時候會寫入值到tomcat.pid

3.增加systemctl的tomcat服務

在/etc/systemd/system/目錄下增加tomcat.service,目錄必須是絕對目錄。

cd /etc/systemd/system
vi /tomcat.service
[Unit]
Description=Apache Tomcat 8
After=syslog.target network.target
 
[Service]
Type=forking
PIDFile=/home/tomcat8/tomcat.pid
ExecStart=/home/tomcat8/bin/startup.sh 
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
:wq

設定600許可權

chmod -R 600 /etc/systemd/system/tomcat.service

4.配置開機啟動

systemctl enable tomcat

5.測試啟動tomcat失敗

啟動tomcat

systemctl start tomcat
得到報錯為
Job for tomcat.service failed because the control process exited with error code. See "systemctl status tomcat.service" and "journalctl -xe" for details.
檢視錯誤資訊
systemctl status tomcat
● tomcat.service - Tomcat  
   Loaded: loaded (/usr/lib/systemd/system/tomcat.service; enabled; vendor preset: disabled)  
   Active: failed (Result: exit-code) since 五 2016-12-16 17:52:49 CST; 5s ago  
  Process: 34944 ExecStop=/bin/kill -s QUIT $MAINPID (code=exited, status=1/FAILURE)  
  Process: 34953 ExecStart=/usr/local/apache-tomcat-8.5.6/bin/startup.sh (code=exited, status=1/FAILURE)  
 Main PID: 34899 (code=exited, status=0/SUCCESS)  
  
12月 16 17:52:49 klmy-460-res01 systemd[1]: Starting Tomcat...  
12月 16 17:52:49 klmy-460-res01 startup.sh[34953]: Neither the JAVA_HOME nor the JRE_HOME environment varia...ined  
12月 16 17:52:49 klmy-460-res01 startup.sh[34953]: At least one of these environment variable is needed to ...gram  
12月 16 17:52:49 klmy-460-res01 systemd[1]: tomcat.service: control process exited, code=exited status=1  
12月 16 17:52:49 klmy-460-res01 systemd[1]: Failed to start Tomcat.  
12月 16 17:52:49 klmy-460-res01 systemd[1]: Unit tomcat.service entered failed state.  
12月 16 17:52:49 klmy-460-res01 systemd[1]: tomcat.service failed.  
Hint: Some lines were ellipsized, use -l to show in full.  

可以看到失敗的原因是 讀不到環境變數

startup.sh[34953]: Neither the JAVA_HOME nor the JRE_HOME environment varia...ined  
startup.sh[34953]: At least one of these environment variable is needed to ...gram  

而經過檢查JAVA_HOME 和JRE_HOME都是正常的。只能強行在catalina.sh裡寫入環境變數。
切換到tomcat bin目錄下

cd /home/tomcat/bin
vi catalina.sh
export JAVA_HOME=/home/jdk8
export JRE_HOME=/home/jdk8/jre  

再執行

systemctl start tomcat
systemctl status tomcat

成功。
可以重啟此伺服器進行測試。看tomcat服務能否起來。

reboot

相關文章