hans@901: \subsection{Artifact-Server} hans@921: The Artifact-Server contains the entire business logic of the system. hans@921: The server provides a RESTful interface with a XML-based protocol to the hans@921: webclient. Technically the server is a standalone java process serving the hans@921: REST interface. hans@901: hans@901: \subsubsection*{Installation} hans@921: \label{ref:artifact-server-install} hans@901: hans@921: Running the server with its own user\footnote{Remark: A group with the hans@921: same name is created automatically.}: hans@921: \begin{lstlisting} hans@921: adduser artifacts hans@921: \end{lstlisting} hans@921: hans@921: Setup and configuring logging: hans@901: \begin{lstlisting} hans@901: cd /var/log hans@901: mkdir artifacts hans@901: chmod 770 artifacts hans@901: chmod g+s artifacts hans@901: \end{lstlisting} hans@901: hans@921: The log level can be adjusted in the file \verb+ conf/log4j.properties+. hans@921: Further information can be found there. hans@921: hans@921: Integrate software of artifact-server into filesystem: hans@921: \begin{lstlisting} hans@901: cd /opt hans@921: tar xfvj /root/artifact-server-$VERSION.tar.bz2 hans@921: ln -s artifact-server-$VERSION artifact-server hans@901: cd artifact-server hans@921: \end{lstlisting} hans@901: hans@921: Setting the access rights: hans@921: \begin{lstlisting} hans@901: bin/setup.sh hans@921: \end{lstlisting} hans@901: hans@921: Configure connection to database: hans@921: \begin{lstlisting} hans@925: cd /opt/artifact-server hans@901: vim conf/arcsdeconnectionpool.properties hans@901: hans@921: # in conf/arcsdeconnectionpool.properties do: hans@901: server=xyz.server.com hans@901: username=guest hans@901: credentials=XYZ hans@901: port=5151 hans@901: database=esri_sde hans@921: \end{lstlisting} hans@901: hans@921: Configure address for finding the WMS-Server: hans@921: \begin{lstlisting} hans@925: cd /opt/artifact-server/ hans@921: vim conf/conf.xml hans@921: # adapt the address in the element hans@921: # artifact-database/gnv/mapserver/server. This is hans@921: # the string the server uses to provide an address of the mapserver to enduser. hans@921: e.g. http://SERVER/cgi-bin/gnv-wrapper hans@921: \end{lstlisting} hans@902: hans@921: The artifact server can export and import projects of the user's hans@921: parameterizations. In order to protect the server against invalid files, hans@921: configure a secret for signing artifacts. hans@901: hans@921: {\em Hint: If the secret is changed, all files that were created before hans@921: are not valid anymore.} hans@921: hans@921: \begin{lstlisting} hans@921: # generate a randomized string, e.g. hans@925: cd /opt/artifact-server/ hans@921: pwgen -s 30 hans@921: # populate the tag artifact-database/export-secret hans@921: \end{lstlisting} hans@921: hans@925: Adapt TCP-port of artifact-server, if the default has to be changed hans@921: (default:8181): hans@921: \begin{lstlisting} hans@925: cd /opt/artifact-server hans@901: vim conf/conf.xml hans@901: hans@921: # in conf/conf.xml edit the element artifact-database/rest-server/port hans@921: \end{lstlisting} hans@901: hans@921: Integrate artifact-server in startup-process of operating system: hans@921: \begin{lstlisting} hans@925: cp -i /opt/artifact-server/bin/debian/artifact-server /etc/init.d/ hans@921: chmod +x /etc/init.d/artifact-server hans@901: update-rc.d artifact-server defaults hans@921: \end{lstlisting} hans@901: hans@921: The server can be started and stopped via hans@921: \begin{lstlisting} hans@921: /etc/init.d/artifact-server {start | stop} hans@921: \end{lstlisting} hans@901: hans@921: The installation of the artifact-server is finished. It can be tested hans@901: now. hans@901: hans@901: \subsubsection*{Test of the Installation} hans@921: \label{ref:artifact-server-testing} hans@901: Start the server: hans@921: \begin{lstlisting} hans@925: /etc/init.d/artifact-server start hans@921: \end{lstlisting} hans@901: hans@921: 1. Operating System: Check if the process of the server called "App" hans@921: is running: hans@921: \begin{lstlisting} hans@921: jps hans@901: hans@921: # Example with list of java processes: hans@901: 19252 hans@901: 19509 Jps hans@901: 19441 App hans@921: hans@925: cat /var/run/artifact-server hans@901: \end{lstlisting} hans@901: hans@921: Task: Compare the running process numbers. hans@901: hans@925: 2. Network: Check if the artifact-server opens a TCP-port (default: 8181) hans@921: \begin{lstlisting} hans@901: netstat -nltp hans@901: hans@921: # Check for an entry like: hans@921: tcp 0 0 127.0.0.1:8181 0.0.0.0:* LISTEN 18648/java hans@921: \end{lstlisting} hans@901: hans@925: 3. Artifact-Server ready for communication with client? hans@921: \begin{lstlisting} hans@924: curl "http://localhost:8181/factories" | xmllint --format - hans@921: \end{lstlisting} hans@901: hans@921: Task: Check for a XML-document describing possible expert information hans@921: systems (FIS)