Skip to content

RovctdDataServlets

General

Two production servelets (data and diveinfo) and one development/test servlet.

Data, Dive and Development

Using Node.js and javascript. (and 'forever' and cron to keep them running)

"Node allows developers to write JavaScript code that runs directly in a computer process itself instead of in a browser"

For more about node

Usage

Servlets are 'self documenting to the user'.

http://coredata/rovctd/data/rovCtdDataServlet?

http://coredata/rovctd/diveifo/rovDiveInfoServlet?

http://coredata/rovctd/development/rovctddevelopmentservlet?

Coredata config

TheServerlet config ports assigned by IS to us for use:

  1. data (8081)
  2. diveinfo (8082)
  3. plots (8083) (obsolete, available for repurpose)
  4. development (8084) (available for test & development)
  5. rovo2info (8085) (obsolete, available for repurpose)

Apache web server is configured Configured for port 8081 thru 8085 but accessed via port 80 using proxy-pass See /etc/httpd/conf/httpd.conf and /etc/httpd/conf.d/proxypasses.conf

[coredata@coredata8 conf.d]$ pwd
/etc/httpd/conf.d
[coredata@coredata8 conf.d]$ cat proxypasses.conf
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#<VirtualHost *:80>
#    ServerAdmin webmaster@dummy-host.example.com
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>
<VirtualHost 134.89.10.119:80>
    ServerName coreadata8.shore.mbari.org
    DocumentRoot /var/www/html
    ProxyRequests on
    SetEnv force-proxy-request-1.0 1
    SetEnv proxy-nokeepalive 1
    RequestHeader unset Expect early
    <Proxy>
      Order deny,allow
      Allow from all
    </Proxy>

    <Location /rovctd/data/>
      ProxyPass http://134.89.10.119:8081/ retry=0
      ProxyPassReverse http://134.89.10.119:8081/
      SetEnv force-proxy-request-1.0 1
      SetEnv proxy-nokeepalive 1
      RequestHeader unset Expect early
    </Location>

    <Location /rovctd/diveinfo/>
      ProxyPass http://134.89.10.119:8082/ retry=0
      ProxyPassReverse http://134.89.10.119:8082/
      SetEnv force-proxy-request-1.0 1
      SetEnv proxy-nokeepalive 1
      RequestHeader unset Expect early
    </Location>

#    <Location /rovctd/plots/>
#      ProxyPass http://134.89.10.119:8083/ retry=0
#      ProxyPassReverse http://134.89.10.119:8083/
#    </Location>

    <Location /rovctd/development/>
      ProxyPass http://134.89.10.119:8084/ retry=0
      ProxyPassReverse http://134.89.10.119:8084/
      SetEnv force-proxy-request-1.0 1
      SetEnv proxy-nokeepalive 1
      RequestHeader unset Expect early
    </Location>

    <Location /rovctd/rovo2info/>
      ProxyPass http://134.89.10.119:8085/ retry=0
      ProxyPassReverse http://134.89.10.119:8085/
      SetEnv force-proxy-request-1.0 1
      SetEnv proxy-nokeepalive 1
      RequestHeader unset Expect early
    </Location>

</VirtualHost>
[coredata@coredata8 conf.d]$

Dataservlets crontab

@reboot    /usr/bin/forever start /var/www/html/rovctd/data/rovctddataservlet.js
@reboot    /usr/bin/forever start /var/www/html/rovctd/diveinfo/rovdiveinfoservlet.js
@reboot    /usr/bin/forever start /var/www/html/rovctd/development/rovctddevelopmentservlet.js
0 5,19 * * * /var/www/html/rovctd/data/killmyservlet.sh 2>&1
  1. We use "forever" to start the servlets at boot and keep them running. Learn more about forever HERE
  2. Because sometimes (rarely) the a servlet goes off in the weeds. So there is a script killmyservlet.sh that runs every night just to kill any hung instances and then forever restarts it automatically..
cat killmyservlet.sh
for i in ` ps -ef | grep coredata | grep rovctddataservlet | grep -v grep | grep -v monitor | awk '{print $2}'`
do
  #echo $i
  kill -9 $i
done

Installed at

/var/www/html/rovctd/diveinfo /var/www/html/rovctd/data /var/www/html/rovctd/development

Two old obsolete servlets: plots - I forget, but it was never migrated over rovo2info - never fully working, abandoned. (o2info is available thru diveinfo)

HTML Files

For quick testing - there is also a default index.html http://coredata/rovctd/ that you can point your browser to with hyperlinks to the two production servers (data and diveinfo)