Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Rewrite Step 3 for better readability

...

What you need to have installedDebian/Ubuntu notesMac notes
Google ChromeGoogle Chrome On Ubuntu 16.06 LTSGoogle Chrome 
Ensure that you have Oracle Java SDK 8You can use this tutorial to do that.See this tutorial at mkyong.
You might have multiple Java versions
installed so make sure that Java 8 is used.
java -version # should display 
java version "1.8.0_XXX".


This tutorial teaches how to choose the correct Java version like this:

export JAVA_HOME=`/usr/libexec/java_home -d 64 -v "1.8*"`
launchctl setenv JAVA_HOME `/usr/libexec/java_home`

Install GitInstall git using This ArticleHere we use Homebrew approach (not the only package manager but one that is preferred on mac) 
  • Install homebrew to make life easier See how to instructions. 

  • on older macs, you may first need to  xcode-select --install
  • you can specify version "@version.number", without the "@" sign brew assumes the most recent stable release 
  • you can install all at same go: brew install git, maven, gradle, cassandra, npm, node

    brew install git
Install MySQL 5.7

You don't need to install MySQL if you just
want to run demo server
without persistence (Option A in Step 3).
Install MySQL 5.7 Using This Guide brew install mysql@5.7  
and to start the service: brew services start mysql@5.7 
Optional step: install Maven and ensure
that artifacts are stored in
$USER_HOME/.m2/repository
Install maven using mkyong brew install maven

Optional step: install Gradle

This step is optional as all the Fineract CN
applications package Gradle wrapper into
the project, run it: ./gradlew

Use sdkman to install Gradle 4.5brew install gradle

You need NoSQL database
Cassandra 3.11 running.

You don't need to have Cassandra
running if you just
want
to run demo server
without persistence (Option A in Step 3).

Alternative: If you have Docker installed you
have the option to not install Cassandra and
run it from inside a container like this:

docker run -p9042:9042 -p7199:7199 cassandra:3.11

Install cassandra 3.11 using this guide

brew install cassandra

brew services start cassandra

Node 6.10+ and NPM 3+Ensure you have Node 6.10.0+ and NPM 3+ installed.

brew install node

npm (node package manager for javascript) is another package manager, homebrew still treats it like a keg to be installed, instructions

Node packages npm i npm i 
Optional step: Install NginxInstall Nginx using this guide

...

Step 3: Orchestrate Microservices Using The Demo-server

Note: On average t the build  build will take at least 30 - 40 mins to complete when building on 8 (x86-64) dedicated cores, >=16 GB of memory and an SSD drive.Note : Given that MySQL's default port is 3306, if you're running Option A. and your mysqld's default port is 3306 (check using `netstat -plnt` ), then you should ensure that mysqld service is inactive by running `service mysql stop`. Else, you should use another default port for mysqld like 3307 say.

Prerequisites

cd into `integration-tests/fineract-cn-demo-server/build/libs/`.

You can read more information about demo server.

Running demo-server with or without persistence 

You can use key "demoserver.persistent" to run demo server in two separate modes:

  • Option A - without persistence. During startup the demo server starts internal relational (MariaDB) and No-SQL (Cassandra) databases which are teared down when demo server is stopped and all state is lost.
  • Option B - with persistence. You You will use Use Option A. OR Option B below to build the demo-server jar.Option A. You could run the demo-server using the microservice datastores such as fineract-cn-cassandra and fineract-cn-mariadb. directly your local data stores , i.e. locally-installed MySQL and Cassandra. The changes are saved between restarts of demo server.

You can look up starting the internal databases from the code.

Option A - run demo-server without persistance

If you don't add argument -Ddemoserver.persistent when starting demo-server then demo-server starts up internal MySQL and Cassandra databases. 

  • For internally launched database to be able to start accepting connections on MySQL default port 3306 you need to stop your local MySQL or make your locally installed MySQL listen to some other port (like 3307). You can check if MySQL is still listening on port 3306 using: `netstat -plnt`
  • Also you need to make sure Cassandra (or any other service) is not running locally and listening on port 9042.

Use the command  `java -jar -Ddemoserver.provision=true demo-server-0.1.0-BUILD-SNAPSHOT.jar`. 

OR

Option B - run demo-server with persistance

If you add -Ddemoserver.persistent=true argument when starting demo-server then demo-server doesn't launch databases internally and you need to run the databases locally yourself.

