- Create user xnat to run Tomcat service:
sudo useradd -u 6667 -d /opt/xnat -s /bin/bash xnat
- Install PostgreSQL:
sudo apt-get install postgresql
then edit /etc/postgresql/9.5/main/postgresql.conf file:standard_conforming_strings=off
, and restart PostgreSQL server:sudo /etc/init.d/postgresql restart
- Install Java 7
Current XNAT (v1.6.5) requires Java 7. Java 8 will NOT work. Type the commands below to install Java 7:sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-installer oracle-java7-set-default
- Install Tomcat 7
Current XNAT v1.6.5 requires Tomcat7. However, DO NOT install tomcat7 from Ubuntu Repository. It was compiled with Java 8 and will cause this problem. Instead, you should download from offical Tomcat web site. Type the command below to install tomcat:cd /opt sudo wget http://apache.mirror.serversaustralia.com.au/tomcat/tomcat-7/v7.0.70/bin/apache-tomcat-7.0.70.tar.gz sudo tar zxvf apache-tomcat-7.0.70.tar.gz sudo ln -s /opt/apache-tomcat-7.0.70 /opt/tomcat7 sudo chown -R xnat:xnat /opt/apache-tomcat-7.0.70 sudo chown -R xnat:xnat /opt/tomcat7
then set startup scripts permissions:sudo chmod +x /opt/tomcat7/bin/startup.sh sudo chmod +x /opt/tomcat7/bin/shutdown.sh
and you need to set JAVA_OPTS in /opt/tomcat7/bin/catalina.sh and insert the following line at the start:JAVA_OPTS="-XX:MaxPermSize=1024m -Xmx8192m"
NOTE: you need to set MaxPermSize and MaxHeapSize(Xmx) in JAVA_OPTS. Otherwise, OutOfMemoryError will occur when you load XNAT web app. - Install Maven:
sudo apt-get install maven
- Download and extract XNAT 1.6.5:
cd /opt sudo wget ftp://ftp.nrg.wustl.edu/pub/xnat/xnat-1.6.5.tar.gz sudo tar zxvf xnat-1.6.5.tar.gz sudo chown -R xnat:xnat /opt/xnat
- Prepare XNAT directories:
sudo mkdir /data/xnat/archive sudo mkdir /data/xnat/prearchive sudo mkdir /data/xnat/ftp sudo mkdir /data/xnat/cache sudo mkdir /data/xnat/build
NOTE: '/data/xnat' should be the mount point for large storage for XNAT. - Set up environment variables for xnat user, by editting .bashrc file:
sudo su xnat vi ~/.bashrc
add the following:# JAVA export JAVA_HOME=/usr/lib/jvm/java-7-oracle export PATH=$JAVA_HOME/bin:$PATH # Tomcat export TOMCAT_HOME=/opt/tomcat7 export PATH=$PATH:$TOMCAT_HOME/bin # XNAT export XNAT_HOME=/opt/xnat export PATH=$PATH:$XNAT_HOME/bin
- Create XNAT database user xnat01:
sudo su postgres createuser -U postgres -S -D -R -P xnat01
Note: set and remember the password for db user xnat01, you will need it in the XNAT build.properties file. - Create XNAT database:
sudo su postgres createdb -U postgres -O xnat01 xnat
- Edit /opt/xnat/build.properties:
su xnat cd /opt/xnat cp build.properties.sample build.properties vi build.properties
and the content should be like below:maven.appserver.home = /opt/tomcat7 xnat.site.title=XNAT xdat.project.name=xnat xdat.project.db.name=xnat xdat.project.db.driver=org.postgresql.Driver xdat.project.db.connection.string=jdbc:postgresql://localhost/xnat xdat.project.db.user=xnat01 xdat.project.db.password=XXXXXXX xdat.archive.location=/data/xnat/archive xdat.prearchive.location=/data/xnat/prearchive xdat.cache.location=/data/xnat/cache xdat.ftp.location=/data/xnat/ftp xdat.build.location=/data/xnat/build xdat.mail.server=mail.yourdomain.org xdat.mail.port=25 xdat.mail.protocol=smtp xdat.mail.username= xdat.mail.password= xdat.mail.admin=xnat-admin@yourdomain.org xdat.url=http://192.168.100.12:8080/xnat xdat.require_login=true xdat.enable_new_registrations=false xdat.security.channel=any xdat.enable_csrf_token=true
Note: xdat.url need to be set to the public ip or address instead of localhost if you want the XNAT server to be accessed from other computers. - Edit project.properties file. and replace the 'maven.repo.remote' line with
maven.repo.remote=https://nrgxnat.artifactoryonline.com/nrgxnat/xnat-maven1
NOTE: You need to do this because the offical XNAT maven repository is down. - Run setup.sh script to build:
sudo su xnat cd /opt/xnat bin/setup.sh
- Create Database tables & views:
cd /opt/xnat psql xnat01 -h localhost -d xnat -f deployments/xnat/sql/xnat.sql
Note: you need supply the password for db user xnat01. - Store initial security settings:
sudo su xnat cd /opt/xnat/deployments/xnat StoreXML -project xnat -l security/security.xml -allowDataDeletion true
- Store Example Custom Variable Sets:
sudo su xnat cd /opt/xnat/deployments/xnat StoreXML -dir ./work/field_groups -u admin -p admin -allowDataDeletion true
- Deploy the web app
sudo su xnat cd /opt/xnat bin/update.sh -Ddeploy=true
- Now start Tomcat7 server:
sudo su xnat /opt/tomcat7/bin/startup.sh
- When open the xnat web page in browser the first name, it will take a very long time to load as it is loading the XNAT web app in Tomcat.
Key points
- Install JAVA 7. Java 8 does not work.
- Download Tomcat 7 binary from offical Tomcat web site. DO NOT install from Ubuntu Repository.
- Set Java MaxPermSize and Xmx(MaxHeapSize) in JAVA_OPTS for Tomcat7 startup script catalina.sh. Missing this step will cause OutOfMemoryError when load XNAT web app
- Official XNAT maven repository site is down. Edit project.properties to replace it with https://nrgxnat.artifactoryonline.com/nrgxnat/xnat-maven1
- Tomat7 server is run as xnat user.