Upgrading to Mifos X 16.06.01 on Ubuntu
Important
Before you begin, please take backup of database, war and community-app
Step 1: Stop running tomcat server
ubuntu@host:~$ /etc/init.d/tomcat7 stop
If tomcat fails to shutdown gracefully then get the process id of the MIfos X war running on tomcat (Since it is java application, process information contains 'java' word)
ubuntu@host:~$ ps -ef | grep java root 1189 1 0 12:28 ? 00:02:20 /usr/bin/java -Djava.util.logging.config.file=/usr/share/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -server -Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:MaxPermSize=512m -Djava.endorsed.dirs=/usr/share/tomcat7/endorsed -classpath /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar -Dcatalina.base=/usr/share/tomcat7 -Dcatalina.home=/usr/share/tomcat7 -Djava.io.tmpdir=/usr/share/tomcat7/temp org.apache.catalina.startup.Bootstrap start
Note: If system running multiple Java applications then it will list all the process id, please select the process id corresponding to tomcat server that is running Mifos X application
ubuntu@host:~$ sudo kill -9 1189
Step 2: Uninstall Java, if Java version is less than Java 8
Q: How to Check Java version?A: Java -version
Skip Step 2 and Step 3 if your machine has Java version 8 (1.8)
1) Remove all the Java related packages (Sun, Oracle, OpenJDK, IcedTea plugins, GIJ):
dpkg-query -W -f='${binary:Package}\n' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e '^java-common' | xargs sudo apt-get -y remove sudo apt-get -y autoremove
2) Purge config files:
dpkg -l | grep ^rc | awk '{print($2)}' | xargs sudo apt-get -y purge
3) Remove Java config and cache directory:
sudo bash -c 'ls -d /home/*/.java' | xargs sudo rm -rf
4) Remove manually installed JVMs:
sudo rm -rf /usr/lib/jvm/*
5) Remove Java entries, if there is still any, from the alternatives:
for g in ControlPanel java java_vm javaws jcontrol jexec keytool mozilla-javaplugin.so orbd pack200 policytool rmid rmiregistry servertool tnameserv unpack200 appletviewer apt extcheck HtmlConverter idlj jar jarsigner javac javadoc javah javap jconsole jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic schemagen serialver wsgen wsimport xjc xulrunner-1.9-javaplugin.so; do sudo update-alternatives --remove-all $g; done
6) Search for possible remaining Java directories:
sudo updatedb sudo locate -b '\pack200'
7) Check for java is removed
java -version
Step 3: Install Java 8
Follow Step 3 in installing Java 8 if you have removed Java in last step.
1) Install Java 8
sudo apt-get update
sudo apt-get install oracle-java8-installer
java license agreement
On prompting for accepting oracle java agreement, accept the agreement by pressing y(yes) key.
On completion of java installation,one could verify the installed version by & should be 1.8v:-
# java -version
2) Check for java is installed
java -version
You should see this below message:-
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
Step 4: Uninstall existing Tomcat
ubuntu@host:~$ sudo apt-get remove tomcat7
Failed to uninstall
if you get message 'Package 'tomcat7' is not installed, so not removed' then that mean tomcat was not installed using apt-get install instead it was installed by downloading tar.zip
sudo find / -name tomcat7
3) Remove all tomcat directories
sudo rm -r /usr/share/tomcat7
sudo rm -r /var/lib/tomcat7
sudo rm -r /var/log/tomcat7
sudo rm -r /etc/init.d/tomcat7
4) Search for all remaining tomcat directories & remove them too.
sudo find / -name tomcat7
Step 5: Tomcat Installation
Install the tomcat server only if you have uninstalled it in previous step.
1) Install Tomact :
# cd ~
# sudo wget http://mirror.fibergrid.in/apache/tomcat/tomcat-7/v7.0.69/bin/apache-tomcat-7.0.69.tar.gz
# cd /usr/share
# sudo tar xvf /home/ubuntu/apache-tomcat-7.0.69.tar.gz
# sudo mv apache-tomcat-7.0.69 tomcat7
Note
For latest release you can download it from , this link:-:- https://tomcat.apache.org/download-70.cgi →Go to Core→ Select "tar.gz" File
2) Install nano - text editor
# sudo apt-get install nano
Server Time and Date Settings(Optional)
Check date:
# date
and if needed update using the command
# dpkg-reconfigure tzdata
Step 6: Tomcat setup
1) Enabling SSL
To enable tomcat SSL (https), generate and store a key:
# sudo keytool -genkey -keyalg RSA -alias tomcat -keystore /usr/share/tomcat.keystore
set keystore password
set password to: xyz123
(Bad for security, but just to get all installed and instructions on how to change it will be provided later in this guide)
This gets stored in /usr/share/tomcat7 as tomcat.keystore
2) Updating server.xml configuration file
It is located at /usr/share/tomcat7/conf/server.xml path
# sudo nano /usr/share/tomcat7/conf/server.xml
nano shortcut keys
copy and replace below content into it
<?xml version='1.0' encoding='utf-8'?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JasperListener" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> <Resource type="javax.sql.DataSource" name="jdbc/mifosplatform-tenants" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" driverClassName="org.drizzle.jdbc.DrizzleDriver" url="jdbc:mysql:thin://localhost:3306/mifosplatform-tenants" username="root" password="mysql" initialSize="3" maxActive="10" maxIdle="6" minIdle="3" validationQuery="SELECT 1" testOnBorrow="true" testOnReturn="true" testWhileIdle="true" timeBetweenEvictionRunsMillis="30000" minEvictableIdleTimeMillis="60000" logAbandoned="true" suspectTimeout="60" /> </GlobalNamingResources> <Service name="Catalina"> <Connector protocol="org.apache.coyote.http11.Http11Protocol" port="443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="/usr/share/tomcat.keystore" keystorePass="xyz123" clientAuth="false" sslProtocol="TLS" URIEncoding="UTF-8" compression="force" compressableMimeType="text/html,text/xml,text/plain,text/javascript,text/css"/> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service> </Server>
3) Download drizzle jdbc connector
Place it under lib folder
# cd /usr/share/tomcat7/lib
# sudo wget http://central.maven.org/maven2/org/drizzle/jdbc/drizzle-jdbc/1.3/drizzle-jdbc-1.3.jar
4) Edit /etc/init.d/tomcat7
# sudo nano /etc/init.d/tomcat7
copy below red colored content into it & exit by pressing ctrl+x then confirm with y for yes.
# Tomcat auto-start case $1 in |
# sudo chmod 755 /etc/init.d/tomcat7
Link this script to the startup folders with a symbolic link.Execute these two commands.
# sudo ln -s /etc/init.d/tomcat7 /etc/rc1.d/K99tomcat
# sudo ln -s /etc/init.d/tomcat7 /etc/rc2.d/S99tomcat
Step 7:Download and extract Fineract platform:
# cd /usr/src
# sudo wget https://sourceforge.net/projects/mifos/files/Mifos%20X/fineractplatform-16.06.01.RELEASE.zip
# sudo apt-get install unzip
# sudo unzip fineractplatform-16.06.01.RELEASE.zip
# cd fineractplatform-16.06.01.RELEASE
For latest release you can download from or If wget/download fails, this link:- http://sourceforge.net/projects/mifos/files/Mifos%20X/ )
Step 8: Droping Mifos into Tomcat
1) Copy fineract-platform and community app into Tomcat's webapps folder:
# cd /usr/src/fineractplatform-16.06.01.RELEASE
# sudo cp fineract-provider.war /usr/share/tomcat7/webapps/
# sudo cp -r apps/community-app/ /usr/share/tomcat7/webapps/
# sudo cp -r api-docs/ /usr/share/tomcat7/webapps/
# cd /usr/share/tomcat7/webapps
# sudo mv ROOT OLDROOT
# sudo mv community-app ROOT
2) Create a directory for reports (pentahoReports):
# sudo -i
# cp -r /usr/src/fineractplatform-16.06.01.RELEASE/pentahoReports /root/.mifosx
pentahoReports & upload directory
Pentaho Reports
If /pentahoReports is not copied into /root/.mifosx, penatoh reports,ex:accounting reports will fail with:
Income Statement.prpt","defaultUserMessage":"Unable to create key: No loader was able to handle the given key data: /usr/share/tomcat7/.mifosx/pentahoReports/Income Statement.prpt","userMessageGlobalisationCode":"error.msg.reporting.error","parameterName":null,"value"
Upload Directory
- .fineract directory gets created automatically, if not created then Clients > Upload Documents will fail with: "Error error.msg.document.save" (firebug, network tab)
- Access to this directory should be restricted to authorized personnel only.
While all accounting related information is stored in a database, submitted documents are simply stored in orginal format as uploaded. Mifos will store user uploaded files/documents relating to clients,loans,etc in .fineract/
3) and finally to start
# sudo /etc/init.d/tomcat7 start
Setup is complete and mifos should be running.
OPTIONAL:
*in separate terminal you may watch your Mifos(logs) come to life like this:
# tail -f /usr/share/tomcat7/logs/catalina.out
(if all is good, after a while of loading, you should see something like: Root WebApplicationContext: initialization completed in 45876 ms)
Important
Important
You could access Mifos X through any internet browser:-
@ https://server ip address with you earlier credentails
Note: Since in this instruction page, we have provided port number as 443 in server.xml page so need to provide port number. Since we have renamed community-app as ROOT no need to provide /community-app