Project

General

Profile

Install Adaguc on Ubuntu » History » Version 75

Llorenç Lliso, 02/19/2019 10:10 AM

1 48 Maarten Plieger
h1. Install Adaguc Server and Adaguc Viewer on Ubuntu LTS 16.04.2
2 27 Maarten Plieger
3 72 Maarten Plieger
h2. The following repositories are used:
4 72 Maarten Plieger
5 54 Maarten Plieger
* https://github.com/KNMI/adaguc-services - Java application for running adaguc-server from tomcat or as a spring boot application
6 53 Maarten Plieger
* https://github.com/KNMI/adaguc-server - C++ server for serving WMS, WCS and OpenDAP
7 53 Maarten Plieger
* https://github.com/KNMI/adaguc-viewer - Javascript web client for connecting to WMS
8 53 Maarten Plieger
9 53 Maarten Plieger
10 1 Maarten Plieger
This procedure was followed to create the ADAGUC VM image: 
11 1 Maarten Plieger
12 72 Maarten Plieger
h2. Install packages
13 72 Maarten Plieger
14 26 Maarten Plieger
<pre>
15 49 Maarten Plieger
sudo apt-get -y install vim kate kwrite konsole g++ m4 ncview curl git
16 74 Llorenç Lliso
17 74 Llorenç Lliso
sudo apt-get -y  install postgresql postgresql-server-dev-all postgresql-client postgresql-client-common  postgresql-contrib
18 74 Llorenç Lliso
 
19 74 Llorenç Lliso
(in ubuntu 18 libbggd-dev replaces libgd2-xpm-dev, so for ubuntu 18 do: 
20 74 Llorenç Lliso
sudo apt-get -y install libcurl4-openssl-dev libcairo2-dev libxml2-dev libgd-dev libudunits2-dev udunits-bin netcdf-bin libnetcdf-dev libhdf5-dev libproj-dev libgdal-dev
21 75 Llorenç Lliso
and skip the following line, for ubuntu 16 execute only the following line)  
22 74 Llorenç Lliso
sudo apt-get -y install libcurl4-openssl-dev libcairo2-dev libxml2-dev libgd2-xpm-dev libudunits2-dev udunits-bin netcdf-bin libnetcdf-dev libhdf5-dev libproj-dev libgdal-dev
23 74 Llorenç Lliso
24 49 Maarten Plieger
sudo apt-get -y install default-jre default-jdk maven
25 74 Llorenç Lliso
26 1 Maarten Plieger
sudo apt-get -y install chromium-browser
27 1 Maarten Plieger
</pre> 
28 1 Maarten Plieger
29 72 Maarten Plieger
h2. Setup postgresql
30 72 Maarten Plieger
31 1 Maarten Plieger
<pre>
32 56 Maarten Plieger
sudo service postgresql start
33 1 Maarten Plieger
sudo -u postgres createuser --superuser adaguc
34 1 Maarten Plieger
sudo -u postgres psql postgres -c "ALTER USER adaguc PASSWORD 'adaguc';"
35 1 Maarten Plieger
sudo -u postgres psql postgres -c "CREATE DATABASE adaguc;"
36 1 Maarten Plieger
echo "\q" | psql "dbname=adaguc user=adaguc password=adaguc host=localhost"
37 1 Maarten Plieger
if [ ${?} -eq 0 ];then
38 1 Maarten Plieger
    echo "Postgres database setup correctly"
