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
31 changes: 26 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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: 19 additions & 0 deletions installer.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Default installer configuration.
# Change these values before first run to adjust the generated MySQL and Tomcat configuration.

MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_DATABASE=scadalts
MYSQL_USERNAME=root
MYSQL_PASSWORD=root
MYSQL_ROOT_PASSWORD=root

TOMCAT_PORT=8080
TOMCAT_USERNAME=tcuser
TOMCAT_PASSWORD=tcuser

DATABASE_HOST=localhost
DATABASE_PORT=3306
DATABASE_NAME=scadalts
DATABASE_USERNAME=root
DATABASE_PASSWORD=root
41 changes: 41 additions & 0 deletions mysql/mysql_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ JAVA_HOME=$4;

MYSQL_VERSION="${MYSQL_MAJOR_VERSION}.${MYSQL_MINOR_VERSION}.${MYSQL_PATCH_VERSION}";
MYSQL_INSTALLER_HOME=$(dirname "$(realpath "$0")");
CONFIG_FILE="${INSTALLER_CONFIG:-${MYSQL_INSTALLER_HOME}/../installer.properties}";
export MYSQL_HOME="${MYSQL_INSTALLER_HOME}/server";
export SHELL_HOME="${MYSQL_INSTALLER_HOME}/client";
export DATADIR="$MYSQL_HOME/data";
Expand All @@ -23,6 +24,7 @@ MYSQL_DATABASE=""
MYSQL_USERNAME="";
MYSQL_PASSWORD="";
MYSQL_ROOT_PASSWORD="";
USE_DEFAULT_CONFIGURATION="";

MACHINE_TYPE=$(uname -m);

Expand All @@ -33,6 +35,24 @@ 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_-]+$';

read_property() {
local key="$1";
local default_value="$2";
local value="";

if [ -f "${CONFIG_FILE}" ]; then
value=$(grep -E "^[[:space:]]*${key}[[:space:]]*=" "${CONFIG_FILE}" | tail -n 1 | cut -d '=' -f 2-);
value="${value#"${value%%[![:space:]]*}"}";
value="${value%"${value##*[![:space:]]}"}";
fi

if [ -n "${value}" ]; then
printf '%s' "${value}";
else
printf '%s' "${default_value}";
fi
}

if ! command -v wget &> /dev/null
then
echo "wget could not be found then MySQL Community Server version ${MYSQL_VERSION} installation stop";
Expand Down Expand Up @@ -90,6 +110,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 "MYSQL_HOST" "localhost");
MYSQL_PORT=$(read_property "MYSQL_PORT" "3306");
MYSQL_DATABASE=$(read_property "MYSQL_DATABASE" "scadalts");
MYSQL_USERNAME=$(read_property "MYSQL_USERNAME" "root");
MYSQL_PASSWORD=$(read_property "MYSQL_PASSWORD" "root");
MYSQL_ROOT_PASSWORD=$(read_property "MYSQL_ROOT_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 Down
47 changes: 46 additions & 1 deletion tomcat/tomcat_config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ CATALINA_HOME="$1";
TOMCAT_VERSION="$2";
JAVA_HOME="$3";
CATALINA_BIN_DIR="${CATALINA_HOME}/bin";
TOMCAT_INSTALLER_HOME=$(dirname "$(realpath "$0")");
CONFIG_FILE="${INSTALLER_CONFIG:-${TOMCAT_INSTALLER_HOME}/../installer.properties}";

echo "${JAVA_HOME}";

Expand All @@ -20,22 +22,65 @@ CATALINA_CONTEXT_XML="${SCADA_LTS_HOME}/META-INF/context.xml";
CATALINA_PORT=-1;
CATALINA_USERNAME="";
CATALINA_PASSWORD="";
USE_DEFAULT_CONFIGURATION="";

DATABASE_PORT=-1;
DATABASE_USERNAME="";
DATABASE_PASSWORD="";
DATABASE_HOSTNAME="";
DATABASE_NAME="";

PORT_REGEX="^((6553[0-5])|(655[0-2][0-9])|(65[0-4][0-9]{2})|(6[0-4][0-9]{3})|([1-5][0-9]{4})|([0-5]{0,5})|([0-9]{1,4}))$";
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_-]+$";

read_property() {
local key="$1";
local default_value="$2";
local value="";

if [ -f "${CONFIG_FILE}" ]; then
value=$(grep -E "^[[:space:]]*${key}[[:space:]]*=" "${CONFIG_FILE}" | tail -n 1 | cut -d '=' -f 2-);
value="${value#"${value%%[![:space:]]*}"}";
value="${value%"${value##*[![:space:]]}"}";
fi

if [ -n "${value}" ]; then
printf '%s' "${value}";
else
printf '%s' "${default_value}";
fi
}

cd "${CATALINA_BASE}";
unzip -q "Scada-LTS.war" -d "${SCADA_LTS_HOME}";
cp -af context.xml "${CATALINA_CONTEXT_XML}";
cp -af "${CATALINA_BASE}"/lib/*.jar "${CATALINA_LIB}";
cp -a setenv.sh "${CATALINA_BIN_DIR}";

while [ -z "${USE_DEFAULT_CONFIGURATION}" ]
do
echo -n "[Apache Tomcat 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";
CATALINA_PORT=$(read_property "TOMCAT_PORT" "8080");
CATALINA_USERNAME=$(read_property "TOMCAT_USERNAME" "tcuser");
CATALINA_PASSWORD=$(read_property "TOMCAT_PASSWORD" "tcuser");
DATABASE_PORT=$(read_property "DATABASE_PORT" "3306");
DATABASE_HOSTNAME=$(read_property "DATABASE_HOST" "localhost");
DATABASE_NAME=$(read_property "DATABASE_NAME" "scadalts");
DATABASE_USERNAME=$(read_property "DATABASE_USERNAME" "root");
DATABASE_PASSWORD=$(read_property "DATABASE_PASSWORD" "root");
elif [ "${USE_DEFAULT_CONFIGURATION}" = "N" ] || [ "${USE_DEFAULT_CONFIGURATION}" = "n" ]; then
USE_DEFAULT_CONFIGURATION="N";
else
USE_DEFAULT_CONFIGURATION="";
echo "[Apache Tomcat Server] Please answer Y or n.";
fi
done

while [ ${CATALINA_PORT} -eq -1 ] || ! [[ ${CATALINA_PORT} =~ ${PORT_REGEX} ]]
do
echo -n "[Apache Tomcat Server] Enter port: ";
Expand Down Expand Up @@ -89,4 +134,4 @@ do
done
"${JAVA_HOME}"/bin/java -jar replace-1.0.jar -f "${CATALINA_CONTEXT_XML}" -p ${DATABASE_PASSWORD};

echo "Tomcat version ${TOMCAT_VERSION} configured";
echo "Tomcat version ${TOMCAT_VERSION} configured";