Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion META-INF/MANIFEST
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
pullManifest-Version: 1.0
Built-By: kamiljarmusik
Installer Version: 1.5.0
Installer Version: 1.6.0
45 changes: 33 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
<img src="https://github.com/user-attachments/assets/d06d59a1-0162-4b22-993e-8f9a8d5b638c" width=30% height=30%>

# Installer Scada-LTS for linux
| Technology | Version | Description |
| :--- | :---: | --- |
| Java | 11.0.22+7 | Base programic language |
| Server MySQL CE | 8.0.36 | Database server for data persistence |
| Shell MySQL | 8.0.36 | Database client |
| Apache Tomcat | 9.0.86 | Application server |
| Ubuntu/Mint | >=18 | System |
| Technology | Version | Description |
| :--- |:----------:| --- |
| Java | 17.0.19+10 | Base programic language |
| Server MySQL CE | 8.0.46 | Database server for data persistence |
| Shell MySQL | 8.0.46 | Database client |
| Apache Tomcat | 9.0.120 | Application server |
| Ubuntu/Mint | >=18 | System |

## Instruction
The installer requires an internet connection. The first run will take longer due to the need to download and install MySQL 8.0 CE database server, MySQL 8.0 shell and JDK 11.
Expand All @@ -17,7 +17,28 @@ The installer requires an internet connection. The first run will take longer du

2. Go to location of downloaded installer and extract it.

3. Start first script by using terminal and typing `./mysql_start.sh` inside extracted folder.
3. Optional: adjust default configuration in `installer.properties` before the first run.
When the scripts ask `Use default configuration values? [Y/n]` and you answer `Y` or press Enter,
values from this file will be used. This makes it possible to prepare installer defaults for a
specific usage without editing shell scripts.

Available properties:
* `MYSQL_HOST`
* `MYSQL_PORT`
* `MYSQL_DATABASE`
* `MYSQL_USERNAME`
* `MYSQL_PASSWORD`
* `MYSQL_ROOT_PASSWORD`
* `TOMCAT_PORT`
* `TOMCAT_USERNAME`
* `TOMCAT_PASSWORD`
* `DATABASE_HOST`
* `DATABASE_PORT`
* `DATABASE_NAME`
* `DATABASE_USERNAME`
* `DATABASE_PASSWORD`

4. Start first script by using terminal and typing `./mysql_start.sh` inside extracted folder.

Script will ask for some basic information to make configuration run correctly. Below is an example of the data that can be entered:
* Port: 3306
Expand All @@ -28,7 +49,7 @@ The installer requires an internet connection. The first run will take longer du
After providing the information you should wait for the line confirming the correct setup of the database:
`~/linux-installer-1.2.0/mysql/server/bin/mysqld: ready for connections. Version: '8.0.x' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server - GPL.`

4. Start second terminal in the same folder and run `./tomcat_start.sh` script.
5. Start second terminal in the same folder and run `./tomcat_start.sh` script.

Similar to first script you will have to provide some information, example below:
* Enter port: 8080
Expand All @@ -40,7 +61,7 @@ The installer requires an internet connection. The first run will take longer du
* Enter database password: root

After that you should be able to access Scada-LTS via web browser by typing in search bar `localhost:8080/Scada-LTS`
5. If there is a problem with permissions:
6. If there is a problem with permissions:

````
-bash: ./mysql_start.sh: Permission denied
Expand All @@ -55,7 +76,7 @@ chmod +x Scada-LTS_vx.x.x.x_Installer_vx.x.x_Setup/*.sh
chmod +x Scada-LTS_vx.x.x.x_Installer_vx.x.x_Setup/**/*.jar
````

6. ❗ If there is MySQL error: `libaio.so.1: cannot open shared object file`
7. ❗ If there is MySQL error: `libaio.so.1: cannot open shared object file`

When starting MySQL, the following error may appear:

