diff --git a/META-INF/MANIFEST b/META-INF/MANIFEST index 26a89f8..fea7321 100644 --- a/META-INF/MANIFEST +++ b/META-INF/MANIFEST @@ -1,3 +1,3 @@ pullManifest-Version: 1.0 Built-By: kamiljarmusik -Installer Version: 1.5.0 \ No newline at end of file +Installer Version: 1.6.0 \ No newline at end of file diff --git a/README.md b/README.md index eb239bf..210fade 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,13 @@ # 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. @@ -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 @@ -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 @@ -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 @@ -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: @@ -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 ```` diff --git a/java/java_install.sh b/java/java_install.sh index f23804c..5a6d27a 100755 --- a/java/java_install.sh +++ b/java/java_install.sh @@ -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"; @@ -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 @@ -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; diff --git a/mysql/mysql.properties b/mysql/mysql.properties new file mode 100644 index 0000000..398fb9f --- /dev/null +++ b/mysql/mysql.properties @@ -0,0 +1,6 @@ +mysql.host=localhost +mysql.port=3306 +mysql.database=scadalts +mysql.username=root +mysql.password=root +mysql.password-root=root \ No newline at end of file diff --git a/mysql/mysql_install.sh b/mysql/mysql_install.sh index 8506542..6a9dc1a 100755 --- a/mysql/mysql_install.sh +++ b/mysql/mysql_install.sh @@ -5,17 +5,18 @@ 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=""; @@ -23,6 +24,7 @@ MYSQL_DATABASE="" MYSQL_USERNAME=""; MYSQL_PASSWORD=""; MYSQL_ROOT_PASSWORD=""; +USE_DEFAULT_CONFIGURATION=""; MACHINE_TYPE=$(uname -m); @@ -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"; @@ -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 @@ -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}" @@ -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: "; @@ -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 @@ -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 \ No newline at end of file diff --git a/mysql/replace-1.0.jar b/mysql/replace-1.0.jar old mode 100755 new mode 100644 index 52fab29..0c550ef Binary files a/mysql/replace-1.0.jar and b/mysql/replace-1.0.jar differ diff --git a/mysql_start.sh b/mysql_start.sh index 22870bd..6c87f3a 100755 --- a/mysql_start.sh +++ b/mysql_start.sh @@ -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 @@ -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; diff --git a/tomcat/replace-1.0.jar b/tomcat/replace-1.0.jar old mode 100755 new mode 100644 index 52fab29..0c550ef Binary files a/tomcat/replace-1.0.jar and b/tomcat/replace-1.0.jar differ diff --git a/tomcat/tomcat.properties b/tomcat/tomcat.properties new file mode 100644 index 0000000..bc4bcfa --- /dev/null +++ b/tomcat/tomcat.properties @@ -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 \ No newline at end of file diff --git a/tomcat/tomcat_config.sh b/tomcat/tomcat_config.sh index 79601f9..191c704 100755 --- a/tomcat/tomcat_config.sh +++ b/tomcat/tomcat_config.sh @@ -3,6 +3,10 @@ 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}/tomcat.properties}"; + +. ./utils/read_property.sh; echo "${JAVA_HOME}"; @@ -20,11 +24,13 @@ 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])$"; @@ -36,6 +42,29 @@ 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 "${CONFIG_FILE}" "tomcat.port"); + CATALINA_USERNAME=$(read_property "${CONFIG_FILE}" "tomcat.username"); + CATALINA_PASSWORD=$(read_property "${CONFIG_FILE}" "tomcat.password"); + DATABASE_PORT=$(read_property "${CONFIG_FILE}" "tomcat.database.port"); + DATABASE_HOSTNAME=$(read_property "${CONFIG_FILE}" "tomcat.database.host"); + DATABASE_NAME=$(read_property "${CONFIG_FILE}" "tomcat.database.name"); + DATABASE_USERNAME=$(read_property "${CONFIG_FILE}" "tomcat.database.username"); + DATABASE_PASSWORD=$(read_property "${CONFIG_FILE}" "tomcat.database.password"); + 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: "; @@ -80,7 +109,7 @@ do echo -n "[Apache Tomcat Server] Enter database username: "; read -r DATABASE_USERNAME; done -"${JAVA_HOME}"/bin/java -jar replace-1.0.jar -f -o "username=\"root\"" -n "username=\"${DATABASE_USERNAME}\"" -f "${CATALINA_CONTEXT_XML}"; +"${JAVA_HOME}"/bin/java -jar replace-1.0.jar -o "username=\"root\"" -n "username=\"${DATABASE_USERNAME}\"" -f "${CATALINA_CONTEXT_XML}"; while [ -z "${DATABASE_PASSWORD}" ] do @@ -89,4 +118,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"; \ No newline at end of file +echo "Tomcat version ${TOMCAT_VERSION} configured"; diff --git a/tomcat_start.sh b/tomcat_start.sh index 15bfa6b..1e15217 100755 --- a/tomcat_start.sh +++ b/tomcat_start.sh @@ -1,33 +1,36 @@ #!/bin/bash -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 TOMCAT_MAJOR_VERSION=9; TOMCAT_MINOR_VERSION=0; -TOMCAT_PATCH_VERSION=86; +TOMCAT_PATCH_VERSION=120; TOMCAT_VERSION="${TOMCAT_MAJOR_VERSION}.${TOMCAT_MINOR_VERSION}.${TOMCAT_PATCH_VERSION}"; -INSTALLER_HOME=$(dirname "$(realpath "$0")"); +INSTALLER_HOME="$(dirname "$(realpath "$0")")"; JAVA_BASE="${INSTALLER_HOME}/java"; CATALINA_BASE="${INSTALLER_HOME}/tomcat"; JDK_BASE="${JAVA_BASE}/jdk"; -export CATALINA_HOME="${CATALINA_BASE}/server"; +CATALINA_HOME="${CATALINA_BASE}/server"; -JAVA_BIN_DIR="$JAVA_HOME/bin"; -CATALINA_BIN_DIR="$CATALINA_HOME/bin"; +JAVA_BIN_DIR="${JAVA_HOME}/bin"; +CATALINA_BIN_DIR="${CATALINA_HOME}/bin"; -CATALINA_WEBAPPS="$CATALINA_HOME/webapps"; +CATALINA_WEBAPPS="${CATALINA_HOME}/webapps"; SCADA_LTS_HOME="${CATALINA_WEBAPPS}/Scada-LTS"; if [ ! -d "${JAVA_BIN_DIR}" ]; then - export JAVA_HOME=$("${JAVA_BASE}"/java_install.sh "${JAVA_BASE}" "${JAVA_VERSION}" "${JAVA_UPDATE}" "${JDK_BASE}"); + export JAVA_HOME=$("${JAVA_BASE}"/java_install.sh "${JAVA_BASE}" "${JAVA_MAJOR_VERSION}" "${JAVA_VERSION}" "${JAVA_UPDATE}" "${JDK_BASE}"); else export JAVA_HOME=$("${JAVA_BASE}"/get_java_home.sh "${JDK_BASE}"); fi if [ ! -d "${CATALINA_BIN_DIR}" ]; then - "$CATALINA_BASE"/tomcat_install.sh "$CATALINA_HOME" ${TOMCAT_MAJOR_VERSION} "${TOMCAT_VERSION}"; + "${CATALINA_BASE}"/tomcat_install.sh "${CATALINA_HOME}" "${TOMCAT_MAJOR_VERSION}" "${TOMCAT_VERSION}"; fi if [ ! -d "${CATALINA_BIN_DIR}" ]; then @@ -36,7 +39,7 @@ if [ ! -d "${CATALINA_BIN_DIR}" ]; then fi if [ ! -d "${SCADA_LTS_HOME}" ]; then - "$CATALINA_BASE"/tomcat_config.sh "$CATALINA_HOME" "${TOMCAT_VERSION}" "$JAVA_HOME"; + "${CATALINA_BASE}"/tomcat_config.sh "${CATALINA_HOME}" "${TOMCAT_VERSION}" "${JAVA_HOME}"; fi "$CATALINA_HOME"/bin/catalina.sh run; diff --git a/utils/read_property.sh b/utils/read_property.sh new file mode 100644 index 0000000..e83ebcf --- /dev/null +++ b/utils/read_property.sh @@ -0,0 +1,4 @@ +#!/bin/bash +read_property () { + grep "^$2=" "$1" | cut -d'=' -f2; +} \ No newline at end of file