39 1 Maarten Plieger
fi
40 29 Maarten Plieger
</pre>
41 29 Maarten Plieger
42 72 Maarten Plieger
h2. Install tomcat
43 30 Maarten Plieger
44 30 Maarten Plieger
<pre>
45 30 Maarten Plieger
sudo mkdir -p /src/
46 57 Maarten Plieger
sudo chown -R $USER: /src
47 30 Maarten Plieger
cd /src/
48 55 Maarten Plieger
curl -L https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.44/bin/apache-tomcat-8.0.44.tar.gz > apache-tomcat-8.0.44.tar.gz
49 30 Maarten Plieger
tar -xzvf apache-tomcat-8.0.44.tar.gz
50 30 Maarten Plieger
51 30 Maarten Plieger
printf "export CATALINA_HOME=\"/src/apache-tomcat-8.0.44\"\n\
52 30 Maarten Plieger
export CATALINA_BASE=\"/src/apache-tomcat-8.0.44\"\n\
53 30 Maarten Plieger
export ADAGUC_SERVICES_CONFIG=/src/config/adaguc-services-config-tomcat.xml\n\
54 30 Maarten Plieger
export JAVA_HOME=\"/usr\"\n\
55 30 Maarten Plieger
CONTENT_ROOT=-Dtds.content.root.path=/src/apache-tomcat-8.0.44/content\n\
56 30 Maarten Plieger
JAVA_PREFS_ROOTS=\"-Djava.util.prefs.systemRoot=$CATALINA_HOME/content/thredds/javaUtilPrefs -Djava.util.prefs.userRoot=$CATALINA_HOME/content/thredds/javaUtilPrefs\"\n\
57 30 Maarten Plieger
NORMAL=\"-d64 -Xmx4096m -Xms512m -server -ea\"\n\
58 30 Maarten Plieger
HEAP_DUMP=\"-XX:+HeapDumpOnOutOfMemoryError\"\n\
59 30 Maarten Plieger
HEADLESS=\"-Djava.awt.headless=true\"\n\
60 1 Maarten Plieger
JAVA_OPTS=\"$CONTENT_ROOT $NORMAL $MAX_PERM_GEN $HEAP_DUMP $HEADLESS $JAVA_PREFS_ROOTS\"\n\
61 30 Maarten Plieger
export JAVA_OPTS" > /src/apache-tomcat-8.0.44/setenv.sh
62 30 Maarten Plieger
63 30 Maarten Plieger
</pre>
64 30 Maarten Plieger
65 72 Maarten Plieger
h2. Install adaguc-services
66 73 Maarten Plieger
67 30 Maarten Plieger
<pre>
68 30 Maarten Plieger
sudo mkdir -p /src/KNMI
69 58 Maarten Plieger
sudo chown -R $USER: /src
70 32 Maarten Plieger
mkdir -p /src/config
71 32 Maarten Plieger
sudo mkdir -p /data
72 60 Maarten Plieger
sudo chown -R $USER: /data
73 32 Maarten Plieger
mkdir -p /data/adaguc-services-base
74 32 Maarten Plieger
mkdir -p /data/adaguc-services-space
75 36 Maarten Plieger
mkdir -p /src/log/
76 30 Maarten Plieger
cd /src/KNMI
77 30 Maarten Plieger
git clone https://github.com/KNMI/adaguc-services
78 30 Maarten Plieger
cd /src/KNMI/adaguc-services
79 30 Maarten Plieger
mvn package
80 61 Maarten Plieger
cp ./target/adaguc-services-*.war /src/apache-tomcat-8.0.44/webapps/adaguc-services.war
81 32 Maarten Plieger
82 32 Maarten Plieger
83 32 Maarten Plieger
# Configure adaguc-services
84 1 Maarten Plieger
printf "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\
85 32 Maarten Plieger
<adaguc-services>\n\
86 34 Maarten Plieger
  <external-home-url>http://localhost:8080/adaguc-services/</external-home-url>\n\
87 32 Maarten Plieger
  <basedir>/data/adaguc-services-base</basedir>\n\
88 32 Maarten Plieger
  <userworkspace>/data/adaguc-services-space</userworkspace>\n\
89 32 Maarten Plieger
  <server>\n\
90 32 Maarten Plieger
    <port>8080</port>\n\
91 32 Maarten Plieger
  </server>\n\