Expand Down Expand Up @@ -92,7 +113,7 @@ Use the path from the previous command and create a symbolic link:
sudo ln -s /lib/aarch64-linux-gnu/libaio.so.1t64 /lib/aarch64-linux-gnu/libaio.so.1
```

7. After restarting the system, we execute these two scripts similarly, in this order, first we start the installed database:
8. After restarting the system, we execute these two scripts similarly, in this order, first we start the installed database:
````
./mysql_start.sh
````
Expand Down
19 changes: 10 additions & 9 deletions java/java_install.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
#!/bin/bash
JAVA_BASE="$1";
JAVA_VERSION="$2";
JAVA_UPDATE="$3";
JDK_BASE="$4";
JAVA_MAJOR_VERSION="$2";
JAVA_VERSION="$3";
JAVA_UPDATE="$4";
JDK_BASE="$5";

JAVA_HOME=$("${JAVA_BASE}"/get_java_home.sh "${JDK_BASE}" | tail -n 1);
JAVA_BIN_DIR="${JAVA_HOME}/bin";
Expand All @@ -22,13 +23,13 @@ fi

if [ ${MACHINE_TYPE} == 'arm64' ]; then
echo "arm64 (Apple Silicon M1/M2/M3) machine detected";
JAVA_ARCH="OpenJDK11U-jdk_aarch64_mac_hotspot_";
JAVA_ARCH="OpenJDK${JAVA_MAJOR_VERSION}U-jdk_aarch64_mac_hotspot_";
elif [ ${MACHINE_TYPE} == 'aarch64' ]; then
echo "raspberry arm machine detected";
JAVA_ARCH="OpenJDK11U-jdk_aarch64_linux_hotspot_";
JAVA_ARCH="OpenJDK${JAVA_MAJOR_VERSION}U-jdk_aarch64_linux_hotspot_";
elif [ "${MACHINE_TYPE}" == 'x86_64' ] || [ "${MACHINE_TYPE}" == 'x64' ]; then
echo "64-bit machine detected";
JAVA_ARCH="OpenJDK11U-jdk_x64_linux_hotspot_";
echo "64-bit machine detected"
JAVA_ARCH="OpenJDK${JAVA_MAJOR_VERSION}U-jdk_x64_linux_hotspot_";
else
echo "x86 architecture, 32-bit is not supported";
fi
Expand All @@ -37,8 +38,8 @@ if [ ! -d "${JAVA_BIN_DIR}" ] && [ ! -z ${JAVA_ARCH} ]; then
JDK_TAR_GZ_FILE=${JAVA_ARCH}${JAVA_FULL_VERSION}".tar.gz";
mkdir -p "${JDK_BASE}";
cd "${JDK_BASE}";
if [ ! -f "$JDK_TAR_GZ_FILE" ]; then
wget https://github.com/adoptium/temurin11-binaries/releases/download/jdk-"${JAVA_VERSION_ENCODED}"/"${JDK_TAR_GZ_FILE}";
if [ ! -f "${JDK_TAR_GZ_FILE}" ]; then
wget https://github.com/adoptium/temurin${JAVA_MAJOR_VERSION}-binaries/releases/download/jdk-"${JAVA_VERSION_ENCODED}"/"${JDK_TAR_GZ_FILE}";
if [ $? -ne 0 ]; then
echo "Download ${JDK_TAR_GZ_FILE} failed then JDK version ${JAVA_FULL_VERSION} installation stop";
exit 1;
Expand Down
6 changes: 6 additions & 0 deletions mysql/mysql.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
mysql.host=localhost
mysql.port=3306
mysql.database=scadalts
mysql.username=root
mysql.password=root
mysql.password-root=root
77 changes: 51 additions & 26 deletions mysql/mysql_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,26 @@ MYSQL_PATCH_VERSION=$3;
JAVA_HOME=$4;

MYSQL_VERSION="${MYSQL_MAJOR_VERSION}.${MYSQL_MINOR_VERSION}.${MYSQL_PATCH_VERSION}";
MYSQL_INSTALLER_HOME=$(dirname "$(realpath "$0")");
export MYSQL_HOME="${MYSQL_INSTALLER_HOME}/server";
export SHELL_HOME="${MYSQL_INSTALLER_HOME}/client";
export DATADIR="$MYSQL_HOME/data";
MYSQL_INSTALLER_HOME="$(dirname "$(realpath "$0")")";
CONFIG_FILE="${INSTALLER_CONFIG:-${MYSQL_INSTALLER_HOME}/mysql.properties}";
MYSQL_HOME="${MYSQL_INSTALLER_HOME}/server";
SHELL_HOME="${MYSQL_INSTALLER_HOME}/client";
DATADIR="${MYSQL_HOME}/data";

INIT_SCHEMA="${MYSQL_INSTALLER_HOME}/scadalts.sql";
COPIED_INIT_SCHEMA="$MYSQL_HOME/scadalts.sql";
COPIED_INIT_SCHEMA="${MYSQL_HOME}/scadalts.sql";
MY_CNF="${MYSQL_INSTALLER_HOME}/my.cnf";
COPIED_MY_CNF="$MYSQL_HOME/my.cnf";
SERVER_BIN_DIR="$MYSQL_HOME/bin";
CLIENT_BIN_DIR="$SHELL_HOME/bin";
COPIED_MY_CNF="${MYSQL_HOME}/my.cnf";
SERVER_BIN_DIR="${MYSQL_HOME}/bin";
CLIENT_BIN_DIR="${SHELL_HOME}/bin";

MYSQL_PORT=-1;
MYSQL_HOST="";
MYSQL_DATABASE=""
MYSQL_USERNAME="";
MYSQL_PASSWORD="";
MYSQL_ROOT_PASSWORD="";
USE_DEFAULT_CONFIGURATION="";

MACHINE_TYPE=$(uname -m);

Expand All @@ -33,6 +35,8 @@ PORT_REGEX='^((6553[0-5])|(655[0-2][0-9])|(65[0-4][0-9]{2})|(6[0-4][0-9]{3})|([1
HOSTNAME_REGEX="^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$|^(localhost)|^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)+([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$";
USERNAME_REGEX='^[a-zA-Z0-9_-]+$';

. ./utils/read_property.sh;

if ! command -v wget &> /dev/null
then
echo "wget could not be found then MySQL Community Server version ${MYSQL_VERSION} installation stop";
Expand All @@ -48,7 +52,7 @@ elif [ "${MACHINE_TYPE}" == 'aarch64' ]; then
elif [ "${MACHINE_TYPE}" == 'x86_64' ] || [ "${MACHINE_TYPE}" == 'x64' ]; then
echo "64-bit machine detected";
SERVER_MYSQL_DEST="mysql-${MYSQL_VERSION}-linux-glibc2.17-x86_64-minimal";
SHELL_MYSQL_DEST="mysql-shell-${MYSQL_VERSION}-linux-glibc2.12-x86-64bit";
SHELL_MYSQL_DEST="mysql-shell-${MYSQL_VERSION}-linux-glibc2.17-x86-64bit";
else
echo "x86 32-bit architecture is not supported";
fi
Expand All @@ -63,19 +67,19 @@ if [ ! -d "${SERVER_BIN_DIR}" ] && [ ! -z "${SERVER_MYSQL_DEST}" ]; then
else
SERVER_MSQL_TAR_XZ_FILE="${SERVER_MYSQL_DEST}.tar.xz";
fi
mkdir -p "$MYSQL_HOME";
cd "$MYSQL_HOME";
if [ ! -f "$SERVER_MSQL_TAR_FILE" ]; then
mkdir -p "${MYSQL_HOME}";
cd "${MYSQL_HOME}";
if [ ! -f "${SERVER_MSQL_TAR_FILE}" ]; then
wget "https://dev.mysql.com/get/Downloads/MySQL-${MYSQL_MAJOR_VERSION}.${MYSQL_MINOR_VERSION}/${SERVER_MSQL_TAR_FILE}";
if [ $? -ne 0 ]; then
echo "Download ${SERVER_MSQL_TAR_FILE} failed then MySQL Community Server version ${MYSQL_VERSION} installation stop";
exit 1;
fi
fi
tar -xvf "${SERVER_MSQL_TAR_FILE}" -C "$MYSQL_HOME";
tar -xvf "${SERVER_MSQL_TAR_XZ_FILE}" -C "$MYSQL_HOME";
cd "$MYSQL_HOME/${SERVER_MYSQL_DEST}";
mv -f * "$MYSQL_HOME";
tar -xvf "${SERVER_MSQL_TAR_FILE}" -C "${MYSQL_HOME}";
tar -xvf "${SERVER_MSQL_TAR_XZ_FILE}" -C "${MYSQL_HOME}";
cd "${MYSQL_HOME}/${SERVER_MYSQL_DEST}";
mv -f * "${MYSQL_HOME}";
cd ..;
rm -rf "${SERVER_MYSQL_DEST}";
#rm -f "${SERVER_MSQL_TAR_FILE}"
Expand All @@ -90,6 +94,27 @@ if [ ! -d "${SERVER_BIN_DIR}" ] && [ ! -z "${SERVER_MYSQL_DEST}" ]; then
cp -a "${MY_CNF}" "${COPIED_MY_CNF}";
cp -a "${INIT_SCHEMA}" "${COPIED_INIT_SCHEMA}";

while [ -z "${USE_DEFAULT_CONFIGURATION}" ]
do
echo -n "[MySQL Community Server] Use default configuration values? [Y/n]: ";
read -r USE_DEFAULT_CONFIGURATION;

if [ -z "${USE_DEFAULT_CONFIGURATION}" ] || [ "${USE_DEFAULT_CONFIGURATION}" = "Y" ] || [ "${USE_DEFAULT_CONFIGURATION}" = "y" ]; then
USE_DEFAULT_CONFIGURATION="Y";
MYSQL_HOST=$(read_property "${CONFIG_FILE}" "mysql.host");
MYSQL_PORT=$(read_property "${CONFIG_FILE}" "mysql.port");
MYSQL_DATABASE=$(read_property "${CONFIG_FILE}" "mysql.database");
MYSQL_USERNAME=$(read_property "${CONFIG_FILE}" "mysql.username");
MYSQL_PASSWORD=$(read_property "${CONFIG_FILE}" "mysql.password");
MYSQL_ROOT_PASSWORD=$(read_property "${CONFIG_FILE}" "mysql.password-root");
elif [ "${USE_DEFAULT_CONFIGURATION}" = "N" ] || [ "${USE_DEFAULT_CONFIGURATION}" = "n" ]; then
USE_DEFAULT_CONFIGURATION="N";
else
USE_DEFAULT_CONFIGURATION="";
echo "[MySQL Community Server] Please answer Y or n.";
fi
done

while [ -z "${MYSQL_HOST}" ] || ! [[ ${MYSQL_HOST} =~ ${HOSTNAME_REGEX} ]]
do
echo -n "[MySQL Community Server] Enter hostname: ";
Expand All @@ -102,7 +127,7 @@ if [ ! -d "${SERVER_BIN_DIR}" ] && [ ! -z "${SERVER_MYSQL_DEST}" ]; then
read -r MYSQL_PORT;
done
echo "port = ${MYSQL_PORT}" >> "${COPIED_MY_CNF}";
echo "mysqlx_port = 3${MYSQL_PORT}" >> "${COPIED_MY_CNF}";
echo "mysqlx_port = 1${MYSQL_PORT}" >> "${COPIED_MY_CNF}";

while [ -z "${MYSQL_DATABASE}" ]
do
Expand Down Expand Up @@ -138,23 +163,23 @@ if [ ! -d "${CLIENT_BIN_DIR}" ] && [ ! -z "${SHELL_MYSQL_DEST}" ]; then

SHELL_MYSQL_TAR_GZ_FILE="${SHELL_MYSQL_DEST}.tar.gz";

mkdir -p "$SHELL_HOME";
cd "$SHELL_HOME";
if [ ! -f "$SHELL_MYSQL_TAR_GZ_FILE" ]; then
mkdir -p "${SHELL_HOME}";
cd "${SHELL_HOME}";
if [ ! -f "${SHELL_MYSQL_TAR_GZ_FILE}" ]; then
wget "https://dev.mysql.com/get/Downloads/MySQL-Shell/${SHELL_MYSQL_TAR_GZ_FILE}";
fi
tar -xf "${SHELL_MYSQL_TAR_GZ_FILE}" -C "$SHELL_HOME";
cd "$SHELL_HOME/${SHELL_MYSQL_DEST}";
mv * "$SHELL_HOME";
tar -xf "${SHELL_MYSQL_TAR_GZ_FILE}" -C "${SHELL_HOME}";
cd "${SHELL_HOME}/${SHELL_MYSQL_DEST}";
mv * "${SHELL_HOME}";
cd ..;
rm -rf "${SHELL_MYSQL_DEST}";
#rm -f "${SHELL_MYSQL_TAR_GZ_FILE}"
echo "MySQL Shell version ${MYSQL_VERSION} installed";
fi

if [ -d "${SERVER_BIN_DIR}" ] && [ ! -d "$DATADIR" ]; then
mkdir -p "$DATADIR";
if [ -d "${SERVER_BIN_DIR}" ] && [ ! -d "${DATADIR}" ]; then
mkdir -p "${DATADIR}";
cd "${SERVER_BIN_DIR}";
./mysqld --defaults-file="$MYSQL_HOME/my.cnf" --initialize-insecure --datadir "$DATADIR" --user="${MYSQL_USERNAME}" --init-file="${COPIED_INIT_SCHEMA}" --console;
./mysqld --defaults-file="${MYSQL_HOME}/my.cnf" --initialize-insecure --datadir "${DATADIR}" --user="${MYSQL_USERNAME}" --init-file="${COPIED_INIT_SCHEMA}" --console;
echo "MySQL Community Server version ${MYSQL_VERSION} configured";
fi
Binary file modified mysql/replace-1.0.jar
100755 → 100644
Binary file not shown.
30 changes: 17 additions & 13 deletions mysql_start.sh
Original file line number Diff line number Diff line change
@@ -1,29 +1,33 @@
#!/bin/bash
MYSQL_MAJOR_VERSION=8;
MYSQL_MINOR_VERSION=0;
MYSQL_PATCH_VERSION=36;
MYSQL_PATCH_VERSION=46;

INSTALLER_HOME=$(dirname "$(realpath "$0")");
INSTALLER_HOME="$(dirname "$(realpath "$0")")";
MYSQL_BASE="${INSTALLER_HOME}/mysql";

export MYSQL_HOME="${MYSQL_BASE}/server";
export DATADIR="$MYSQL_HOME/data";
MY_CNF="$MYSQL_HOME/my.cnf";
BINDIR="$MYSQL_HOME/bin";
MYSQL_HOME="${MYSQL_BASE}/server";
DATADIR="${MYSQL_HOME}/data";
MY_CNF="${MYSQL_HOME}/my.cnf";
BINDIR="${MYSQL_HOME}/bin";

MYSQLD_PID="$DATADIR/mysqld.pid";
MYSQLD_PID="${DATADIR}/mysqld.pid";

#Java
JAVA_VERSION="11.0.22";
JAVA_UPDATE=7;
JAVA_MAJOR_VERSION=17
JAVA_MINOR_VERSION=0
JAVA_PATCH_VERSION=19
JAVA_VERSION="${JAVA_MAJOR_VERSION}.${JAVA_MINOR_VERSION}.${JAVA_PATCH_VERSION}"
JAVA_UPDATE=10

INSTALLER_HOME=$(dirname "$(realpath "$0")");
JAVA_BASE="${INSTALLER_HOME}/java";
JDK_BASE="${JAVA_BASE}/jdk";
JAVA_HOME=$("${JAVA_BASE}"/java_install.sh "${JAVA_BASE}" "${JAVA_VERSION}" "${JAVA_UPDATE}" "${JDK_BASE}" | tail -n 1);
JAVA_HOME=$("${JAVA_BASE}"/java_install.sh "${JAVA_BASE}" "${JAVA_MAJOR_VERSION}" "${JAVA_VERSION}" "${JAVA_UPDATE}" "${JDK_BASE}" | tail -n 1);

echo "JAVA_HOME: ${JAVA_HOME}"

if [ ! -d "${BINDIR}" ]; then
"${MYSQL_BASE}"/mysql_install.sh ${MYSQL_MAJOR_VERSION} ${MYSQL_MINOR_VERSION} ${MYSQL_PATCH_VERSION} ${JAVA_HOME};
"${MYSQL_BASE}"/mysql_install.sh "${MYSQL_MAJOR_VERSION}" "${MYSQL_MINOR_VERSION}" "${MYSQL_PATCH_VERSION}" "${JAVA_HOME}";
fi

if [ ! -d "${BINDIR}" ]; then
Expand All @@ -32,4 +36,4 @@ if [ ! -d "${BINDIR}" ]; then
fi

cd "${BINDIR}";
./mysqld --defaults-file="${MY_CNF}" --datadir "$DATADIR" --console;
./mysqld --defaults-file="${MY_CNF}" --datadir "${DATADIR}" --console;
Binary file modified tomcat/replace-1.0.jar
100755 → 100644
Binary file not shown.
8 changes: 8 additions & 0 deletions tomcat/tomcat.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
tomcat.port=8080
tomcat.username=tcuser
tomcat.password=tcuser
tomcat.database.host=localhost
tomcat.database.port=3306
tomcat.database.name=scadalts
tomcat.database.username=root
tomcat.database.password=root
Loading