Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Version History

Version 1 Next »

Overview

Describes how to set up and deploy the application to the IHSTDO server.

Details

  1. Log into the server 162.243.215.76
    1. You'll need the ihtsdo user password (uat3#Map for UAT, prod3#Map for prod)

  2. Install and configure software as root (nginx, tomcat7, libapache2_mod_jk, mysql-server-5.5, maven, git, svn, etc)
    1. You'll need the root user password
    2. Edit the /etc/init.d script to comment out the top part that forces running as root

    3. Edit the /etc/init.d script to use this:

       

      CATALINA_PID="/var/lib/tomcat7/$NAME.pid"
    4. Set permissions of the tomcat installation to the "ihtsdo" user

       

       
      chown -R ihtsdo /var/log/tomcat7
      chgrp -R ihtsdo /var/log/tomcat7
      chown -R ihtsdo /var/cache/tomcat7
      chgrp -R ihtsdo /var/cache/tomcat7
      chown -R ihtsdo  /var/lib/tomcat7
      chgrp -R ihtsdo  /var/lib/tomcat7
       
      Edit /etc/init.d/tomcat7 to use the following
      * TOMCAT7_USER=ihtsdo
      * TOMCAT7_GROUP=ihtsdo
       
      Edit /etc/default/tomcat7
      * TOMCAT7_USER=ihtsdo
      * TOMCAT7_GROUP=ihtsdo
      ** This must be done while tomcat is NOT running.
    5. See ~root/README.txt

  3. Tomcat must be configured to pass "run.config" environment variable to the application
    1. One way to do this is to invoke the java command with -Drun.config=/home/ihtsdo/data/config.properties
      (e.g. edit this in /etc/init.d/tomcat7 and add to JAVA_OPTS)
    2. Also add -Xmx2500M to JAVA_OPTS in the tomcat startup script.
    3. NOTE: development environments must also be configured as such

  4. Tomcat must be configured to support POST requests of size > 2MB
    1. Edit server.xml and add  maxPostSize="50000000" to each <Connector> element.

  5. Tomcat must be configured to support following of links.  Make sure any Context tags in the configuration contain  allowLinking="true".
    1. Edit context.xml to add this parameter to the Context tag.

  6. Make sure you have MAVEN_OPTS set 
    1. e.g. -XX:MaxPermSize=512m -Xmx3072m
  7. Nginx Configuration
    1. Install the SSL keys as root in the appropriate places
    2. Edit /etc/nginx/sites-available/mapping.ihtsdotools.org (see the webapp/src/main/nginx directory for configurations).
    3. Link /etc/nginx/sites-enabled/mapping.ihtsdotools.org to the file above
    4. Add a Valve to tomcat to handle proxy headers.
    5. Edit /etc/nginx/nginx.conf and add "client_max_body_size 50M;" to the "http" context.
    6. See the attachment for more details

  8. As the MySQL root user, create an OTF user with the mysql client

     

    CREATE USER 'otf'@'localhost' IDENTIFIED BY 'otfpwd';
    GRANT ALL privileges ON *.* TO 'otf'@'localhost';
  9. As the MySQL root user, create a database in the mysql client

     

    CREATE DATABASE mappingservicedb
      DEFAULT CHARACTER SET utf8
      DEFAULT COLLATE utf8_general_ci;
    CREATE DATABASE mappingservicedbtest
      DEFAULT CHARACTER SET utf8
      DEFAULT COLLATE utf8_general_ci;
    GRANT ALL ON mappingservicedb.* TO 'otf';
    GRANT ALL ON mappingservicedbtest.* TO 'otf';
  10. Get code

     

    cd
    mkdir code
    cd code
     
    # switch to dev branch - for UAT
    git checkout develop
     
    # switch to dev branch - for PROD
    git checkout master
     
    mvn -DskipTests=false clean install
  11. Get data.

     

    cd
    mkdir data
    git clone ssh://csfe.aceworkspace.net:29418/mapping data
    mkdir data/doc
    mkdir data/doc/archive
    chmod -R ga+rwx data/doc
  12. Prepare the tomcat indexes location

     

    # To clean up the indexes do this (as root)
    /bin/rm -rf /var/lib/tomcat7/indexes
    mkdir /var/lib/tomcat7/indexes
    mkdir /var/lib/tomcat7/indexes/lucene
    mkdir /var/lib/tomcat7/indexes/lucene/indexes
    chmod -R ga+rwx /var/lib/tomcat7/indexes
    chown -R ihtsdo /var/lib/tomcat7/indexes
    chgrp -R ihtsdo /var/lib/tomcat7/indexes
     
    # Ensure the config.properties file used to run the application has this setting
    hibernate.search.default.indexBase=/var/lib/tomcat7/indexes/lucene/indexes

     



  13. Create and Load the data

     

    cd ~/code/admin/loader/scripts
    load_prod.csh >&! load_prod.log

     

    Note also that TreePositions will be automatically calculated when loading a terminology.  To recompute SNOMED tree positions without reloading terminology, use:

     

    cd ~/code/admin/loader
    mvn -Drun.config=prod -P SNOMEDCT-treepos
  14. Stop tomcat, clear cache,and remove the currently deployed .war files (and associated folders).

     

    # Stop the tomcat7 server
    service tomcat7 stop
    /bin/rm -rf /var/lib/tomcat7/work/Catalina/localhost/mapping-rest
    /bin/rm -rf /var/lib/tomcat7/webapps/mapping-rest
    /bin/rm -rf /var/lib/tomcat7/webapps/ROOT
    /bin/rm -rf /var/lib/tomcat7/webapps/mapping-rest.war
    /bin/rm -rf /var/lib/tomcat7/webapps/ROOT.war
  15. Update the database (this needs to go into the reload page):

     

    mvn clean install -Drun.config=/home/ihtsdo/config/config.properties -Dhibernate.hbm2ddl.auto=update
  16. Update file modification date to prevent caching issues.

     

    cd ~/code
    set date = `date +%Y%m%d%H%M`
    touch -t $date `find . -name "*"`
  17. Build Rest and deploy war

     

    cd ~/code/rest
    mvn -Drun.config=$OTF_MAPPING_CONFIG clean install
    /bin/cp -f target/mapping-rest*war /var/lib/tomcat7/webapps/mapping-rest.war
  18. Build Webapp war

     

    cd ~/code/webapp
    mvn -Drun.config=$OTF_MAPPING_CONFIG clean install
    /bin/cp -f target/mapping-webapp*war /var/lib/tomcat7/webapps/ROOT.war
  19. Start service and link "doc" directory.

     

    service tomcat7 start
     
    # wait for deploy to create the ROOT directory
    sleep 5
    # link doc directory
    cd /var/lib/tomcat7/webapps/ROOT
    ln -s /home/ihtsdo/data/doc
  20. NOW, if deploying to PROD, create a github pull request.

  21. Wire tomcat to redirect to the home URL.  In the webapp root find the ROOT application and replace the index.html page. e.g.
    NOTE:  DO NOT do this step anymore as the application is now deployed as the root war

     

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <meta http-equiv="refresh" content="0; url=/mapping-webapp/app/index.html#/" />
        <title>IHTSDO Mapping Tool - redirect</title>
    </head>
    <Body>
    </body>
    </html>

 