92 32 Maarten Plieger
  <security>\n\
93 32 Maarten Plieger
    <keystore>/src/keystore.jks</keystore>\n\
94 32 Maarten Plieger
    <keystorepassword>password</keystorepassword>\n\
95 32 Maarten Plieger
    <keystoretype>JKS</keystoretype>\n\
96 1 Maarten Plieger
    <keyalias>tomcat</keyalias>\n\
97 1 Maarten Plieger
  </security>\n\
98 32 Maarten Plieger
  <adaguc-server>\n\
99 34 Maarten Plieger
    <adagucexecutable>/src/KNMI/adaguc-server/bin/adagucserver</adagucexecutable>\n\
100 34 Maarten Plieger
    <export>ADAGUC_PATH=/src/KNMI/adaguc-server/</export>\n\
101 38 Maarten Plieger
    <export>ADAGUC_CONFIG=/src/KNMI/adaguc-server/data/config/adaguc.vm.xml</export>\n\
102 32 Maarten Plieger
    <export>ADAGUC_DATARESTRICTION=FALSE</export>\n\
103 34 Maarten Plieger
    <export>ADAGUC_FONT=/src/KNMI/adaguc-server/data/fonts/FreeSans.ttf</export>\n\
104 37 Maarten Plieger
    <export>ADAGUC_LOGFILE=/src/log/adaguc-server.log</export>\n\
105 32 Maarten Plieger
  </adaguc-server>\n\
106 52 Maarten Plieger
  <autowms>\n\
107 52 Maarten Plieger
    <enabled>true</enabled>\n\
108 52 Maarten Plieger
    <autowmspath>/data/adaguc-autowms/</autowmspath>\n\
109 1 Maarten Plieger
    <datasetpath>/data/adaguc-datasets/</datasetpath>\n\
110 1 Maarten Plieger
  </autowms>\n\
111 52 Maarten Plieger
</adaguc-services>" > /src/config/adaguc-services-config-tomcat.xml
112 33 Maarten Plieger
113 32 Maarten Plieger
</pre>
114 30 Maarten Plieger
115 72 Maarten Plieger
h2. Install adaguc-viewer
116 72 Maarten Plieger
117 30 Maarten Plieger
<pre>
118 30 Maarten Plieger
cd /src/apache-tomcat-8.0.44/webapps
119 30 Maarten Plieger
git clone https://github.com/KNMI/adaguc-viewer/
120 1 Maarten Plieger
printf "\n\
121 1 Maarten Plieger
xml2jsonrequestURL = '/adaguc-services/xml2json?'\n\
122 30 Maarten Plieger
autowmsURL = '/adaguc-services/autowms?';\n\
123 51 Maarten Plieger
getFeatureInfoApplications.push({name:'AutoWMS',iconCls:'button_getfeatureinfo'});\n\
124 51 Maarten Plieger
" >> adaguc-viewer/config.js
125 30 Maarten Plieger
</pre>
126 30 Maarten Plieger
127 72 Maarten Plieger
h2. Install adaguc-server
128 72 Maarten Plieger
129 29 Maarten Plieger
<pre>
130 1 Maarten Plieger
sudo mkdir -p /src/KNMI
131 60 Maarten Plieger
sudo chown -R $USER: /src
132 33 Maarten Plieger
sudo mkdir -p /data/
133 33 Maarten Plieger
sudo chown -R $USER: /data
134 33 Maarten Plieger
mkdir /data/adaguc-autowms
135 29 Maarten Plieger
mkdir /data/adaguc-datasets
136 1 Maarten Plieger
cd /src/KNMI
137 1 Maarten Plieger
git clone https://github.com/KNMI/adaguc-server
138 1 Maarten Plieger
cd /src/KNMI/adaguc-server
139 1 Maarten Plieger
bash compile.sh
140 1 Maarten Plieger
cp /src/KNMI/adaguc-server/data/datasets/testdata.nc /data/adaguc-autowms/
141 40 Maarten Plieger
cp /src/KNMI/adaguc-server/data/config/datasets/dataset_a.xml /data/adaguc-datasets/
142 35 Maarten Plieger
143 1 Maarten Plieger
</pre>
144 29 Maarten Plieger
145 72 Maarten Plieger
h2. Automate Start tomcat
146 72 Maarten Plieger
147 34 Maarten Plieger
<pre>
148 42 Maarten Plieger
echo -e '#!/bin/bash
149 42 Maarten Plieger
t=`ps -ef | grep apache-tomcat-8 | grep adaguc | grep -v grep`
150 42 Maarten Plieger
if [ ! -z "$t" -a "$t" != " " ]; then
151 42 Maarten Plieger
        echo "Tomcat is running"