Make sure Cassandra and MySQL services are started using `service mysql start` and `service cassandra start`           Option B. You could run demo-server using your local data stores , i.e. locally-installed MySQL and Cassandra.

Note that your username and password of your locally-installed datastores - mysql and cassandra - will have to conform to the specifications in demo-server to work. You'll have to ensure MySQL's `root` user  user has password `mysql` and Cassandra's `cassandra` user has password `password` .

Tip : If you encounter an error where MySQL can't connect such as "org.mariadb.jdbc.internal.util.dao.QueryException: Could not connect to address=(host=localhost)(port=3306)(type=master) : Connection refused (Connection refused)", then ensure that bind-address = 127.0.0.1 in your /etc/mysql/mysql.conf.d/mysqld.cnf . 

Also, make sure Cassandra and MySQL services are started using `service mysql start` and `service cassandra start`.


Running for the first time - use "command I"

If you are running Fineract CN for the first time on your OS, use i) to command I to create MySQL and Cassandra local databases. 

i.) Command I: `java -Ddemoserver.provision=true -Ddemoserver.persistent=true -Dcustom.cassandra.contactPoints=127.0.0.1:9042 -Dcassandra.cluster.user=cassandra -Dcassandra.cluster.pwd=password -Dcustom.mariadb.host=localhost -Dcustom.mariadb.user=root -Dcustom.mariadb.password=mysql -jar demo-server-0.1.0-BUILD-SNAPSHOT.jar`

Feedback Note:   If the first run in i.) failed if running command I failed for any reason, delete any residual databases or keyspaces 'seshat' and/or 'playground' in MySQL and Cassandra, and start over i.)over with command I until it succeeds.


After i.) After command I runs to completion, You could verify that databases `playground` and `seshat` have indeed been created by logging into mysql's `root` user account and running `show databases;`.

Also, log into Cassandra's cassandra user account and type `describe keyspaces;` to ensure that `seshat` and `playground` 


If you have used i.) successfully used command I to run demo-server before, then use ii.)use command II HENCEFORTH which  which uses the local databases created in i.).

Tip : Also, if you experience an error related to insufficient memory  when running ii.), you might have to stop all java-related processes and run demo-server with the '"Xms2G -Xmx2G"  option OR just quickly restart your system altogether. 

by command I.

Running after initial run has been successful - use command II

Command II: `ii.) `java -Ddemoserver.persistent=true -Dcustom.cassandra.contactPoints=127.0.0.1:9042 -Dcassandra.cluster.user=cassandra -Dcassandra.cluster.pwd=password -Dcustom.mariadb.host=localhost -Dcustom.mariadb.user=root -Dcustom.mariadb.password=mysql -jar demo-server-0.1.0-BUILD-SNAPSHOT.jar`

Troubleshooting Step 3.

Tip : If you encounter an error where MySQL can't connect such as "org.mariadb.jdbc.internal.util.dao.QueryException: Could not connect to address=(host=localhost)(port=3306)(type=master) : Connection refused (Connection refused)", then ensure that bind-address = 127.0.0.1 in your /etc/mysql/mysql.conf.d/mysqld.cnf . 

Tip : Also, if you experience an error related to insufficient memory  when running command II, you might have to stop all java-related processes and run demo-server with the '"Xms2G -Xmx2G"  option OR just quickly restart your system altogether. 


How to verify demo server started up successfully


Tip: Be Tip:Be Patient While This Runs. When Your Logs Show Up; These  These endpoints below signifies the completion of the build. Only after this has occurred can you move to the next step

“INFO  o.e.jetty.server.AbstractConnector - StoppedServerConnector@1bdb0376{HTTP/1.1,[http/1.1]}


Identity Service: http://localhost:2021/identity/v1

Office Service: http://localhost:2023/office/v1

Customer Service: http://localhost:2024/customer/v1

Accounting Service: http://localhost:2025/accounting/v1

Portfolio Service: http://localhost:2026/portfolio/v1

Deposit Service: http://localhost:2027/deposit/v1

Teller Service: http://localhost:2028/teller/v1

Reporting Service: http://localhost:2029/reporting/v1

Cheque Service: http://localhost:2030/cheques/v1

Payroll Service: http://localhost:2031/payroll/v1

Group Service: http://localhost:2032/group/v1

Notification Service: http://localhost:2033/notification/v1

...