Versions Compared

Key

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

Step 1 - Installing System Updates and Prerequisites:

Run all below mentioned scripts one by one on the ubuntu console & follow step by step instructions: - 

# sudo apt-get update

# sudo apt-get upgrade

Install Java 15.2: 

The latest version of Java OpenJDK on Ubuntu 18.04 is OpenJDK-11 this means we will have to install Java OpenJDK-15.0.2 using the tar.gz or the Debian Packages

# sudo apt update && sudo apt install default-jdk -y

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 the latest 
# java -version 

The output will look something like this:

openjdk version ">=1X.X.X" 2019-01-15
OpenJDK Runtime Environment (build 11.0.2+9-Ubuntu-3ubuntu118.04.3)
OpenJDK 64-Bit Server VM (build 11.0.2+9-Ubuntu-3ubuntu118.04.3, mixed mode, sharing)
the path to installation is run this ==>


...

Mifos X Ubuntu Server 18.04 Installation Guide:

Linux Server for Fineract Platform using Ubuntu Server 18.04,

Java-OpenJDK-15.2,

Tomcat server (v.9.048) 

MYSQL server (v.5.7). 



Mifos X Ubuntu Server 18.04 Installation Guide:

Linux Server for Fineract Platform using Ubuntu Server 18.04,

Java-OpenJDK-15.2,

Tomcat server (v.9.048) 

MYSQL server (v.5.7). 

Step 1 - Installing System Updates and Prerequisites:

Run all below mentioned scripts one by one on the ubuntu console & follow step by step instructions: - 

# sudo apt-get update

# sudo apt-get upgrade

Install Java 15.2: 

The latest version of Java OpenJDK on Ubuntu 18.04 is OpenJDK-11 this means we will have to install Java OpenJDK-15.0.2 using the tar.gz or the Debian Packages. In the steps below we will use the tar.gz procedure to install Java. First of all, visit the Oracle Archives page and download the Linux x64 Compressed Archive namely jdk-15.0.2_linux-x64_bin.tar.gz and once you are done follow th following steps https://www.oracle.com/java/technologies/javase/jdk15-archive-downloads.html 

sudo tar -zxvf jdk-15.0.2_linux-x64_bin.tar.gz 
sudo mv jdk-15.0.2  /usr/lib/jvm/ 

# sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-15.0.2/bin/java 2

# sudo update-alternatives --config java

Info
titlejava license agreement

if you have more than 1 versions of Java installed, when you run the last command above you should see a prompt to select the version of Java you want to make the default. Otherwise the commands will not return anything. if you have more than one the example below, you will see something like below 

There are 2 choices for the alternative java (providing /usr/bin/java).

Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
2 /usr/lib/jvm/jdk-15.0.2/bin/java 2 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2

In this case we have 3 and we have 0,1 & 2 ) type 2 and press enter

Next, Set the JAVA_HOME like so : 

# export JAVA_HOME=/usr/lib/jvm/jdk-15.0.2
# export PATH=$PATH:$JAVA_HOME/bin
Info
titlejava license agreement

Check you java version like so 

java -version

java version "15.0.2" 2021-01-19
Java(TM) SE Runtime Environment (build 15.0.2+7-27)
Java HotSpot(TM) 64-Bit Server VM (build 15.0.2+7-27, mixed mode, sharing)


Install mysql-server : 

# sudo apt update && sudo apt install mysql-server -y

...

Info
titlemysql password

Once the installation is completed, the MySQL service will start automatically. To check whether the MySQL server is running, type:

# sudo systemctl status mysql

Configure the Port and binding address as shown below using sudo nano command
# sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Set the bind address as you wish for example 0.0.0.0 sets it to any IP address across the globe (Strongly not recommended)
By default it comes as 
bind-address 127.0.0.1  ( this a security feature in MySQL 5.7 and above )

Run the security script: for proper configurations 
# sudo mysql_secure_installation

Follow the prompts and configure you installation to the best of your interests

In order to use a password to connect to MySQL as root, you will need to switch its authentication method from auth_socket to mysql_native_password.
To do this, open up the MySQL prompt from your terminal:

