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
# sudo apt update && sudo apt install default-jdk -y
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 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 ==>
Install mysql-server :
# sudo apt update && sudo apt install mysql-server -y
mysql 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 :
Note
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 wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.48/bin/apache-tomcat-9.0.48.tar.gz
# sudo mv apache-tomcat-9.0.48.tar.gz /usr/share
# cd /usr/share
# sudo tar xvf apache-tomcat-9.0.48.tar.gz
# sudo rm -f apache-tomcat-9.0.48.tar.gz
# sudo mv apache-tomcat-9.0.48 tomcat9
# cd ~
Install nano - text editor
# 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
To enable tomcat SSL (https), generate and store a key:
# sudo keytool -genkey -keyalg RSA -keysize 2048 -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 as tomcat.keystore
Updating server.xml configuration file
It is located at /usr/share/tomcat9/conf/server.xml path
# sudo nano /usr/share/tomcat9/conf/server.xml
nano shortcut keys
copy and replace below content into it
<?xml version='1.0' encoding='utf-8'?> <GlobalNamingResources> <Resource <Service name="Catalina"> <Connector <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> |
Note:
If your any of the server port connections are using port number = 443, then you need to change your port number to 8443, in server.xml here:-
port="443" maxThreads="200" scheme="https" to port="8443" maxThreads="200" scheme="https"
Download drizzle jdbc connector
Place it under lib folder
# cd /usr/share/tomcat9/lib
# sudo wget https://repo1.maven.org/maven2/org/drizzle/jdbc/drizzle-jdbc/1.4/drizzle-jdbc-1.4.jar
Download mysql jdbc connector
Download it from https://dev.mysql.com/downloads/connector/j/,
# wget https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.49.tar.gz
Then unzip it
#tar -xvf mysql-connector-java-5.1.49.tar.gz
#rm -r mysql-connector-java-5.1.49.tar.gz
Then place the .jar in the /usr/share/tomcat9/lib folder.
#sudo mv mysql-connector-java-5.1.49/mysql-connector-java-5.1.49-bin.jar /usr/share/tomcat9/lib/
#sudo mv mysql-connector-java-5.1.49/mysql-connector-java-5.1.49.jar /usr/share/tomcat9/lib/
#rm -r mysql-connector-java-5.1.49
The filename above will vary depending on what the latest version of the connector is
Edit /etc/init.d/tomcat9
# sudo nano /etc/init.d/tomcat9
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/tomcat9
Link this script to the startup folders with a symbolic link.Execute these two commands.
# sudo ln -s /etc/init.d/tomcat9 /etc/rc1.d/K99tomcat
# sudo ln -s /etc/init.d/tomcat9 /etc/rc2.d/S99tomcat
Step 3 - Fineract Platform and Database Setup/Population
Download and extract Fineract platform:
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
Initialize MySQL data
# mysql -u root -p
Enter mysql root password, and in mysql console type:
create database `fineract_tenants`;
create database `fineract_default`;
exit
Step 4 - Activate Mifos using the latest build of the community-app (this is the user-interface)
Folllow the steps here https://github.com/openMF/community-app to build yourself one. Once you are done
Copy the community app into Tomcat's webapps folder:
# sudo cp fineract-provider.war /usr/share/tomcat9/webapps/
# sudo cp -r apps/community-app/ /usr/share/tomcat9/webapps/
# sudo cp -r api-docs/ /usr/share/tomcat9/webapps/
# cd /usr/share/tomcat9/webapps
# sudo mv ROOT OLDROOT
# sudo mv community-app ROOT
Create a directory for reports (pentahoReports): – This shall be updated soon in the meantime follow the events here https://github.com/openMF/fineract-pentaho
Follow the steps in https://github.com/openMF/fineract-pentaho#build--use and after building then
# sudo -i
# cd /root
# mkdir .mifosx
# cp build/run/pentahoReports/* ~/.mifosx/pentahoReports/
# rm -rf build/run/pentahoReports
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/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
Setup is complete and mifos should be running.
In case if it throws error ClassNotFoundException org.apache.catalina.core.JasperListener you need to remove the below line from server.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)
It'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
Need Help?
If you need help on the Mifos Installation, you could always reach our partners:-
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
We would be happy to help you.