Complete Data Load

 

Getting Backups from PROD to UAT

A daily backup tgz file exists on the prod server at

  • /var/backup/data.tgz

Alternatively, you could log into the uat and use this command

 

sudo aws s3 ls mapping.backup.ihtsdo

 

 

This will produce a list such as the following (just run):

2014-09-28 01:02:47 343656836 dbbackup_mappingservicedb_201409280100.bak.gz
2014-09-29 01:02:48 343750530 dbbackup_mappingservicedb_201409290100.bak.gz
2014-09-30 01:02:49 343867437 dbbackup_mappingservicedb_201409300100.bak.gz
2014-10-01 01:02:46 343892129 dbbackup_mappingservicedb_201410010100.bak.gz
2014-10-02 01:02:46 349749641 dbbackup_mappingservicedb_201410020100.bak.gz
2014-10-03 01:04:15 349779484 dbbackup_mappingservicedb_201410030100.bak.gz

Choose the backup you want to copy (it keeps the most recent 6 days) and do the following (this example taking the most recent backup):

 

sudo aws s3 cp s3://mapping.backup.ihtsdo/dbbackup_mappingservicedb_201410030100.bak.gz ~/

 

 

This  will copy to ~/ (or wherever you want by changing that location at the end of the command).  Then gunzip the file.

 

 

  • No labels