# sudo mysql

Next, check which authentication method each of your MySQL user accounts use with the following command:

SELECT user,authentication_string,plugin,host FROM mysql.user;

Output should look like below 
+------------------+------------------------------+-----------------------+-----------+
| user | authentication_string        | plugin          |                 host |
+------------------+------------------------------+-----------------------+-----------+
| root |                                          | auth_socket           | localhost |

Set the password to "mysql"  Please note that this is Bad for security, but just to get all installed and instructions on how to change it will be provided later in this guide)

Setting password use the command below

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysql'; FLUSH PRIVILEGES;
Comfirm by runnig script below 

SELECT user,authentication_string,plugin,host FROM mysql.user;
Output should look like below 
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string                                                    | plugin                             | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |

 
Eexit sudo mysql and restart mysql service
exit
# sudo service mysql restart

On completion of java installation,one could verify the installed version by & should be 5.7 or above
# mysql --version


Install tomact : 

Info
titleNote

The latest tomcat release will change and the link below may become invalid. If wget fails, get the correct link by going to https://tomcat.apache.org/download-90.cgi and under the core section, selecting the link to the tar.gz file. Use it for wget below:-

...

# sudo apt-get install nano

OPTIONAL (date/time settings) 

Check date:

# date

and if needed update with

# dpkg-reconfigure tzdata 

Step 2 - Tomcat setup

Enabling SSL

...

Info
titleset 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 as tomcat.keystore


Updating server.xml configuration file

...

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

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">

<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<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/fineract_tenants"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="orgcom.drizzlemysql.jdbc.DrizzleDriverDriver"
url="jdbc:mysql:thin://localhost:3306/fineract_defaulttenants"
username="root"
password="mysql"
initialSize="3"
maxActive="15"
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.Http11NioProtocol"
port="443"
maxThreads="200"
scheme="https"
secure="true"
SSLEnabled="true"
keystoreFile="/usr/share/tomcat.keystore"
keystorePass="S1mpl3passw0rdmysql123"
clientAuth="false"
sslProtocol="TLS"
URIEncoding="UTF-8"
compression="force"
acceptCount="100"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
disableUploadTimeout="true"
maxHttpHeaderSize="8192"
compressableMimeType="text/html,text/xml,text/plain,text/javascript,text/css"/>

<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=".log"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>
</Server>

...

Download and extract Fineract platform:

Info

For latest build / released code you can download from or If wget/download fails, this link:- https://github.com/apache/fineract/releases )
Follow the instructions to build a war file here https://github.com/apache/fineract#instructions-to-build-a-war-file

Once you are done building your war copy it to the tomcat9/webapps folder

# sudo cp -r fineract-provider.war /usr/share/tomcat9/webapps 

...

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/tomcat9/.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/


and finally to start

sudo /etc/init.d/tomcat9 start

...

Code Block
languagetext
titleserver.xml
<Listener className="org.apache.catalina.core.JasperListener" /> 



OPTIONAL:
*in separate terminal you may watch your Mifos(logs) come to life like this: 

# sudo tail -f /usr/share/tomcat9/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
titleIt's Done!

Congratulations!

You could access Mifos X through any internet browser:- 

@ https://server ip address 

or if you are using server port number as 8443 then you could access it https://localhost:8443

With these credentials:-

username: mifos

password: password


Additional info:-

  • Platform application should be available @ https://[public DNS]/fineract-provider/api/v1/offices?tenantIdentifier=default&pretty=true
  • API docs should be available @ https://[public DNS]/api-docs/apiLive.htm



Info
titleNeed Help?

If you need help on the Mifos Installation, you could always reach our partners:-

https://mifos.org/directory/

Ex: https://mifos.org/directory/listing/intelligrow-consultancy-services-private-limited/

Welcome to Mifos community, If you are stuck with the Mifos Installation or need training or customization or need any help with respect to mifos please reach to us at:

Francis Guchie,
 francisguchie@gmail.com or info@guchietech.com 

+232 79 194407 / +256 700 252896

www.guchietech.com  

We would be happy to help you.

...