Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info
titleImportant

Before you begin, please take backup of database, war and community-app

Step 1: Stop running tomcat server

Code Block
themeEmacs
titleShutdown tomcat gracefully
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)

Code Block
languagepowershell
themeEmacs
titleSearch all java process
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

Code Block
languagepowershell
themeEmacs
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
 
Note
Java 1.8.x is same as Java 8
Warning

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

Note

 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  

 

Info
titlejava 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 

Info

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 

Warning
No need to uninstall the tomcat server if it's version is 7.0.69 and above
Code Block
languagepowershell
themeEmacs
titleapt-get remove (If tomcat was install useing apt-get))
ubuntu@host:~$ sudo apt-get remove tomcat7
Warning
titleFailed 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

Note

Install the tomcat server only if you have uninstalled it in previous step.

                       1  1) Install tomact 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

Info
titleNote

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

 

Info

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

 
Tip: To delete line by line you could use ctrl+k
To exit you could use ctrl+x
To confirm say yes & you could use y
then click on enter button to save

copy and replace below content into it

Code Block
languagexml
themeEclipse
titleserver.xml
<?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 &quot;%r&quot; %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
#
# description: Auto-starts tomcat
# processname: tomcat
# pidfile: /var/run/tomcat.pid

case $1 in
start)
sh /usr/share/tomcat7/bin/startup.sh
;;
stop)
sh /usr/share/tomcat7/bin/shutdown.sh
;;
restart)
sh /usr/share/tomcat7/bin/shutdown.sh
sh /usr/share/tomcat7/bin/startup.sh
;;
esac
exit 0

# 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

Info

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  

Info
titlepentahoReports & 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)

Info
titleImportant

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