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"
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:
- data (8081)
- diveinfo (8082)
- plots (8083) (obsolete, available for repurpose)
- development (8084) (available for test & development)
- 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
- We use "forever" to start the servlets at boot and keep them running. Learn more about forever HERE
- 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)