152 42 Maarten Plieger
else
153 42 Maarten Plieger
  echo "Tomcat is not running, starting it"
154 42 Maarten Plieger
  . /src/apache-tomcat-8.0.44/setenv.sh
155 42 Maarten Plieger
  /src/apache-tomcat-8.0.44/bin/startup.sh
156 42 Maarten Plieger
  sleep 2
157 1 Maarten Plieger
fi' > /src/tomcatstarter.sh
158 42 Maarten Plieger
chmod +x /src/tomcatstarter.sh
159 42 Maarten Plieger
/src/tomcatstarter.sh
160 42 Maarten Plieger
161 44 Maarten Plieger
echo -e '@reboot /src/tomcatstarter.sh  > /dev/null 2>&1' > /src/crontab
162 42 Maarten Plieger
crontab /src/crontab
163 42 Maarten Plieger
164 1 Maarten Plieger
</pre>
165 42 Maarten Plieger
166 72 Maarten Plieger
h2. Check if it is working
167 1 Maarten Plieger
168 1 Maarten Plieger
Visit for files in /data/adaguc-autowms:
169 45 Maarten Plieger
* http://localhost:8080/adaguc-viewer/?service=http%3A%2F%2Flocalhost%3A8080%2Fadaguc-services%2Fadagucserver%3Fservice%3Dwms%26request%3Dgetcapabilities%26source%3Dtestdata.nc
170 45 Maarten Plieger
Visit for datasets in /data/adaguc-datasets:
171 45 Maarten Plieger
* http://localhost:8080/adaguc-viewer/?service=http%3A%2F%2Flocalhost%3A8080%2Fadaguc-services%2Fadagucserver%3Fservice%3Dwms%26request%3Dgetcapabilities%26dataset%3Ddataset_a
172 62 Maarten Plieger
173 65 Maarten Plieger
174 71 Maarten Plieger
h2. Update datasets
175 70 Maarten Plieger
176 67 Maarten Plieger
Dataset configurations [[Dataset]] can be configured via path /src/KNMI/adaguc-server/data/config/datasets. Data configured in these dataset configurations need to be scanned via an updatedb command:
177 64 Maarten Plieger
178 1 Maarten Plieger
<pre>
179 65 Maarten Plieger
# Update of dataset  /src/KNMI/adaguc-server/data/config/datasets/dataset_a.xml
180 62 Maarten Plieger
export ADAGUC_TMP=/tmp
181 1 Maarten Plieger
export ADAGUC_PATH=/src/KNMI/adaguc-server/
182 1 Maarten Plieger
/src/KNMI/adaguc-server/bin/adagucserver --updatedb --config /src/KNMI/adaguc-server/data/config/adaguc.vm.xml,dataset_a.xml
183 64 Maarten Plieger
184 64 Maarten Plieger
</pre>
185 26 Maarten Plieger
186 26 Maarten Plieger
---
187 47 Maarten Plieger
188 47 Maarten Plieger
*Please note:* The previous instructions for installing adaguc using Apache CGI and PHP can be found here: [[Install_Adaguc_on_Ubuntu_Old]]