Table of Contents
Installing Molgenis on Ubuntu
Note that the below procedure would not have been possible without the help of David van Enckevort. The document highlights the installation of the Molgenis web application. If you would like to develop or contribute (code) to the project, you are better off forking the github version.
Requirements
Install Java 8 (my favorite is the Oracle JDK). There are many websites explaining how to do this, but the TL;DR version is:
sudo apt-get install software-properties-common sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer # some annoying licence acceptance terms will pop up sudo apt-get install oracle-java8-set-default
When you are done java -version
and javac -version
should yield the Java 8 version and build number. Note that version 8 is a requirement for the molgenis platform.
You will also need to install Tomcat 7. This is straightforward with
sudo apt-get install tomcat7
Molgenis uses MySQL for its backend - so this needs to be installed using the following:
sudo apt-get install mysql-server libmysql-java
During this installation of MySQL you will be prompted for the root password, make sure to use something memorable.
Note that libmysql-java
installs the JDBC connection driver to MySQL. This JDBC Driver is a java class which needs to be made available to tomcat. Two ways of doing this are either including /usr/share/java/mysql.jar
in the tomcat7 user's CLASSPATH env variable or copying this file to the Tomcat lib
directory as follows:
sudo cp -v /usr/share/java/mysql.jar /usr/share/tomcat7/lib
Note that Tomcat should be restarted after this file is copied over (for the class to be loaded). This can be done with:
sudo service tomcat7 restart
Installation Procedure
- Tomcat will require some further configuration for Molgenis to run
- First edit the tomcat defaults (these are found in
/etc/default/tomcat7
). This special location is used to store admin settings which are likely to change and you want to keep across updates.sudo vim /etc/default/tomcat7
- Add the following line
JAVA_HOME=/usr/lib/jvm/java-8-oracle
to the file to make sure the JVM is the oracle one we installed above - In the
JAVA_OPTS
line (this is used to set the JVM parameters):- Change
-Xmx
parameter to whatever its value to-Xmx1g
- Add The following two properties
-Dmolgenis.home=/var/lib/molgenis -Dlog4j.configuration=log4j-molgenis.properties
- The resulting line should look something like:
JAVA_OPTS="-Djava.awt.headless=true -Xmx1g -XX:+UseConcMarkSweepGC -Dmolgenis.home=/var/lib/molgenis -Dlog4j.configuration=log4j-molgenis.properties"
- After these changes to Tomcat you will need to restart the application server with:
sudo service tomcat7 restart
- MySQL will also require some additional setup (basically creating a database, a username and a password).
mysql -u root -p -e "create database molgenis; grant all on molgenis.* to 'molgenis'@'localhost' identified by 'YOUR_PASSWORD_HERE'; flush privileges;"
- Create a molgenis directory which is writable by the
tomcat7
user (this is used for state information).sudo mkdir /var/lib/molgenis
- Set the correct permissions with
sudo chown tomcat7:tomcat7 /var/lib/molgenis
- We need to create a properties file called
molgenis-server.properties
in the molgenis home directory (i.e./var/lib/molgenis
) specified above.sudo vim /var/lib/molgenis/molgenis-server.properties
- This properties file should contain the following (please make sure to substitute the MySQL molgenis user password with the correct one):
#Molgenis server properties molgenis.version=13 admin.password=MOLGENIS_ADMIN_PASSWORD_HERE_CHANGE!!! db_uri=jdbc\:mysql\://localhost/molgenis db_driver=com.mysql.jdbc.Driver db_user=molgenis db_password=MYSQL_MOLGENIS_PASSWORD_HERE_CHANGE!!! mail.host=localhost mail.port=25
- Note: The
admin.password
property is the one which the useradmin
uses to log in the molgenis system (from the frontend). - The file is sensitive as it contains passwords, and should therefore be secured using the following:
sudo chown tomcat7:tomcat7 /var/lib/molgenis/molgenis-server.properties sudo chmod 600 /var/lib/molgenis/molgenis-server.properties
- Download the latest version of molgenis web application file (this is in the form of a Java war).
- Do this by searching for molgenis-app in the maven repository
- Download the war file by using wget. e.g.
wget http://search.maven.org/remotecontent?filepath=org/molgenis/molgenis-app/1.19.0/molgenis-app-1.19.0.war -O molgenis-app-1.19.0.war
- Rename the downloaded war file to
ROOT.war
(case important). This is an annoying and necessary limitation - Make sure owner tomcat7 owns the file,
sudo chown tomcat7:tomcat7 ROOT.war
- Copy the newly renamed
ROOT.war
to the Tomcat webs directory (by default this is in/var/lib/tomcat7/webapps
)sudo cp -vp ROOT.war /var/lib/tomcat7/webapps
- The above will automatically start deploying the molgenis app on Tomcat. If you want to follow what is going on, before copying set a
sudo tail -f /var/log/tomcat7/catalina.out
- When the molgenis web application deploys you should see something like:
<konsole> Aug 21, 2015 2:32:41 PM org.apache.catalina.startup.HostConfig deployWAR INFO: Deploying web application archive /var/lib/tomcat7/webapps/ROOT.war 14:33:04.641 [localhost-startStop-1] INFO o.m.d.e.f.EmbeddedElasticSearchServiceFactory - Embedded elasticsearch server started, data path=[/var/lib/molgenis/data] 14:33:07.379 [localhost-startStop-1] INFO o.m.d.version.MolgenisUpgradeService - MetaData version:13, current version:13 upgrade not needed 14:33:07.395 [localhost-startStop-1] INFO o.m.a.WebAppConfig$$EnhancerBySpringCGLIB$$183b5b00 - Reindexing repositories.... 14:33:09.499 [localhost-startStop-1] INFO o.m.a.WebAppConfig$$EnhancerBySpringCGLIB$$183b5b00 - Reindexing done. 14:33:09.551 [localhost-startStop-1] WARN o.m.data.mysql.MysqlRepository - Table for entity tags already exists. Skipping creation 14:33:09.576 [localhost-startStop-1] WARN o.m.data.mysql.MysqlRepository - Table for entity packages already exists. Skipping creation 14:33:09.678 [localhost-startStop-1] WARN o.m.data.mysql.MysqlRepository - Table for entity attributes already exists. Skipping creation 14:33:09.707 [localhost-startStop-1] WARN o.m.data.mysql.MysqlRepository - Table for entity entities already exists. Skipping creation 14:33:34.421 [localhost-startStop-1] ERROR o.m.d.support.AbstractEntityMetaData - No idAttribute specified for entityFileMeta, this attribute is required 14:33:34.427 [localhost-startStop-1] ERROR o.m.d.support.AbstractEntityMetaData - No idAttribute specified for entityFileMeta, this attribute is required 14:33:52.166 [localhost-startStop-1] INFO o.m.d.jpa.JpaRepositoryRegistrator - Registered JPA importer 14:33:52.167 [localhost-startStop-1] INFO o.m.d.m.EmxImportServiceRegistrator - Registered EMX import service 14:33:52.940 [localhost-startStop-1] INFO o.m.f.db.WebAppDatabasePopulator - initializing application database 14:34:40.345 [localhost-startStop-1] INFO o.m.f.db.WebAppDatabasePopulator - initialized application database 14:34:40.920 [localhost-startStop-1] INFO o.m.u.m.MenuManagerServiceImpl - Creating default menu from XML 14:34:43.557 [localhost-startStop-1] INFO o.m.script.ScriptRunnerFactory - Registering Script type R. 14:34:45.561 [localhost-startStop-1] INFO o.m.o.i.OntologyImporterServiceRegistrator - Registered ontology import service 14:34:51.415 [localhost-startStop-1] INFO o.m.o.i.OntologyScriptInitializerImpl - Script entity "roc" has been added to the database! 14:34:51.417 [localhost-startStop-1] INFO o.m.script.ScriptRunnerFactory - Registering Script type python. Aug 21, 2015 2:34:54 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-8080"] Aug 21, 2015 2:34:54 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 133414 ms </konsole>
You can access the molgenis web app by pointing your web browser to http://127.0.0.1:8080