Skip to content

Getting started Development ‐ Linux

Kamil Jarmusik edited this page Aug 11, 2023 · 16 revisions

Table of contents

1. Scada-LTS Installation using standalone installer

2. Database

3. IntelliJ

4. Docker compose

5. Tips for developers

6. SeroUtils library license

Current technology stack table:

Technology Version Description
Java 11 Base programic language
Gradle 7.1 Tool for building the application
Tomcat 9.0.75 Servlet server for application
MySQL Server 8.0.33 Database server for data persistence
MySQL Client DBeaver 23.1.2
or newer
Database client
Node.js 14.20.1 JavaScript runtime for New UI
Git 2.17.1 Version control for source code
Linux Ubuntu-based Operating system

1. Scada-LTS Installation using installer ↑↑↑

Go to https://github.com/SCADA-LTS/linux-installer and follow the instructions in the README.


Enviroment variables ↑↑↑

System - Configuration of enviroment variables

  1. You will have to add PATH for Java and Catalina in ~/.bashrc file using any available text editor e.g.:

    nano ~/.bashrc

    or

    vim ~/.bashrc
  2. On the bottom of this text file add two lines from below:

    export CATALINA_HOME="/absolute_path_to_installer/linux-installer-1.2.0/tomcat64/server"
    export JAVA_HOME="/absolute_path_to_installer/linux-installer-1.2.0/java/jdk"

  3. After all that type in terminal:

    source ~/.bashrc

    This will reload Enviroment variables.


jSerialComm - Configuration ↑↑↑

More information about jSerialComm: https://fazecast.github.io/jSerialComm/

However, on linux system configuration is necessary as long as we are not running on root:

sudo usermod -a -G uucp username
sudo usermod -a -G dialout username
sudo usermod -a -G lock username
sudo usermod -a -G tty username

2. Database ↑↑↑

MySQL Client ↑↑↑

DBeaver - Installation ↑↑↑

    Download Linux DBeaver Installer, run it and wait for it to finish. To launch it type dbeaver in console.

DBeaver - Configuration ↑↑↑

NOTE: Before configurating DBeaver make sure that your MySQL Server is turned on.

  1. In top left corner of DBeaver window click on image icon to add "New database connection".

image

  1. Select MySQL and press 'Next' button.
  1. Set port 3308 and click on 'Finish'. If the drivers have not been installed before, the program will suggest downloading and installing, click ok:
  1. If you have set password for root, you have to enable allowPublicKeyRetrieval in Connection Settings window in Driver properties tab.
  1. Press Test connection button on the bottom left corner of the window. If everything is set up correctly the following window should pop up.
image

3. IntelliJ ↑↑↑

  1. Download desired version of IntelliJ here.

  2. Put it in freshly made folder and extract it.

  3. Install git with command below:

    sudo apt-get install git-all

    You can confirm if git setup finished correctly by running git version in terminal.

  4. Go inside extracted folder, then to bin folder and run ./idea.sh script.

  5. Intellij is set up and ready to use.


Node.js ↑↑↑

  1. You can check if you have any nvm or node.js installed on your PC using these commands:
     nvm --version  
     node --version
  2. You will need nvm which is Node Version Manager. You can install it running this command in terminal:
     curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
  3. You can check if nvm has installed correctly by typing:
     nvm --verison
  4. When everything went succesfull we can install chosen version of Node.js with command below:
     nvm install v14.20.1
  5. To make sure that correct version of node is installed type:
     node --version

    NOTE: If you want to uninstall node or change version of it, you have to use nvm from now on.


4. Docker Compose ↑↑↑

To check if you have any version of docker installed, run command from below in terminal.

dpkg -l | grep -i docker

Installing docker Compose ↑↑↑

  1. Start with commands below to update the apt package index:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
  1. Run these commands to add docker’s official GPG key:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
  1. Use command below to set up repository:
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. Install Docker engine and all necessary docker plugins.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. Install docker-compose itself with command below:
sudo apt install docker-compose
  1. Add non-admin user to docker group use command below:
sudo usermod -aG docker user_name

user_name is the username of user you want to be able to launch docker-compose.

Launching Docker Compose ↑↑↑

  1. Download docker-compose.yml file to desired folder.

  2. Go inside docker-compose.yml location using terminal and run:

docker-compose up database
  1. In second terminal and same location:
docker-compose up scadalts

NOTE: You have to wait for docker-compose up database to finish, otherwise errors may appear.

Uninstalling Docker Compose ↑↑↑

To uninstall all files related to docker use these two commands below:

sudo apt-get purge -y `dpkg-query -W -f='${binary:Package}\t' '*docker*'`
sudo apt-get autoremove -y --purge `dpkg-query -W -f='${binary:Package}\t' '*docker*'`

To delete all files that docker created e.g. groups, sockets etc. use commands below:

sudo rm -rf /var/lib/docker /etc/docker
sudo rm /etc/apparmor.d/docker
sudo groupdel docker
sudo rm -rf /var/run/docker.sock
sudo rm /etc/apt/keyrings/docker.gpg

If you deleted everything correctly command below should return nothing.

dpkg -l | grep -i docker

5. Tips for developers ↑↑↑

Building the application ↑↑↑

To build the application on your own environment you can use Gradle.We provide example scripts that can be used inside Scada-LTS project to perform specific operations. Commands with their explanations are listed below.

Gradle Tasks ↑↑↑

To run Gradle Task you have to use gradle version 7 or similar with Java version 11. It should also work on other versions but you have to change the targetVersion in build.gradle file.

Command Explanation
gradle war Build Scada-LTS war file
gradle run Launch Tomcat instance
gradle runDebug Launch Tomcat instance in debug mode, ability to plug debugger into the Tomcat port and use it
gradle buildRunDebugProd Build and start production version of Scada-LTS application
gradle buildRunDebugDev Build and start developer version of Scada-LTS application
gradle test Launch Backend Unit Tests
gradle scadalts-ui::testUi Launch Frontend Unit Tests

IntelliJ plugins ↑↑↑

Sonarlint

  1. In any IntelliJ project go to: File > Settings > Plugins and select Marketplace.

  2. In search bar type Sonarlint an press Install next to it.

  3. IntelliJ will ask you to restart it.

  4. After restart your plugin is set and ready to go.

6. SeroUtils library license ↑↑↑

Matthew Lohbihler [email protected] has granted us permission to use the SeroUtils.jar library for ScadaLTS team. ScadaLTS team can use the code seroUtils without limitation.

Fragement with the correspondence of Grzegorz Bylica and Matthew Lohbihler:

"(...) The good news is that you may hereby and without limitation use the seroUtils code as you like. (...)"