From 92553eb83801ce76241bfb6cf62feb004252a045 Mon Sep 17 00:00:00 2001 From: Alexey Pustovalov Date: Thu, 10 Sep 2020 08:05:17 -0400 Subject: [PATCH 1/2] Use env variables in Zabbix web images --- .../alpine/conf/etc/php7/conf.d/99-zabbix.ini | 14 +- .../conf/etc/zabbix/web/zabbix.conf.php | 20 +-- web-apache-mysql/alpine/docker-entrypoint.sh | 104 +++------------ .../centos/conf/etc/php.d/99-zabbix.ini | 16 +-- .../conf/etc/zabbix/web/zabbix.conf.php | 20 +-- web-apache-mysql/centos/docker-entrypoint.sh | 104 +++------------ .../etc/php/7.2/apache2/conf.d/99-zabbix.ini | 17 ++- .../conf/etc/zabbix/web/zabbix.conf.php | 20 +-- web-apache-mysql/ubuntu/docker-entrypoint.sh | 108 +++------------ .../alpine/conf/etc/php7/conf.d/99-zabbix.ini | 14 +- .../conf/etc/zabbix/web/zabbix.conf.php | 20 +-- web-apache-pgsql/alpine/docker-entrypoint.sh | 104 +++------------ .../centos/conf/etc/php.d/99-zabbix.ini | 16 +-- .../conf/etc/zabbix/web/zabbix.conf.php | 20 +-- web-apache-pgsql/centos/docker-entrypoint.sh | 105 +++------------ .../etc/php/7.2/apache2/conf.d/99-zabbix.ini | 17 ++- .../conf/etc/zabbix/web/zabbix.conf.php | 20 +-- web-apache-pgsql/ubuntu/docker-entrypoint.sh | 109 +++------------ .../conf/etc/php7/php-fpm.d/zabbix.conf | 16 ++- .../conf/etc/zabbix/web/zabbix.conf.php | 20 +-- web-nginx-mysql/alpine/docker-entrypoint.sh | 119 +++-------------- .../centos/conf/etc/php-fpm.d/zabbix.conf | 16 ++- .../conf/etc/zabbix/web/zabbix.conf.php | 20 +-- web-nginx-mysql/centos/docker-entrypoint.sh | 119 +++-------------- .../conf/etc/php/7.2/fpm/pool.d/zabbix.conf | 16 ++- .../conf/etc/zabbix/web/zabbix.conf.php | 20 +-- web-nginx-mysql/ubuntu/docker-entrypoint.sh | 125 +++--------------- .../conf/etc/php7/php-fpm.d/zabbix.conf | 16 ++- .../conf/etc/zabbix/web/zabbix.conf.php | 20 +-- web-nginx-pgsql/alpine/docker-entrypoint.sh | 119 +++-------------- .../centos/conf/etc/php-fpm.d/zabbix.conf | 16 ++- .../conf/etc/zabbix/web/zabbix.conf.php | 20 +-- web-nginx-pgsql/centos/docker-entrypoint.sh | 121 +++-------------- .../conf/etc/php/7.2/fpm/pool.d/zabbix.conf | 16 ++- .../conf/etc/zabbix/web/zabbix.conf.php | 20 +-- web-nginx-pgsql/ubuntu/docker-entrypoint.sh | 123 +++-------------- 36 files changed, 414 insertions(+), 1376 deletions(-) diff --git a/web-apache-mysql/alpine/conf/etc/php7/conf.d/99-zabbix.ini b/web-apache-mysql/alpine/conf/etc/php7/conf.d/99-zabbix.ini index b060e4689..5dfff39cd 100644 --- a/web-apache-mysql/alpine/conf/etc/php7/conf.d/99-zabbix.ini +++ b/web-apache-mysql/alpine/conf/etc/php7/conf.d/99-zabbix.ini @@ -1,8 +1,8 @@ -max_execution_time=300 -memory_limit=128M -post_max_size=16M -upload_max_filesize=2M -max_input_time=300 +max_execution_time = ${ZBX_MAXEXECUTIONTIME} +memory_limit = ${ZBX_MEMORYLIMIT} +post_max_size = ${ZBX_POSTMAXSIZE} +upload_max_filesize = ${ZBX_UPLOADMAXFILESIZE} +max_input_time = ${ZBX_MAXINPUTTIME} ; always_populate_raw_post_data=-1 -max_input_vars=10000 -; date.timezone=Europe/Riga +max_input_vars = 10000 +date.timezone = ${PHP_TZ} diff --git a/web-apache-mysql/alpine/conf/etc/zabbix/web/zabbix.conf.php b/web-apache-mysql/alpine/conf/etc/zabbix/web/zabbix.conf.php index 6cbd68590..d6f2ad0c8 100644 --- a/web-apache-mysql/alpine/conf/etc/zabbix/web/zabbix.conf.php +++ b/web-apache-mysql/alpine/conf/etc/zabbix/web/zabbix.conf.php @@ -2,19 +2,19 @@ // Zabbix GUI configuration file. global $DB; -$DB['TYPE'] = 'MYSQL'; -$DB['SERVER'] = '{DB_SERVER_HOST}'; -$DB['PORT'] = '{DB_SERVER_PORT}'; -$DB['DATABASE'] = '{DB_SERVER_DBNAME}'; -$DB['USER'] = '{DB_SERVER_USER}'; -$DB['PASSWORD'] = '{DB_SERVER_PASS}'; +$DB['TYPE'] = getenv('DB_SERVER_TYPE'); +$DB['SERVER'] = getenv('DB_SERVER_HOST'); +$DB['PORT'] = getenv('DB_SERVER_PORT'); +$DB['DATABASE'] = getenv('DB_SERVER_DBNAME'); +$DB['USER'] = getenv('DB_SERVER_USER'); +$DB['PASSWORD'] = getenv('DB_SERVER_PASS'); // Schema name. Used for IBM DB2 and PostgreSQL. -$DB['SCHEMA'] = '{DB_SERVER_SCHEMA}'; +$DB['SCHEMA'] = getenv('DB_SERVER_SCHEMA'); -$ZBX_SERVER = '{ZBX_SERVER_HOST}'; -$ZBX_SERVER_PORT = '{ZBX_SERVER_PORT}'; -$ZBX_SERVER_NAME = '{ZBX_SERVER_NAME}'; +$ZBX_SERVER = getenv('ZBX_SERVER_HOST'); +$ZBX_SERVER_PORT = getenv('ZBX_SERVER_PORT'); +$ZBX_SERVER_NAME = getenv('ZBX_SERVER_NAME'); $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG; ?> diff --git a/web-apache-mysql/alpine/docker-entrypoint.sh b/web-apache-mysql/alpine/docker-entrypoint.sh index 2eadc7af9..26d2425be 100755 --- a/web-apache-mysql/alpine/docker-entrypoint.sh +++ b/web-apache-mysql/alpine/docker-entrypoint.sh @@ -57,67 +57,6 @@ file_env() { unset "$fileVar" } -escape_spec_char() { - local var_value=$1 - - var_value="${var_value//\\/\\\\}" - var_value="${var_value//[$'\n']/}" - var_value="${var_value//\//\\/}" - var_value="${var_value//./\\.}" - var_value="${var_value//\*/\\*}" - var_value="${var_value//^/\\^}" - var_value="${var_value//\$/\\\$}" - var_value="${var_value//\&/\\\&}" - var_value="${var_value//\[/\\[}" - var_value="${var_value//\]/\\]}" - - echo "$var_value" -} - -update_config_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - local is_multiple=$4 - - if [ ! -f "$config_path" ]; then - echo "**** Configuration file '$config_path' does not exist" - return - fi - - echo -n "** Updating '$config_path' parameter \"$var_name\": '$var_value'... " - - # Remove configuration parameter definition in case of unset parameter value - if [ -z "$var_value" ]; then - sed -i -e "/^$var_name=/d" "$config_path" - echo "removed" - return - fi - - # Remove value from configuration parameter in case of double quoted parameter value - if [ "$var_value" == '""' ]; then - sed -i -e "/^$var_name=/s/=.*/=/" "$config_path" - echo "undefined" - return - fi - - # Escaping characters in parameter value and name - var_value=$(escape_spec_char "$var_value") - var_name=$(escape_spec_char "$var_name") - - if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then - sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" - echo "updated" - elif [ "$(grep -Ec "^# $var_name=" $config_path)" -gt 1 ]; then - sed -i -e "/^[#;] $var_name=$/i\\$var_name=$var_value" "$config_path" - echo "added first occurrence" - else - sed -i -e "/^[#;] $var_name=/s/.*/&\n$var_name=$var_value/" "$config_path" - echo "added" - fi - -} - # Check prerequisites for MySQL database check_variables() { : ${DB_SERVER_HOST:="mysql-server"} @@ -205,36 +144,25 @@ prepare_web_server() { } prepare_zbx_web_config() { - local server_name="" - echo "** Preparing Zabbix frontend configuration file" - ZBX_WEB_CONFIG="$ZABBIX_ETC_DIR/web/zabbix.conf.php" - PHP_CONFIG_FILE="/etc/php7/conf.d/99-zabbix.ini" + export ZBX_MAXEXECUTIONTIME=${ZBX_MAXEXECUTIONTIME:-"600"} + export ZBX_MEMORYLIMIT=${ZBX_MEMORYLIMIT:-"128M"} + export ZBX_POSTMAXSIZE=${ZBX_POSTMAXSIZE:-"16M"} + export ZBX_UPLOADMAXFILESIZE=${ZBX_UPLOADMAXFILESIZE:-"2M"} + export ZBX_MAXINPUTTIME=${ZBX_MAXINPUTTIME:-"300"} + export PHP_TZ=${PHP_TZ:-"Europe/Riga"} - update_config_var "$PHP_CONFIG_FILE" "max_execution_time" "${ZBX_MAXEXECUTIONTIME:-"600"}" - update_config_var "$PHP_CONFIG_FILE" "memory_limit" "${ZBX_MEMORYLIMIT:-"128M"}" - update_config_var "$PHP_CONFIG_FILE" "post_max_size" "${ZBX_POSTMAXSIZE:-"16M"}" - update_config_var "$PHP_CONFIG_FILE" "upload_max_filesize" "${ZBX_UPLOADMAXFILESIZE:-"2M"}" - update_config_var "$PHP_CONFIG_FILE" "max_input_time" "${ZBX_MAXINPUTTIME:-"300"}" - update_config_var "$PHP_CONFIG_FILE" "date.timezone" "${PHP_TZ}" - - # Escaping characters in parameter value - server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") - server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") - server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") - - sed -i \ - -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ - -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ - -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_SCHEMA}/${DB_SERVER_SCHEMA}/g" \ - -e "s/{DB_SERVER_USER}/$server_user/g" \ - -e "s/{DB_SERVER_PASS}/$server_pass/g" \ - -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ - -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ - -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ - "$ZBX_WEB_CONFIG" + export DB_SERVER_TYPE="MYSQL" + export DB_SERVER_HOST=${DB_SERVER_HOST} + export DB_SERVER_PORT=${DB_SERVER_PORT} + export DB_SERVER_DBNAME=${DB_SERVER_DBNAME} + export DB_SERVER_SCHEMA=${DB_SERVER_SCHEMA} + export DB_SERVER_USER=${DB_SERVER_ZBX_USER} + export DB_SERVER_PASS=${DB_SERVER_ZBX_PASS} + export ZBX_SERVER_HOST=${ZBX_SERVER_HOST} + export ZBX_SERVER_PORT=${ZBX_SERVER_PORT:-"10051"} + export ZBX_SERVER_NAME=${ZBX_SERVER_NAME} if [ "${ENABLE_WEB_ACCESS_LOG:-"true"}" == "false" ]; then sed -ri \ diff --git a/web-apache-mysql/centos/conf/etc/php.d/99-zabbix.ini b/web-apache-mysql/centos/conf/etc/php.d/99-zabbix.ini index de8fc6904..5dfff39cd 100644 --- a/web-apache-mysql/centos/conf/etc/php.d/99-zabbix.ini +++ b/web-apache-mysql/centos/conf/etc/php.d/99-zabbix.ini @@ -1,8 +1,8 @@ -max_execution_time=300 -memory_limit=128M -post_max_size=16M -upload_max_filesize=2M -max_input_time=300 -always_populate_raw_post_data=-1 -max_input_vars=10000 -; date.timezone=Europe/Riga +max_execution_time = ${ZBX_MAXEXECUTIONTIME} +memory_limit = ${ZBX_MEMORYLIMIT} +post_max_size = ${ZBX_POSTMAXSIZE} +upload_max_filesize = ${ZBX_UPLOADMAXFILESIZE} +max_input_time = ${ZBX_MAXINPUTTIME} +; always_populate_raw_post_data=-1 +max_input_vars = 10000 +date.timezone = ${PHP_TZ} diff --git a/web-apache-mysql/centos/conf/etc/zabbix/web/zabbix.conf.php b/web-apache-mysql/centos/conf/etc/zabbix/web/zabbix.conf.php index 6cbd68590..d6f2ad0c8 100644 --- a/web-apache-mysql/centos/conf/etc/zabbix/web/zabbix.conf.php +++ b/web-apache-mysql/centos/conf/etc/zabbix/web/zabbix.conf.php @@ -2,19 +2,19 @@ // Zabbix GUI configuration file. global $DB; -$DB['TYPE'] = 'MYSQL'; -$DB['SERVER'] = '{DB_SERVER_HOST}'; -$DB['PORT'] = '{DB_SERVER_PORT}'; -$DB['DATABASE'] = '{DB_SERVER_DBNAME}'; -$DB['USER'] = '{DB_SERVER_USER}'; -$DB['PASSWORD'] = '{DB_SERVER_PASS}'; +$DB['TYPE'] = getenv('DB_SERVER_TYPE'); +$DB['SERVER'] = getenv('DB_SERVER_HOST'); +$DB['PORT'] = getenv('DB_SERVER_PORT'); +$DB['DATABASE'] = getenv('DB_SERVER_DBNAME'); +$DB['USER'] = getenv('DB_SERVER_USER'); +$DB['PASSWORD'] = getenv('DB_SERVER_PASS'); // Schema name. Used for IBM DB2 and PostgreSQL. -$DB['SCHEMA'] = '{DB_SERVER_SCHEMA}'; +$DB['SCHEMA'] = getenv('DB_SERVER_SCHEMA'); -$ZBX_SERVER = '{ZBX_SERVER_HOST}'; -$ZBX_SERVER_PORT = '{ZBX_SERVER_PORT}'; -$ZBX_SERVER_NAME = '{ZBX_SERVER_NAME}'; +$ZBX_SERVER = getenv('ZBX_SERVER_HOST'); +$ZBX_SERVER_PORT = getenv('ZBX_SERVER_PORT'); +$ZBX_SERVER_NAME = getenv('ZBX_SERVER_NAME'); $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG; ?> diff --git a/web-apache-mysql/centos/docker-entrypoint.sh b/web-apache-mysql/centos/docker-entrypoint.sh index e964c8b3d..57f27961f 100755 --- a/web-apache-mysql/centos/docker-entrypoint.sh +++ b/web-apache-mysql/centos/docker-entrypoint.sh @@ -57,67 +57,6 @@ file_env() { unset "$fileVar" } -escape_spec_char() { - local var_value=$1 - - var_value="${var_value//\\/\\\\}" - var_value="${var_value//[$'\n']/}" - var_value="${var_value//\//\\/}" - var_value="${var_value//./\\.}" - var_value="${var_value//\*/\\*}" - var_value="${var_value//^/\\^}" - var_value="${var_value//\$/\\\$}" - var_value="${var_value//\&/\\\&}" - var_value="${var_value//\[/\\[}" - var_value="${var_value//\]/\\]}" - - echo "$var_value" -} - -update_config_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - local is_multiple=$4 - - if [ ! -f "$config_path" ]; then - echo "**** Configuration file '$config_path' does not exist" - return - fi - - echo -n "** Updating '$config_path' parameter \"$var_name\": '$var_value'... " - - # Remove configuration parameter definition in case of unset parameter value - if [ -z "$var_value" ]; then - sed -i -e "/^$var_name=/d" "$config_path" - echo "removed" - return - fi - - # Remove value from configuration parameter in case of double quoted parameter value - if [ "$var_value" == '""' ]; then - sed -i -e "/^$var_name=/s/=.*/=/" "$config_path" - echo "undefined" - return - fi - - # Escaping characters in parameter value and name - var_value=$(escape_spec_char "$var_value") - var_name=$(escape_spec_char "$var_name") - - if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then - sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" - echo "updated" - elif [ "$(grep -Ec "^# $var_name=" $config_path)" -gt 1 ]; then - sed -i -e "/^[#;] $var_name=$/i\\$var_name=$var_value" "$config_path" - echo "added first occurrence" - else - sed -i -e "/^[#;] $var_name=/s/.*/&\n$var_name=$var_value/" "$config_path" - echo "added" - fi - -} - # Check prerequisites for MySQL database check_variables() { : ${DB_SERVER_HOST:="mysql-server"} @@ -205,36 +144,25 @@ prepare_web_server() { } prepare_zbx_web_config() { - local server_name="" - echo "** Preparing Zabbix frontend configuration file" - ZBX_WEB_CONFIG="$ZABBIX_ETC_DIR/web/zabbix.conf.php" - PHP_CONFIG_FILE="/etc/php.d/99-zabbix.ini" + export ZBX_MAXEXECUTIONTIME=${ZBX_MAXEXECUTIONTIME:-"600"} + export ZBX_MEMORYLIMIT=${ZBX_MEMORYLIMIT:-"128M"} + export ZBX_POSTMAXSIZE=${ZBX_POSTMAXSIZE:-"16M"} + export ZBX_UPLOADMAXFILESIZE=${ZBX_UPLOADMAXFILESIZE:-"2M"} + export ZBX_MAXINPUTTIME=${ZBX_MAXINPUTTIME:-"300"} + export PHP_TZ=${PHP_TZ:-"Europe/Riga"} - update_config_var "$PHP_CONFIG_FILE" "max_execution_time" "${ZBX_MAXEXECUTIONTIME:-"600"}" - update_config_var "$PHP_CONFIG_FILE" "memory_limit" "${ZBX_MEMORYLIMIT:-"128M"}" - update_config_var "$PHP_CONFIG_FILE" "post_max_size" "${ZBX_POSTMAXSIZE:-"16M"}" - update_config_var "$PHP_CONFIG_FILE" "upload_max_filesize" "${ZBX_UPLOADMAXFILESIZE:-"2M"}" - update_config_var "$PHP_CONFIG_FILE" "max_input_time" "${ZBX_MAXINPUTTIME:-"300"}" - update_config_var "$PHP_CONFIG_FILE" "date.timezone" "${PHP_TZ}" - - # Escaping characters in parameter value - server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") - server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") - server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") - - sed -i \ - -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ - -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ - -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_SCHEMA}/${DB_SERVER_SCHEMA}/g" \ - -e "s/{DB_SERVER_USER}/$server_user/g" \ - -e "s/{DB_SERVER_PASS}/$server_pass/g" \ - -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ - -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ - -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ - "$ZBX_WEB_CONFIG" + export DB_SERVER_TYPE="MYSQL" + export DB_SERVER_HOST=${DB_SERVER_HOST} + export DB_SERVER_PORT=${DB_SERVER_PORT} + export DB_SERVER_DBNAME=${DB_SERVER_DBNAME} + export DB_SERVER_SCHEMA=${DB_SERVER_SCHEMA} + export DB_SERVER_USER=${DB_SERVER_ZBX_USER} + export DB_SERVER_PASS=${DB_SERVER_ZBX_PASS} + export ZBX_SERVER_HOST=${ZBX_SERVER_HOST} + export ZBX_SERVER_PORT=${ZBX_SERVER_PORT:-"10051"} + export ZBX_SERVER_NAME=${ZBX_SERVER_NAME} if [ "${ENABLE_WEB_ACCESS_LOG:-"true"}" == "false" ]; then sed -ri \ diff --git a/web-apache-mysql/ubuntu/conf/etc/php/7.2/apache2/conf.d/99-zabbix.ini b/web-apache-mysql/ubuntu/conf/etc/php/7.2/apache2/conf.d/99-zabbix.ini index be93bd73a..5dfff39cd 100644 --- a/web-apache-mysql/ubuntu/conf/etc/php/7.2/apache2/conf.d/99-zabbix.ini +++ b/web-apache-mysql/ubuntu/conf/etc/php/7.2/apache2/conf.d/99-zabbix.ini @@ -1,9 +1,8 @@ -max_execution_time=300 -memory_limit=128M -post_max_size=16M -upload_max_filesize=2M -max_input_time=300 -always_populate_raw_post_date=-1 -max_input_vars=10000 -; date.timezone=Europe/Riga -;session.save_path=/var/lib/php/session +max_execution_time = ${ZBX_MAXEXECUTIONTIME} +memory_limit = ${ZBX_MEMORYLIMIT} +post_max_size = ${ZBX_POSTMAXSIZE} +upload_max_filesize = ${ZBX_UPLOADMAXFILESIZE} +max_input_time = ${ZBX_MAXINPUTTIME} +; always_populate_raw_post_data=-1 +max_input_vars = 10000 +date.timezone = ${PHP_TZ} diff --git a/web-apache-mysql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php b/web-apache-mysql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php index 6cbd68590..d6f2ad0c8 100644 --- a/web-apache-mysql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php +++ b/web-apache-mysql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php @@ -2,19 +2,19 @@ // Zabbix GUI configuration file. global $DB; -$DB['TYPE'] = 'MYSQL'; -$DB['SERVER'] = '{DB_SERVER_HOST}'; -$DB['PORT'] = '{DB_SERVER_PORT}'; -$DB['DATABASE'] = '{DB_SERVER_DBNAME}'; -$DB['USER'] = '{DB_SERVER_USER}'; -$DB['PASSWORD'] = '{DB_SERVER_PASS}'; +$DB['TYPE'] = getenv('DB_SERVER_TYPE'); +$DB['SERVER'] = getenv('DB_SERVER_HOST'); +$DB['PORT'] = getenv('DB_SERVER_PORT'); +$DB['DATABASE'] = getenv('DB_SERVER_DBNAME'); +$DB['USER'] = getenv('DB_SERVER_USER'); +$DB['PASSWORD'] = getenv('DB_SERVER_PASS'); // Schema name. Used for IBM DB2 and PostgreSQL. -$DB['SCHEMA'] = '{DB_SERVER_SCHEMA}'; +$DB['SCHEMA'] = getenv('DB_SERVER_SCHEMA'); -$ZBX_SERVER = '{ZBX_SERVER_HOST}'; -$ZBX_SERVER_PORT = '{ZBX_SERVER_PORT}'; -$ZBX_SERVER_NAME = '{ZBX_SERVER_NAME}'; +$ZBX_SERVER = getenv('ZBX_SERVER_HOST'); +$ZBX_SERVER_PORT = getenv('ZBX_SERVER_PORT'); +$ZBX_SERVER_NAME = getenv('ZBX_SERVER_NAME'); $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG; ?> diff --git a/web-apache-mysql/ubuntu/docker-entrypoint.sh b/web-apache-mysql/ubuntu/docker-entrypoint.sh index 578fd538b..82b0ffde1 100755 --- a/web-apache-mysql/ubuntu/docker-entrypoint.sh +++ b/web-apache-mysql/ubuntu/docker-entrypoint.sh @@ -57,67 +57,6 @@ file_env() { unset "$fileVar" } -escape_spec_char() { - local var_value=$1 - - var_value="${var_value//\\/\\\\}" - var_value="${var_value//[$'\n']/}" - var_value="${var_value//\//\\/}" - var_value="${var_value//./\\.}" - var_value="${var_value//\*/\\*}" - var_value="${var_value//^/\\^}" - var_value="${var_value//\$/\\\$}" - var_value="${var_value//\&/\\\&}" - var_value="${var_value//\[/\\[}" - var_value="${var_value//\]/\\]}" - - echo "$var_value" -} - -update_config_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - local is_multiple=$4 - - if [ ! -f "$config_path" ]; then - echo "**** Configuration file '$config_path' does not exist" - return - fi - - echo -n "** Updating '$config_path' parameter \"$var_name\": '$var_value'... " - - # Remove configuration parameter definition in case of unset parameter value - if [ -z "$var_value" ]; then - sed -i -e "/^$var_name=/d" "$config_path" - echo "removed" - return - fi - - # Remove value from configuration parameter in case of double quoted parameter value - if [ "$var_value" == '""' ]; then - sed -i -e "/^$var_name=/s/=.*/=/" "$config_path" - echo "undefined" - return - fi - - # Escaping characters in parameter value and name - var_value=$(escape_spec_char "$var_value") - var_name=$(escape_spec_char "$var_name") - - if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then - sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" - echo "updated" - elif [ "$(grep -Ec "^# $var_name=" $config_path)" -gt 1 ]; then - sed -i -e "/^[#;] $var_name=$/i\\$var_name=$var_value" "$config_path" - echo "added first occurrence" - else - sed -i -e "/^[#;] $var_name=/s/.*/&\n$var_name=$var_value/" "$config_path" - echo "added" - fi - -} - # Check prerequisites for MySQL database check_variables() { : ${DB_SERVER_HOST:="mysql-server"} @@ -205,40 +144,25 @@ prepare_web_server() { } prepare_zbx_web_config() { - local server_name="" - echo "** Preparing Zabbix frontend configuration file" - ZBX_WEB_CONFIG="$ZABBIX_ETC_DIR/web/zabbix.conf.php" - PHP_CONFIG_FILE="/etc/php/7.2/apache2/conf.d/99-zabbix.ini" + export ZBX_MAXEXECUTIONTIME=${ZBX_MAXEXECUTIONTIME:-"600"} + export ZBX_MEMORYLIMIT=${ZBX_MEMORYLIMIT:-"128M"} + export ZBX_POSTMAXSIZE=${ZBX_POSTMAXSIZE:-"16M"} + export ZBX_UPLOADMAXFILESIZE=${ZBX_UPLOADMAXFILESIZE:-"2M"} + export ZBX_MAXINPUTTIME=${ZBX_MAXINPUTTIME:-"300"} + export PHP_TZ=${PHP_TZ:-"Europe/Riga"} - update_config_var "$PHP_CONFIG_FILE" "max_execution_time" "${ZBX_MAXEXECUTIONTIME:-"600"}" - update_config_var "$PHP_CONFIG_FILE" "memory_limit" "${ZBX_MEMORYLIMIT:-"128M"}" - update_config_var "$PHP_CONFIG_FILE" "post_max_size" "${ZBX_POSTMAXSIZE:-"16M"}" - update_config_var "$PHP_CONFIG_FILE" "upload_max_filesize" "${ZBX_UPLOADMAXFILESIZE:-"2M"}" - update_config_var "$PHP_CONFIG_FILE" "max_input_time" "${ZBX_MAXINPUTTIME:-"300"}" - update_config_var "$PHP_CONFIG_FILE" "date.timezone" "${PHP_TZ}" - - # Escaping characters in parameter value - server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") - server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") - server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") - - ZBX_DB_KEY_FILE=$(escape_spec_char "${ZBX_DB_KEY_FILE}") - ZBX_DB_CERT_FILE=$(escape_spec_char "${ZBX_DB_CERT_FILE}") - ZBX_DB_CA_FILE=$(escape_spec_char "${ZBX_DB_CA_FILE}") - - sed -i \ - -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ - -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ - -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_SCHEMA}/${DB_SERVER_SCHEMA}/g" \ - -e "s/{DB_SERVER_USER}/$server_user/g" \ - -e "s/{DB_SERVER_PASS}/$server_pass/g" \ - -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ - -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ - -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ - "$ZBX_WEB_CONFIG" + export DB_SERVER_TYPE="MYSQL" + export DB_SERVER_HOST=${DB_SERVER_HOST} + export DB_SERVER_PORT=${DB_SERVER_PORT} + export DB_SERVER_DBNAME=${DB_SERVER_DBNAME} + export DB_SERVER_SCHEMA=${DB_SERVER_SCHEMA} + export DB_SERVER_USER=${DB_SERVER_ZBX_USER} + export DB_SERVER_PASS=${DB_SERVER_ZBX_PASS} + export ZBX_SERVER_HOST=${ZBX_SERVER_HOST} + export ZBX_SERVER_PORT=${ZBX_SERVER_PORT:-"10051"} + export ZBX_SERVER_NAME=${ZBX_SERVER_NAME} if [ "${ENABLE_WEB_ACCESS_LOG:-"true"}" == "false" ]; then sed -ri \ diff --git a/web-apache-pgsql/alpine/conf/etc/php7/conf.d/99-zabbix.ini b/web-apache-pgsql/alpine/conf/etc/php7/conf.d/99-zabbix.ini index b060e4689..5dfff39cd 100644 --- a/web-apache-pgsql/alpine/conf/etc/php7/conf.d/99-zabbix.ini +++ b/web-apache-pgsql/alpine/conf/etc/php7/conf.d/99-zabbix.ini @@ -1,8 +1,8 @@ -max_execution_time=300 -memory_limit=128M -post_max_size=16M -upload_max_filesize=2M -max_input_time=300 +max_execution_time = ${ZBX_MAXEXECUTIONTIME} +memory_limit = ${ZBX_MEMORYLIMIT} +post_max_size = ${ZBX_POSTMAXSIZE} +upload_max_filesize = ${ZBX_UPLOADMAXFILESIZE} +max_input_time = ${ZBX_MAXINPUTTIME} ; always_populate_raw_post_data=-1 -max_input_vars=10000 -; date.timezone=Europe/Riga +max_input_vars = 10000 +date.timezone = ${PHP_TZ} diff --git a/web-apache-pgsql/alpine/conf/etc/zabbix/web/zabbix.conf.php b/web-apache-pgsql/alpine/conf/etc/zabbix/web/zabbix.conf.php index 73c991b18..d6f2ad0c8 100644 --- a/web-apache-pgsql/alpine/conf/etc/zabbix/web/zabbix.conf.php +++ b/web-apache-pgsql/alpine/conf/etc/zabbix/web/zabbix.conf.php @@ -2,19 +2,19 @@ // Zabbix GUI configuration file. global $DB; -$DB['TYPE'] = 'POSTGRESQL'; -$DB['SERVER'] = '{DB_SERVER_HOST}'; -$DB['PORT'] = '{DB_SERVER_PORT}'; -$DB['DATABASE'] = '{DB_SERVER_DBNAME}'; -$DB['USER'] = '{DB_SERVER_USER}'; -$DB['PASSWORD'] = '{DB_SERVER_PASS}'; +$DB['TYPE'] = getenv('DB_SERVER_TYPE'); +$DB['SERVER'] = getenv('DB_SERVER_HOST'); +$DB['PORT'] = getenv('DB_SERVER_PORT'); +$DB['DATABASE'] = getenv('DB_SERVER_DBNAME'); +$DB['USER'] = getenv('DB_SERVER_USER'); +$DB['PASSWORD'] = getenv('DB_SERVER_PASS'); // Schema name. Used for IBM DB2 and PostgreSQL. -$DB['SCHEMA'] = '{DB_SERVER_SCHEMA}'; +$DB['SCHEMA'] = getenv('DB_SERVER_SCHEMA'); -$ZBX_SERVER = '{ZBX_SERVER_HOST}'; -$ZBX_SERVER_PORT = '{ZBX_SERVER_PORT}'; -$ZBX_SERVER_NAME = '{ZBX_SERVER_NAME}'; +$ZBX_SERVER = getenv('ZBX_SERVER_HOST'); +$ZBX_SERVER_PORT = getenv('ZBX_SERVER_PORT'); +$ZBX_SERVER_NAME = getenv('ZBX_SERVER_NAME'); $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG; ?> diff --git a/web-apache-pgsql/alpine/docker-entrypoint.sh b/web-apache-pgsql/alpine/docker-entrypoint.sh index 931d85d5e..b1619ce0b 100755 --- a/web-apache-pgsql/alpine/docker-entrypoint.sh +++ b/web-apache-pgsql/alpine/docker-entrypoint.sh @@ -57,67 +57,6 @@ file_env() { unset "$fileVar" } -escape_spec_char() { - local var_value=$1 - - var_value="${var_value//\\/\\\\}" - var_value="${var_value//[$'\n']/}" - var_value="${var_value//\//\\/}" - var_value="${var_value//./\\.}" - var_value="${var_value//\*/\\*}" - var_value="${var_value//^/\\^}" - var_value="${var_value//\$/\\\$}" - var_value="${var_value//\&/\\\&}" - var_value="${var_value//\[/\\[}" - var_value="${var_value//\]/\\]}" - - echo "$var_value" -} - -update_config_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - local is_multiple=$4 - - if [ ! -f "$config_path" ]; then - echo "**** Configuration file '$config_path' does not exist" - return - fi - - echo -n "** Updating '$config_path' parameter \"$var_name\": '$var_value'... " - - # Remove configuration parameter definition in case of unset parameter value - if [ -z "$var_value" ]; then - sed -i -e "/^$var_name=/d" "$config_path" - echo "removed" - return - fi - - # Remove value from configuration parameter in case of double quoted parameter value - if [ "$var_value" == '""' ]; then - sed -i -e "/^$var_name=/s/=.*/=/" "$config_path" - echo "undefined" - return - fi - - # Escaping characters in parameter value and name - var_value=$(escape_spec_char "$var_value") - var_name=$(escape_spec_char "$var_name") - - if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then - sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" - echo "updated" - elif [ "$(grep -Ec "^# $var_name=" $config_path)" -gt 1 ]; then - sed -i -e "/^[#;] $var_name=$/i\\$var_name=$var_value" "$config_path" - echo "added first occurrence" - else - sed -i -e "/^[#;] $var_name=/s/.*/&\n$var_name=$var_value/" "$config_path" - echo "added" - fi - -} - # Check prerequisites for PostgreSQL database check_variables() { file_env POSTGRES_USER @@ -202,36 +141,25 @@ prepare_web_server() { } prepare_zbx_web_config() { - local server_name="" - echo "** Preparing Zabbix frontend configuration file" - ZBX_WEB_CONFIG="$ZABBIX_ETC_DIR/web/zabbix.conf.php" - PHP_CONFIG_FILE="/etc/php7/conf.d/99-zabbix.ini" + export ZBX_MAXEXECUTIONTIME=${ZBX_MAXEXECUTIONTIME:-"600"} + export ZBX_MEMORYLIMIT=${ZBX_MEMORYLIMIT:-"128M"} + export ZBX_POSTMAXSIZE=${ZBX_POSTMAXSIZE:-"16M"} + export ZBX_UPLOADMAXFILESIZE=${ZBX_UPLOADMAXFILESIZE:-"2M"} + export ZBX_MAXINPUTTIME=${ZBX_MAXINPUTTIME:-"300"} + export PHP_TZ=${PHP_TZ:-"Europe/Riga"} - update_config_var "$PHP_CONFIG_FILE" "max_execution_time" "${ZBX_MAXEXECUTIONTIME:-"600"}" - update_config_var "$PHP_CONFIG_FILE" "memory_limit" "${ZBX_MEMORYLIMIT:-"128M"}" - update_config_var "$PHP_CONFIG_FILE" "post_max_size" "${ZBX_POSTMAXSIZE:-"16M"}" - update_config_var "$PHP_CONFIG_FILE" "upload_max_filesize" "${ZBX_UPLOADMAXFILESIZE:-"2M"}" - update_config_var "$PHP_CONFIG_FILE" "max_input_time" "${ZBX_MAXINPUTTIME:-"300"}" - update_config_var "$PHP_CONFIG_FILE" "date.timezone" "${PHP_TZ}" - - # Escaping characters in parameter value - server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") - server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") - server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") - - sed -i \ - -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ - -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ - -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_SCHEMA}/${DB_SERVER_SCHEMA}/g" \ - -e "s/{DB_SERVER_USER}/$server_user/g" \ - -e "s/{DB_SERVER_PASS}/$server_pass/g" \ - -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ - -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ - -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ - "$ZBX_WEB_CONFIG" + export DB_SERVER_TYPE="POSTGRESQL" + export DB_SERVER_HOST=${DB_SERVER_HOST} + export DB_SERVER_PORT=${DB_SERVER_PORT} + export DB_SERVER_DBNAME=${DB_SERVER_DBNAME} + export DB_SERVER_SCHEMA=${DB_SERVER_SCHEMA} + export DB_SERVER_USER=${DB_SERVER_ZBX_USER} + export DB_SERVER_PASS=${DB_SERVER_ZBX_PASS} + export ZBX_SERVER_HOST=${ZBX_SERVER_HOST} + export ZBX_SERVER_PORT=${ZBX_SERVER_PORT:-"10051"} + export ZBX_SERVER_NAME=${ZBX_SERVER_NAME} if [ "${ENABLE_WEB_ACCESS_LOG:-"true"}" == "false" ]; then sed -ri \ diff --git a/web-apache-pgsql/centos/conf/etc/php.d/99-zabbix.ini b/web-apache-pgsql/centos/conf/etc/php.d/99-zabbix.ini index de8fc6904..5dfff39cd 100644 --- a/web-apache-pgsql/centos/conf/etc/php.d/99-zabbix.ini +++ b/web-apache-pgsql/centos/conf/etc/php.d/99-zabbix.ini @@ -1,8 +1,8 @@ -max_execution_time=300 -memory_limit=128M -post_max_size=16M -upload_max_filesize=2M -max_input_time=300 -always_populate_raw_post_data=-1 -max_input_vars=10000 -; date.timezone=Europe/Riga +max_execution_time = ${ZBX_MAXEXECUTIONTIME} +memory_limit = ${ZBX_MEMORYLIMIT} +post_max_size = ${ZBX_POSTMAXSIZE} +upload_max_filesize = ${ZBX_UPLOADMAXFILESIZE} +max_input_time = ${ZBX_MAXINPUTTIME} +; always_populate_raw_post_data=-1 +max_input_vars = 10000 +date.timezone = ${PHP_TZ} diff --git a/web-apache-pgsql/centos/conf/etc/zabbix/web/zabbix.conf.php b/web-apache-pgsql/centos/conf/etc/zabbix/web/zabbix.conf.php index 73c991b18..d6f2ad0c8 100644 --- a/web-apache-pgsql/centos/conf/etc/zabbix/web/zabbix.conf.php +++ b/web-apache-pgsql/centos/conf/etc/zabbix/web/zabbix.conf.php @@ -2,19 +2,19 @@ // Zabbix GUI configuration file. global $DB; -$DB['TYPE'] = 'POSTGRESQL'; -$DB['SERVER'] = '{DB_SERVER_HOST}'; -$DB['PORT'] = '{DB_SERVER_PORT}'; -$DB['DATABASE'] = '{DB_SERVER_DBNAME}'; -$DB['USER'] = '{DB_SERVER_USER}'; -$DB['PASSWORD'] = '{DB_SERVER_PASS}'; +$DB['TYPE'] = getenv('DB_SERVER_TYPE'); +$DB['SERVER'] = getenv('DB_SERVER_HOST'); +$DB['PORT'] = getenv('DB_SERVER_PORT'); +$DB['DATABASE'] = getenv('DB_SERVER_DBNAME'); +$DB['USER'] = getenv('DB_SERVER_USER'); +$DB['PASSWORD'] = getenv('DB_SERVER_PASS'); // Schema name. Used for IBM DB2 and PostgreSQL. -$DB['SCHEMA'] = '{DB_SERVER_SCHEMA}'; +$DB['SCHEMA'] = getenv('DB_SERVER_SCHEMA'); -$ZBX_SERVER = '{ZBX_SERVER_HOST}'; -$ZBX_SERVER_PORT = '{ZBX_SERVER_PORT}'; -$ZBX_SERVER_NAME = '{ZBX_SERVER_NAME}'; +$ZBX_SERVER = getenv('ZBX_SERVER_HOST'); +$ZBX_SERVER_PORT = getenv('ZBX_SERVER_PORT'); +$ZBX_SERVER_NAME = getenv('ZBX_SERVER_NAME'); $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG; ?> diff --git a/web-apache-pgsql/centos/docker-entrypoint.sh b/web-apache-pgsql/centos/docker-entrypoint.sh index 3257306c0..d0f9fa243 100755 --- a/web-apache-pgsql/centos/docker-entrypoint.sh +++ b/web-apache-pgsql/centos/docker-entrypoint.sh @@ -57,68 +57,6 @@ file_env() { unset "$fileVar" } -escape_spec_char() { - local var_value=$1 - - var_value="${var_value//\\/\\\\}" - var_value="${var_value//[$'\n']/}" - var_value="${var_value//\//\\/}" - var_value="${var_value//./\\.}" - var_value="${var_value//\*/\\*}" - var_value="${var_value//^/\\^}" - var_value="${var_value//\$/\\\$}" - var_value="${var_value//\&/\\\&}" - var_value="${var_value//\[/\\[}" - var_value="${var_value//\]/\\]}" - - echo "$var_value" -} - -update_config_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - local is_multiple=$4 - - if [ ! -f "$config_path" ]; then - echo "**** Configuration file '$config_path' does not exist" - return - fi - - echo -n "** Updating '$config_path' parameter \"$var_name\": '$var_value'... " - - # Remove configuration parameter definition in case of unset parameter value - if [ -z "$var_value" ]; then - sed -i -e "/^$var_name=/d" "$config_path" - echo "removed" - return - fi - - # Remove value from configuration parameter in case of double quoted parameter value - if [ "$var_value" == '""' ]; then - sed -i -e "/^$var_name=/s/=.*/=/" "$config_path" - echo "undefined" - return - fi - - - # Escaping characters in parameter value and name - var_value=$(escape_spec_char "$var_value") - var_name=$(escape_spec_char "$var_name") - - if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then - sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" - echo "updated" - elif [ "$(grep -Ec "^# $var_name=" $config_path)" -gt 1 ]; then - sed -i -e "/^[#;] $var_name=$/i\\$var_name=$var_value" "$config_path" - echo "added first occurrence" - else - sed -i -e "/^[#;] $var_name=/s/.*/&\n$var_name=$var_value/" "$config_path" - echo "added" - fi - -} - # Check prerequisites for PostgreSQL database check_variables() { file_env POSTGRES_USER @@ -203,36 +141,25 @@ prepare_web_server() { } prepare_zbx_web_config() { - local server_name="" - echo "** Preparing Zabbix frontend configuration file" - ZBX_WEB_CONFIG="$ZABBIX_ETC_DIR/web/zabbix.conf.php" - PHP_CONFIG_FILE="/etc/php.d/99-zabbix.ini" + export ZBX_MAXEXECUTIONTIME=${ZBX_MAXEXECUTIONTIME:-"600"} + export ZBX_MEMORYLIMIT=${ZBX_MEMORYLIMIT:-"128M"} + export ZBX_POSTMAXSIZE=${ZBX_POSTMAXSIZE:-"16M"} + export ZBX_UPLOADMAXFILESIZE=${ZBX_UPLOADMAXFILESIZE:-"2M"} + export ZBX_MAXINPUTTIME=${ZBX_MAXINPUTTIME:-"300"} + export PHP_TZ=${PHP_TZ:-"Europe/Riga"} - update_config_var "$PHP_CONFIG_FILE" "max_execution_time" "${ZBX_MAXEXECUTIONTIME:-"600"}" - update_config_var "$PHP_CONFIG_FILE" "memory_limit" "${ZBX_MEMORYLIMIT:-"128M"}" - update_config_var "$PHP_CONFIG_FILE" "post_max_size" "${ZBX_POSTMAXSIZE:-"16M"}" - update_config_var "$PHP_CONFIG_FILE" "upload_max_filesize" "${ZBX_UPLOADMAXFILESIZE:-"2M"}" - update_config_var "$PHP_CONFIG_FILE" "max_input_time" "${ZBX_MAXINPUTTIME:-"300"}" - update_config_var "$PHP_CONFIG_FILE" "date.timezone" "${PHP_TZ}" - - # Escaping characters in parameter value - server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") - server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") - server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") - - sed -i \ - -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ - -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ - -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_SCHEMA}/${DB_SERVER_SCHEMA}/g" \ - -e "s/{DB_SERVER_USER}/$server_user/g" \ - -e "s/{DB_SERVER_PASS}/$server_pass/g" \ - -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ - -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ - -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ - "$ZBX_WEB_CONFIG" + export DB_SERVER_TYPE="POSTGRESQL" + export DB_SERVER_HOST=${DB_SERVER_HOST} + export DB_SERVER_PORT=${DB_SERVER_PORT} + export DB_SERVER_DBNAME=${DB_SERVER_DBNAME} + export DB_SERVER_SCHEMA=${DB_SERVER_SCHEMA} + export DB_SERVER_USER=${DB_SERVER_ZBX_USER} + export DB_SERVER_PASS=${DB_SERVER_ZBX_PASS} + export ZBX_SERVER_HOST=${ZBX_SERVER_HOST} + export ZBX_SERVER_PORT=${ZBX_SERVER_PORT:-"10051"} + export ZBX_SERVER_NAME=${ZBX_SERVER_NAME} if [ "${ENABLE_WEB_ACCESS_LOG:-"true"}" == "false" ]; then sed -ri \ diff --git a/web-apache-pgsql/ubuntu/conf/etc/php/7.2/apache2/conf.d/99-zabbix.ini b/web-apache-pgsql/ubuntu/conf/etc/php/7.2/apache2/conf.d/99-zabbix.ini index b5356c3da..5dfff39cd 100644 --- a/web-apache-pgsql/ubuntu/conf/etc/php/7.2/apache2/conf.d/99-zabbix.ini +++ b/web-apache-pgsql/ubuntu/conf/etc/php/7.2/apache2/conf.d/99-zabbix.ini @@ -1,9 +1,8 @@ -max_execution_time=300 -memory_limit=128M -post_max_size=16M -upload_max_filesize=2M -max_input_time=300 -always_populate_raw_post_date=-1 -max_input_vars=10000 -; date.timezone=Europe/Riga -session.save_path=/var/lib/php/sessions +max_execution_time = ${ZBX_MAXEXECUTIONTIME} +memory_limit = ${ZBX_MEMORYLIMIT} +post_max_size = ${ZBX_POSTMAXSIZE} +upload_max_filesize = ${ZBX_UPLOADMAXFILESIZE} +max_input_time = ${ZBX_MAXINPUTTIME} +; always_populate_raw_post_data=-1 +max_input_vars = 10000 +date.timezone = ${PHP_TZ} diff --git a/web-apache-pgsql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php b/web-apache-pgsql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php index 73c991b18..d6f2ad0c8 100644 --- a/web-apache-pgsql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php +++ b/web-apache-pgsql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php @@ -2,19 +2,19 @@ // Zabbix GUI configuration file. global $DB; -$DB['TYPE'] = 'POSTGRESQL'; -$DB['SERVER'] = '{DB_SERVER_HOST}'; -$DB['PORT'] = '{DB_SERVER_PORT}'; -$DB['DATABASE'] = '{DB_SERVER_DBNAME}'; -$DB['USER'] = '{DB_SERVER_USER}'; -$DB['PASSWORD'] = '{DB_SERVER_PASS}'; +$DB['TYPE'] = getenv('DB_SERVER_TYPE'); +$DB['SERVER'] = getenv('DB_SERVER_HOST'); +$DB['PORT'] = getenv('DB_SERVER_PORT'); +$DB['DATABASE'] = getenv('DB_SERVER_DBNAME'); +$DB['USER'] = getenv('DB_SERVER_USER'); +$DB['PASSWORD'] = getenv('DB_SERVER_PASS'); // Schema name. Used for IBM DB2 and PostgreSQL. -$DB['SCHEMA'] = '{DB_SERVER_SCHEMA}'; +$DB['SCHEMA'] = getenv('DB_SERVER_SCHEMA'); -$ZBX_SERVER = '{ZBX_SERVER_HOST}'; -$ZBX_SERVER_PORT = '{ZBX_SERVER_PORT}'; -$ZBX_SERVER_NAME = '{ZBX_SERVER_NAME}'; +$ZBX_SERVER = getenv('ZBX_SERVER_HOST'); +$ZBX_SERVER_PORT = getenv('ZBX_SERVER_PORT'); +$ZBX_SERVER_NAME = getenv('ZBX_SERVER_NAME'); $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG; ?> diff --git a/web-apache-pgsql/ubuntu/docker-entrypoint.sh b/web-apache-pgsql/ubuntu/docker-entrypoint.sh index 1cf2460e0..09143acc7 100755 --- a/web-apache-pgsql/ubuntu/docker-entrypoint.sh +++ b/web-apache-pgsql/ubuntu/docker-entrypoint.sh @@ -57,68 +57,6 @@ file_env() { unset "$fileVar" } -escape_spec_char() { - local var_value=$1 - - var_value="${var_value//\\/\\\\}" - var_value="${var_value//[$'\n']/}" - var_value="${var_value//\//\\/}" - var_value="${var_value//./\\.}" - var_value="${var_value//\*/\\*}" - var_value="${var_value//^/\\^}" - var_value="${var_value//\$/\\\$}" - var_value="${var_value//\&/\\\&}" - var_value="${var_value//\[/\\[}" - var_value="${var_value//\]/\\]}" - - echo "$var_value" -} - -update_config_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - local is_multiple=$4 - - if [ ! -f "$config_path" ]; then - echo "**** Configuration file '$config_path' does not exist" - return - fi - - echo -n "** Updating '$config_path' parameter \"$var_name\": '$var_value'... " - - # Remove configuration parameter definition in case of unset parameter value - if [ -z "$var_value" ]; then - sed -i -e "/^$var_name=/d" "$config_path" - echo "removed" - return - fi - - # Remove value from configuration parameter in case of double quoted parameter value - if [ "$var_value" == '""' ]; then - sed -i -e "/^$var_name=/s/=.*/=/" "$config_path" - echo "undefined" - return - fi - - - # Escaping characters in parameter value and name - var_value=$(escape_spec_char "$var_value") - var_name=$(escape_spec_char "$var_name") - - if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then - sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" - echo "updated" - elif [ "$(grep -Ec "^# $var_name=" $config_path)" -gt 1 ]; then - sed -i -e "/^[#;] $var_name=$/i\\$var_name=$var_value" "$config_path" - echo "added first occurrence" - else - sed -i -e "/^[#;] $var_name=/s/.*/&\n$var_name=$var_value/" "$config_path" - echo "added" - fi - -} - # Check prerequisites for PostgreSQL database check_variables() { file_env POSTGRES_USER @@ -203,40 +141,25 @@ prepare_web_server() { } prepare_zbx_web_config() { - local server_name="" - echo "** Preparing Zabbix frontend configuration file" - ZBX_WEB_CONFIG="$ZABBIX_ETC_DIR/web/zabbix.conf.php" - PHP_CONFIG_FILE="/etc/php/7.2/apache2/conf.d/99-zabbix.ini" + export ZBX_MAXEXECUTIONTIME=${ZBX_MAXEXECUTIONTIME:-"600"} + export ZBX_MEMORYLIMIT=${ZBX_MEMORYLIMIT:-"128M"} + export ZBX_POSTMAXSIZE=${ZBX_POSTMAXSIZE:-"16M"} + export ZBX_UPLOADMAXFILESIZE=${ZBX_UPLOADMAXFILESIZE:-"2M"} + export ZBX_MAXINPUTTIME=${ZBX_MAXINPUTTIME:-"300"} + export PHP_TZ=${PHP_TZ:-"Europe/Riga"} - update_config_var "$PHP_CONFIG_FILE" "max_execution_time" "${ZBX_MAXEXECUTIONTIME:-"600"}" - update_config_var "$PHP_CONFIG_FILE" "memory_limit" "${ZBX_MEMORYLIMIT:-"128M"}" - update_config_var "$PHP_CONFIG_FILE" "post_max_size" "${ZBX_POSTMAXSIZE:-"16M"}" - update_config_var "$PHP_CONFIG_FILE" "upload_max_filesize" "${ZBX_UPLOADMAXFILESIZE:-"2M"}" - update_config_var "$PHP_CONFIG_FILE" "max_input_time" "${ZBX_MAXINPUTTIME:-"300"}" - update_config_var "$PHP_CONFIG_FILE" "date.timezone" "${PHP_TZ}" - - # Escaping characters in parameter value - server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") - server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") - server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") - - ZBX_DB_KEY_FILE=$(escape_spec_char "${ZBX_DB_KEY_FILE}") - ZBX_DB_CERT_FILE=$(escape_spec_char "${ZBX_DB_CERT_FILE}") - ZBX_DB_CA_FILE=$(escape_spec_char "${ZBX_DB_CA_FILE}") - - sed -i \ - -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ - -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ - -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_SCHEMA}/${DB_SERVER_SCHEMA}/g" \ - -e "s/{DB_SERVER_USER}/$server_user/g" \ - -e "s/{DB_SERVER_PASS}/$server_pass/g" \ - -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ - -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ - -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ - "$ZBX_WEB_CONFIG" + export DB_SERVER_TYPE="POSTGRESQL" + export DB_SERVER_HOST=${DB_SERVER_HOST} + export DB_SERVER_PORT=${DB_SERVER_PORT} + export DB_SERVER_DBNAME=${DB_SERVER_DBNAME} + export DB_SERVER_SCHEMA=${DB_SERVER_SCHEMA} + export DB_SERVER_USER=${DB_SERVER_ZBX_USER} + export DB_SERVER_PASS=${DB_SERVER_ZBX_PASS} + export ZBX_SERVER_HOST=${ZBX_SERVER_HOST} + export ZBX_SERVER_PORT=${ZBX_SERVER_PORT:-"10051"} + export ZBX_SERVER_NAME=${ZBX_SERVER_NAME} if [ "${ENABLE_WEB_ACCESS_LOG:-"true"}" == "false" ]; then sed -ri \ diff --git a/web-nginx-mysql/alpine/conf/etc/php7/php-fpm.d/zabbix.conf b/web-nginx-mysql/alpine/conf/etc/php7/php-fpm.d/zabbix.conf index a4926f4ae..1d19fd099 100644 --- a/web-nginx-mysql/alpine/conf/etc/php7/php-fpm.d/zabbix.conf +++ b/web-nginx-mysql/alpine/conf/etc/php7/php-fpm.d/zabbix.conf @@ -2,6 +2,8 @@ listen = /tmp/php-fpm.sock +clear_env = no + pm = dynamic pm.max_children = 50 pm.start_servers = 5 @@ -16,10 +18,10 @@ php_admin_flag[log_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session -php_value[max_execution_time]= 300 -php_value[memory_limit]= 128M -php_value[post_max_size]= 16M -php_value[upload_max_filesize]= 2M -php_value[max_input_time]= 300 -php_value[max_input_vars]= 10000 -; php_value[date.timezone]= Europe/Riga +php_value[max_execution_time] = ${ZBX_MAXEXECUTIONTIME} +php_value[memory_limit] = ${ZBX_MEMORYLIMIT} +php_value[post_max_size] = ${ZBX_POSTMAXSIZE} +php_value[upload_max_filesize] = ${ZBX_UPLOADMAXFILESIZE} +php_value[max_input_time] = ${ZBX_MAXINPUTTIME} +php_value[max_input_vars] = 10000 +php_value[date.timezone] = ${PHP_TZ} diff --git a/web-nginx-mysql/alpine/conf/etc/zabbix/web/zabbix.conf.php b/web-nginx-mysql/alpine/conf/etc/zabbix/web/zabbix.conf.php index 6cbd68590..d6f2ad0c8 100644 --- a/web-nginx-mysql/alpine/conf/etc/zabbix/web/zabbix.conf.php +++ b/web-nginx-mysql/alpine/conf/etc/zabbix/web/zabbix.conf.php @@ -2,19 +2,19 @@ // Zabbix GUI configuration file. global $DB; -$DB['TYPE'] = 'MYSQL'; -$DB['SERVER'] = '{DB_SERVER_HOST}'; -$DB['PORT'] = '{DB_SERVER_PORT}'; -$DB['DATABASE'] = '{DB_SERVER_DBNAME}'; -$DB['USER'] = '{DB_SERVER_USER}'; -$DB['PASSWORD'] = '{DB_SERVER_PASS}'; +$DB['TYPE'] = getenv('DB_SERVER_TYPE'); +$DB['SERVER'] = getenv('DB_SERVER_HOST'); +$DB['PORT'] = getenv('DB_SERVER_PORT'); +$DB['DATABASE'] = getenv('DB_SERVER_DBNAME'); +$DB['USER'] = getenv('DB_SERVER_USER'); +$DB['PASSWORD'] = getenv('DB_SERVER_PASS'); // Schema name. Used for IBM DB2 and PostgreSQL. -$DB['SCHEMA'] = '{DB_SERVER_SCHEMA}'; +$DB['SCHEMA'] = getenv('DB_SERVER_SCHEMA'); -$ZBX_SERVER = '{ZBX_SERVER_HOST}'; -$ZBX_SERVER_PORT = '{ZBX_SERVER_PORT}'; -$ZBX_SERVER_NAME = '{ZBX_SERVER_NAME}'; +$ZBX_SERVER = getenv('ZBX_SERVER_HOST'); +$ZBX_SERVER_PORT = getenv('ZBX_SERVER_PORT'); +$ZBX_SERVER_NAME = getenv('ZBX_SERVER_NAME'); $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG; ?> diff --git a/web-nginx-mysql/alpine/docker-entrypoint.sh b/web-nginx-mysql/alpine/docker-entrypoint.sh index b4d47f914..661c1f6ab 100755 --- a/web-nginx-mysql/alpine/docker-entrypoint.sh +++ b/web-nginx-mysql/alpine/docker-entrypoint.sh @@ -59,83 +59,6 @@ file_env() { unset "$fileVar" } -escape_spec_char() { - local var_value=$1 - - var_value="${var_value//\\/\\\\}" - var_value="${var_value//[$'\n']/}" - var_value="${var_value//\//\\/}" - var_value="${var_value//./\\.}" - var_value="${var_value//\*/\\*}" - var_value="${var_value//^/\\^}" - var_value="${var_value//\$/\\\$}" - var_value="${var_value//\&/\\\&}" - var_value="${var_value//\[/\\[}" - var_value="${var_value//\]/\\]}" - - echo "$var_value" -} - -update_config_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - local is_multiple=$4 - - if [ ! -f "$config_path" ]; then - echo "**** Configuration file '$config_path' does not exist" - return - fi - - echo -n "** Updating '$config_path' parameter \"$var_name\": '$var_value'... " - - # Remove configuration parameter definition in case of unset parameter value - if [ -z "$var_value" ]; then - sed -i -e "/^$var_name=/d" "$config_path" - echo "removed" - return - fi - - # Remove value from configuration parameter in case of double quoted parameter value - if [ "$var_value" == '""' ]; then - sed -i -e "/^$var_name=/s/=.*/=/" "$config_path" - echo "undefined" - return - fi - - # Escaping characters in parameter value and name - var_value=$(escape_spec_char "$var_value") - var_name=$(escape_spec_char "$var_name") - - if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then - sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" - echo "updated" - elif [ "$(grep -Ec "^# $var_name=" $config_path)" -gt 1 ]; then - sed -i -e "/^[#;] $var_name=$/i\\$var_name=$var_value" "$config_path" - echo "added first occurrence" - else - sed -i -e "/^[#;] $var_name=/s/.*/&\n$var_name=$var_value/" "$config_path" - echo "added" - fi - -} - -update_config_multiple_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - - var_value="${var_value%\"}" - var_value="${var_value#\"}" - - local IFS=, - local OPT_LIST=($var_value) - - for value in "${OPT_LIST[@]}"; do - update_config_var $config_path $var_name $value true - done -} - # Check prerequisites for MySQL database check_variables() { : ${DB_SERVER_HOST:="mysql-server"} @@ -225,21 +148,10 @@ prepare_web_server() { } prepare_zbx_web_config() { - local server_name="" - echo "** Preparing Zabbix frontend configuration file" - ZBX_WEB_CONFIG="$ZABBIX_ETC_DIR/web/zabbix.conf.php" - PHP_CONFIG_FILE="/etc/php7/php-fpm.d/zabbix.conf" - update_config_var "$PHP_CONFIG_FILE" "php_value[max_execution_time]" "${ZBX_MAXEXECUTIONTIME:-"600"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[memory_limit]" "${ZBX_MEMORYLIMIT:-"128M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[post_max_size]" "${ZBX_POSTMAXSIZE:-"16M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[upload_max_filesize]" "${ZBX_UPLOADMAXFILESIZE:-"2M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[max_input_time]" "${ZBX_MAXINPUTTIME:-"300"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[date.timezone]" "${PHP_TZ}" - if [ "$(id -u)" == '0' ]; then echo "user = zabbix" >> "$PHP_CONFIG_FILE" echo "group = zabbix" >> "$PHP_CONFIG_FILE" @@ -247,22 +159,23 @@ prepare_zbx_web_config() { echo "listen.group = nginx" >> "$PHP_CONFIG_FILE" fi - # Escaping characters in parameter value - server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") - server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") - server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") + export ZBX_MAXEXECUTIONTIME=${ZBX_MAXEXECUTIONTIME:-"600"} + export ZBX_MEMORYLIMIT=${ZBX_MEMORYLIMIT:-"128M"} + export ZBX_POSTMAXSIZE=${ZBX_POSTMAXSIZE:-"16M"} + export ZBX_UPLOADMAXFILESIZE=${ZBX_UPLOADMAXFILESIZE:-"2M"} + export ZBX_MAXINPUTTIME=${ZBX_MAXINPUTTIME:-"300"} + export PHP_TZ=${PHP_TZ:-"Europe/Riga"} - sed -i \ - -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ - -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ - -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_SCHEMA}/${DB_SERVER_SCHEMA}/g" \ - -e "s/{DB_SERVER_USER}/$server_user/g" \ - -e "s/{DB_SERVER_PASS}/$server_pass/g" \ - -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ - -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ - -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ - "$ZBX_WEB_CONFIG" + export DB_SERVER_TYPE="MYSQL" + export DB_SERVER_HOST=${DB_SERVER_HOST} + export DB_SERVER_PORT=${DB_SERVER_PORT} + export DB_SERVER_DBNAME=${DB_SERVER_DBNAME} + export DB_SERVER_SCHEMA=${DB_SERVER_SCHEMA} + export DB_SERVER_USER=${DB_SERVER_ZBX_USER} + export DB_SERVER_PASS=${DB_SERVER_ZBX_PASS} + export ZBX_SERVER_HOST=${ZBX_SERVER_HOST} + export ZBX_SERVER_PORT=${ZBX_SERVER_PORT:-"10051"} + export ZBX_SERVER_NAME=${ZBX_SERVER_NAME} if [ "${ENABLE_WEB_ACCESS_LOG:-"true"}" == "false" ]; then sed -ri \ diff --git a/web-nginx-mysql/centos/conf/etc/php-fpm.d/zabbix.conf b/web-nginx-mysql/centos/conf/etc/php-fpm.d/zabbix.conf index a4926f4ae..1d19fd099 100644 --- a/web-nginx-mysql/centos/conf/etc/php-fpm.d/zabbix.conf +++ b/web-nginx-mysql/centos/conf/etc/php-fpm.d/zabbix.conf @@ -2,6 +2,8 @@ listen = /tmp/php-fpm.sock +clear_env = no + pm = dynamic pm.max_children = 50 pm.start_servers = 5 @@ -16,10 +18,10 @@ php_admin_flag[log_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session -php_value[max_execution_time]= 300 -php_value[memory_limit]= 128M -php_value[post_max_size]= 16M -php_value[upload_max_filesize]= 2M -php_value[max_input_time]= 300 -php_value[max_input_vars]= 10000 -; php_value[date.timezone]= Europe/Riga +php_value[max_execution_time] = ${ZBX_MAXEXECUTIONTIME} +php_value[memory_limit] = ${ZBX_MEMORYLIMIT} +php_value[post_max_size] = ${ZBX_POSTMAXSIZE} +php_value[upload_max_filesize] = ${ZBX_UPLOADMAXFILESIZE} +php_value[max_input_time] = ${ZBX_MAXINPUTTIME} +php_value[max_input_vars] = 10000 +php_value[date.timezone] = ${PHP_TZ} diff --git a/web-nginx-mysql/centos/conf/etc/zabbix/web/zabbix.conf.php b/web-nginx-mysql/centos/conf/etc/zabbix/web/zabbix.conf.php index 6cbd68590..d6f2ad0c8 100644 --- a/web-nginx-mysql/centos/conf/etc/zabbix/web/zabbix.conf.php +++ b/web-nginx-mysql/centos/conf/etc/zabbix/web/zabbix.conf.php @@ -2,19 +2,19 @@ // Zabbix GUI configuration file. global $DB; -$DB['TYPE'] = 'MYSQL'; -$DB['SERVER'] = '{DB_SERVER_HOST}'; -$DB['PORT'] = '{DB_SERVER_PORT}'; -$DB['DATABASE'] = '{DB_SERVER_DBNAME}'; -$DB['USER'] = '{DB_SERVER_USER}'; -$DB['PASSWORD'] = '{DB_SERVER_PASS}'; +$DB['TYPE'] = getenv('DB_SERVER_TYPE'); +$DB['SERVER'] = getenv('DB_SERVER_HOST'); +$DB['PORT'] = getenv('DB_SERVER_PORT'); +$DB['DATABASE'] = getenv('DB_SERVER_DBNAME'); +$DB['USER'] = getenv('DB_SERVER_USER'); +$DB['PASSWORD'] = getenv('DB_SERVER_PASS'); // Schema name. Used for IBM DB2 and PostgreSQL. -$DB['SCHEMA'] = '{DB_SERVER_SCHEMA}'; +$DB['SCHEMA'] = getenv('DB_SERVER_SCHEMA'); -$ZBX_SERVER = '{ZBX_SERVER_HOST}'; -$ZBX_SERVER_PORT = '{ZBX_SERVER_PORT}'; -$ZBX_SERVER_NAME = '{ZBX_SERVER_NAME}'; +$ZBX_SERVER = getenv('ZBX_SERVER_HOST'); +$ZBX_SERVER_PORT = getenv('ZBX_SERVER_PORT'); +$ZBX_SERVER_NAME = getenv('ZBX_SERVER_NAME'); $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG; ?> diff --git a/web-nginx-mysql/centos/docker-entrypoint.sh b/web-nginx-mysql/centos/docker-entrypoint.sh index 51a89110f..30592d7b5 100755 --- a/web-nginx-mysql/centos/docker-entrypoint.sh +++ b/web-nginx-mysql/centos/docker-entrypoint.sh @@ -59,83 +59,6 @@ file_env() { unset "$fileVar" } -escape_spec_char() { - local var_value=$1 - - var_value="${var_value//\\/\\\\}" - var_value="${var_value//[$'\n']/}" - var_value="${var_value//\//\\/}" - var_value="${var_value//./\\.}" - var_value="${var_value//\*/\\*}" - var_value="${var_value//^/\\^}" - var_value="${var_value//\$/\\\$}" - var_value="${var_value//\&/\\\&}" - var_value="${var_value//\[/\\[}" - var_value="${var_value//\]/\\]}" - - echo "$var_value" -} - -update_config_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - local is_multiple=$4 - - if [ ! -f "$config_path" ]; then - echo "**** Configuration file '$config_path' does not exist" - return - fi - - echo -n "** Updating '$config_path' parameter \"$var_name\": '$var_value'... " - - # Remove configuration parameter definition in case of unset parameter value - if [ -z "$var_value" ]; then - sed -i -e "/^$var_name=/d" "$config_path" - echo "removed" - return - fi - - # Remove value from configuration parameter in case of double quoted parameter value - if [ "$var_value" == '""' ]; then - sed -i -e "/^$var_name=/s/=.*/=/" "$config_path" - echo "undefined" - return - fi - - # Escaping characters in parameter value and name - var_value=$(escape_spec_char "$var_value") - var_name=$(escape_spec_char "$var_name") - - if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then - sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" - echo "updated" - elif [ "$(grep -Ec "^# $var_name=" $config_path)" -gt 1 ]; then - sed -i -e "/^[#;] $var_name=$/i\\$var_name=$var_value" "$config_path" - echo "added first occurrence" - else - sed -i -e "/^[#;] $var_name=/s/.*/&\n$var_name=$var_value/" "$config_path" - echo "added" - fi - -} - -update_config_multiple_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - - var_value="${var_value%\"}" - var_value="${var_value#\"}" - - local IFS=, - local OPT_LIST=($var_value) - - for value in "${OPT_LIST[@]}"; do - update_config_var $config_path $var_name $value true - done -} - # Check prerequisites for MySQL database check_variables() { : ${DB_SERVER_HOST:="mysql-server"} @@ -225,21 +148,10 @@ prepare_web_server() { } prepare_zbx_web_config() { - local server_name="" - echo "** Preparing Zabbix frontend configuration file" - ZBX_WEB_CONFIG="$ZABBIX_ETC_DIR/web/zabbix.conf.php" - PHP_CONFIG_FILE="/etc/php-fpm.d/zabbix.conf" - update_config_var "$PHP_CONFIG_FILE" "php_value[max_execution_time]" "${ZBX_MAXEXECUTIONTIME:-"600"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[memory_limit]" "${ZBX_MEMORYLIMIT:-"128M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[post_max_size]" "${ZBX_POSTMAXSIZE:-"16M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[upload_max_filesize]" "${ZBX_UPLOADMAXFILESIZE:-"2M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[max_input_time]" "${ZBX_MAXINPUTTIME:-"300"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[date.timezone]" "${PHP_TZ}" - if [ "$(id -u)" == '0' ]; then echo "user = zabbix" >> "$PHP_CONFIG_FILE" echo "group = zabbix" >> "$PHP_CONFIG_FILE" @@ -247,22 +159,23 @@ prepare_zbx_web_config() { echo "listen.group = nginx" >> "$PHP_CONFIG_FILE" fi - # Escaping characters in parameter value - server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") - server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") - server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") + export ZBX_MAXEXECUTIONTIME=${ZBX_MAXEXECUTIONTIME:-"600"} + export ZBX_MEMORYLIMIT=${ZBX_MEMORYLIMIT:-"128M"} + export ZBX_POSTMAXSIZE=${ZBX_POSTMAXSIZE:-"16M"} + export ZBX_UPLOADMAXFILESIZE=${ZBX_UPLOADMAXFILESIZE:-"2M"} + export ZBX_MAXINPUTTIME=${ZBX_MAXINPUTTIME:-"300"} + export PHP_TZ=${PHP_TZ:-"Europe/Riga"} - sed -i \ - -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ - -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ - -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_SCHEMA}/${DB_SERVER_SCHEMA}/g" \ - -e "s/{DB_SERVER_USER}/$server_user/g" \ - -e "s/{DB_SERVER_PASS}/$server_pass/g" \ - -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ - -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ - -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ - "$ZBX_WEB_CONFIG" + export DB_SERVER_TYPE="MYSQL" + export DB_SERVER_HOST=${DB_SERVER_HOST} + export DB_SERVER_PORT=${DB_SERVER_PORT} + export DB_SERVER_DBNAME=${DB_SERVER_DBNAME} + export DB_SERVER_SCHEMA=${DB_SERVER_SCHEMA} + export DB_SERVER_USER=${DB_SERVER_ZBX_USER} + export DB_SERVER_PASS=${DB_SERVER_ZBX_PASS} + export ZBX_SERVER_HOST=${ZBX_SERVER_HOST} + export ZBX_SERVER_PORT=${ZBX_SERVER_PORT:-"10051"} + export ZBX_SERVER_NAME=${ZBX_SERVER_NAME} if [ "${ENABLE_WEB_ACCESS_LOG:-"true"}" == "false" ]; then sed -ri \ diff --git a/web-nginx-mysql/ubuntu/conf/etc/php/7.2/fpm/pool.d/zabbix.conf b/web-nginx-mysql/ubuntu/conf/etc/php/7.2/fpm/pool.d/zabbix.conf index a4926f4ae..1d19fd099 100644 --- a/web-nginx-mysql/ubuntu/conf/etc/php/7.2/fpm/pool.d/zabbix.conf +++ b/web-nginx-mysql/ubuntu/conf/etc/php/7.2/fpm/pool.d/zabbix.conf @@ -2,6 +2,8 @@ listen = /tmp/php-fpm.sock +clear_env = no + pm = dynamic pm.max_children = 50 pm.start_servers = 5 @@ -16,10 +18,10 @@ php_admin_flag[log_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session -php_value[max_execution_time]= 300 -php_value[memory_limit]= 128M -php_value[post_max_size]= 16M -php_value[upload_max_filesize]= 2M -php_value[max_input_time]= 300 -php_value[max_input_vars]= 10000 -; php_value[date.timezone]= Europe/Riga +php_value[max_execution_time] = ${ZBX_MAXEXECUTIONTIME} +php_value[memory_limit] = ${ZBX_MEMORYLIMIT} +php_value[post_max_size] = ${ZBX_POSTMAXSIZE} +php_value[upload_max_filesize] = ${ZBX_UPLOADMAXFILESIZE} +php_value[max_input_time] = ${ZBX_MAXINPUTTIME} +php_value[max_input_vars] = 10000 +php_value[date.timezone] = ${PHP_TZ} diff --git a/web-nginx-mysql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php b/web-nginx-mysql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php index 6cbd68590..d6f2ad0c8 100644 --- a/web-nginx-mysql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php +++ b/web-nginx-mysql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php @@ -2,19 +2,19 @@ // Zabbix GUI configuration file. global $DB; -$DB['TYPE'] = 'MYSQL'; -$DB['SERVER'] = '{DB_SERVER_HOST}'; -$DB['PORT'] = '{DB_SERVER_PORT}'; -$DB['DATABASE'] = '{DB_SERVER_DBNAME}'; -$DB['USER'] = '{DB_SERVER_USER}'; -$DB['PASSWORD'] = '{DB_SERVER_PASS}'; +$DB['TYPE'] = getenv('DB_SERVER_TYPE'); +$DB['SERVER'] = getenv('DB_SERVER_HOST'); +$DB['PORT'] = getenv('DB_SERVER_PORT'); +$DB['DATABASE'] = getenv('DB_SERVER_DBNAME'); +$DB['USER'] = getenv('DB_SERVER_USER'); +$DB['PASSWORD'] = getenv('DB_SERVER_PASS'); // Schema name. Used for IBM DB2 and PostgreSQL. -$DB['SCHEMA'] = '{DB_SERVER_SCHEMA}'; +$DB['SCHEMA'] = getenv('DB_SERVER_SCHEMA'); -$ZBX_SERVER = '{ZBX_SERVER_HOST}'; -$ZBX_SERVER_PORT = '{ZBX_SERVER_PORT}'; -$ZBX_SERVER_NAME = '{ZBX_SERVER_NAME}'; +$ZBX_SERVER = getenv('ZBX_SERVER_HOST'); +$ZBX_SERVER_PORT = getenv('ZBX_SERVER_PORT'); +$ZBX_SERVER_NAME = getenv('ZBX_SERVER_NAME'); $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG; ?> diff --git a/web-nginx-mysql/ubuntu/docker-entrypoint.sh b/web-nginx-mysql/ubuntu/docker-entrypoint.sh index dd6257e3f..a9690d521 100755 --- a/web-nginx-mysql/ubuntu/docker-entrypoint.sh +++ b/web-nginx-mysql/ubuntu/docker-entrypoint.sh @@ -59,83 +59,6 @@ file_env() { unset "$fileVar" } -escape_spec_char() { - local var_value=$1 - - var_value="${var_value//\\/\\\\}" - var_value="${var_value//[$'\n']/}" - var_value="${var_value//\//\\/}" - var_value="${var_value//./\\.}" - var_value="${var_value//\*/\\*}" - var_value="${var_value//^/\\^}" - var_value="${var_value//\$/\\\$}" - var_value="${var_value//\&/\\\&}" - var_value="${var_value//\[/\\[}" - var_value="${var_value//\]/\\]}" - - echo "$var_value" -} - -update_config_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - local is_multiple=$4 - - if [ ! -f "$config_path" ]; then - echo "**** Configuration file '$config_path' does not exist" - return - fi - - echo -n "** Updating '$config_path' parameter \"$var_name\": '$var_value'... " - - # Remove configuration parameter definition in case of unset parameter value - if [ -z "$var_value" ]; then - sed -i -e "/^$var_name=/d" "$config_path" - echo "removed" - return - fi - - # Remove value from configuration parameter in case of double quoted parameter value - if [ "$var_value" == '""' ]; then - sed -i -e "/^$var_name=/s/=.*/=/" "$config_path" - echo "undefined" - return - fi - - # Escaping characters in parameter value and name - var_value=$(escape_spec_char "$var_value") - var_name=$(escape_spec_char "$var_name") - - if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then - sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" - echo "updated" - elif [ "$(grep -Ec "^# $var_name=" $config_path)" -gt 1 ]; then - sed -i -e "/^[#;] $var_name=$/i\\$var_name=$var_value" "$config_path" - echo "added first occurrence" - else - sed -i -e "/^[#;] $var_name=/s/.*/&\n$var_name=$var_value/" "$config_path" - echo "added" - fi - -} - -update_config_multiple_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - - var_value="${var_value%\"}" - var_value="${var_value#\"}" - - local IFS=, - local OPT_LIST=($var_value) - - for value in "${OPT_LIST[@]}"; do - update_config_var $config_path $var_name $value true - done -} - # Check prerequisites for MySQL database check_variables() { : ${DB_SERVER_HOST:="mysql-server"} @@ -193,7 +116,7 @@ check_db_connect() { export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" while [ ! "$(mysqladmin ping -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} -u ${DB_SERVER_ROOT_USER} \ - --silent --connect_timeout=10)" ]; do + --silent --connect_timeout=10)" ]; do echo "**** MySQL server is not available. Waiting $WAIT_TIMEOUT seconds..." sleep $WAIT_TIMEOUT done @@ -225,21 +148,10 @@ prepare_web_server() { } prepare_zbx_web_config() { - local server_name="" - echo "** Preparing Zabbix frontend configuration file" - ZBX_WEB_CONFIG="$ZABBIX_ETC_DIR/web/zabbix.conf.php" - PHP_CONFIG_FILE="/etc/php/7.2/fpm/pool.d/zabbix.conf" - update_config_var "$PHP_CONFIG_FILE" "php_value[max_execution_time]" "${ZBX_MAXEXECUTIONTIME:-"600"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[memory_limit]" "${ZBX_MEMORYLIMIT:-"128M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[post_max_size]" "${ZBX_POSTMAXSIZE:-"16M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[upload_max_filesize]" "${ZBX_UPLOADMAXFILESIZE:-"2M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[max_input_time]" "${ZBX_MAXINPUTTIME:-"300"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[date.timezone]" "${PHP_TZ}" - if [ "$(id -u)" == '0' ]; then echo "user = zabbix" >> "$PHP_CONFIG_FILE" echo "group = zabbix" >> "$PHP_CONFIG_FILE" @@ -247,26 +159,23 @@ prepare_zbx_web_config() { echo "listen.group = nginx" >> "$PHP_CONFIG_FILE" fi - # Escaping characters in parameter value - server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") - server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") - server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") + export ZBX_MAXEXECUTIONTIME=${ZBX_MAXEXECUTIONTIME:-"600"} + export ZBX_MEMORYLIMIT=${ZBX_MEMORYLIMIT:-"128M"} + export ZBX_POSTMAXSIZE=${ZBX_POSTMAXSIZE:-"16M"} + export ZBX_UPLOADMAXFILESIZE=${ZBX_UPLOADMAXFILESIZE:-"2M"} + export ZBX_MAXINPUTTIME=${ZBX_MAXINPUTTIME:-"300"} + export PHP_TZ=${PHP_TZ:-"Europe/Riga"} - ZBX_DB_KEY_FILE=$(escape_spec_char "${ZBX_DB_KEY_FILE}") - ZBX_DB_CERT_FILE=$(escape_spec_char "${ZBX_DB_CERT_FILE}") - ZBX_DB_CA_FILE=$(escape_spec_char "${ZBX_DB_CA_FILE}") - - sed -i \ - -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ - -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ - -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_SCHEMA}/${DB_SERVER_SCHEMA}/g" \ - -e "s/{DB_SERVER_USER}/$server_user/g" \ - -e "s/{DB_SERVER_PASS}/$server_pass/g" \ - -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ - -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ - -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ - "$ZBX_WEB_CONFIG" + export DB_SERVER_TYPE="MYSQL" + export DB_SERVER_HOST=${DB_SERVER_HOST} + export DB_SERVER_PORT=${DB_SERVER_PORT} + export DB_SERVER_DBNAME=${DB_SERVER_DBNAME} + export DB_SERVER_SCHEMA=${DB_SERVER_SCHEMA} + export DB_SERVER_USER=${DB_SERVER_ZBX_USER} + export DB_SERVER_PASS=${DB_SERVER_ZBX_PASS} + export ZBX_SERVER_HOST=${ZBX_SERVER_HOST} + export ZBX_SERVER_PORT=${ZBX_SERVER_PORT:-"10051"} + export ZBX_SERVER_NAME=${ZBX_SERVER_NAME} if [ "${ENABLE_WEB_ACCESS_LOG:-"true"}" == "false" ]; then sed -ri \ diff --git a/web-nginx-pgsql/alpine/conf/etc/php7/php-fpm.d/zabbix.conf b/web-nginx-pgsql/alpine/conf/etc/php7/php-fpm.d/zabbix.conf index a4926f4ae..1d19fd099 100644 --- a/web-nginx-pgsql/alpine/conf/etc/php7/php-fpm.d/zabbix.conf +++ b/web-nginx-pgsql/alpine/conf/etc/php7/php-fpm.d/zabbix.conf @@ -2,6 +2,8 @@ listen = /tmp/php-fpm.sock +clear_env = no + pm = dynamic pm.max_children = 50 pm.start_servers = 5 @@ -16,10 +18,10 @@ php_admin_flag[log_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session -php_value[max_execution_time]= 300 -php_value[memory_limit]= 128M -php_value[post_max_size]= 16M -php_value[upload_max_filesize]= 2M -php_value[max_input_time]= 300 -php_value[max_input_vars]= 10000 -; php_value[date.timezone]= Europe/Riga +php_value[max_execution_time] = ${ZBX_MAXEXECUTIONTIME} +php_value[memory_limit] = ${ZBX_MEMORYLIMIT} +php_value[post_max_size] = ${ZBX_POSTMAXSIZE} +php_value[upload_max_filesize] = ${ZBX_UPLOADMAXFILESIZE} +php_value[max_input_time] = ${ZBX_MAXINPUTTIME} +php_value[max_input_vars] = 10000 +php_value[date.timezone] = ${PHP_TZ} diff --git a/web-nginx-pgsql/alpine/conf/etc/zabbix/web/zabbix.conf.php b/web-nginx-pgsql/alpine/conf/etc/zabbix/web/zabbix.conf.php index 73c991b18..d6f2ad0c8 100644 --- a/web-nginx-pgsql/alpine/conf/etc/zabbix/web/zabbix.conf.php +++ b/web-nginx-pgsql/alpine/conf/etc/zabbix/web/zabbix.conf.php @@ -2,19 +2,19 @@ // Zabbix GUI configuration file. global $DB; -$DB['TYPE'] = 'POSTGRESQL'; -$DB['SERVER'] = '{DB_SERVER_HOST}'; -$DB['PORT'] = '{DB_SERVER_PORT}'; -$DB['DATABASE'] = '{DB_SERVER_DBNAME}'; -$DB['USER'] = '{DB_SERVER_USER}'; -$DB['PASSWORD'] = '{DB_SERVER_PASS}'; +$DB['TYPE'] = getenv('DB_SERVER_TYPE'); +$DB['SERVER'] = getenv('DB_SERVER_HOST'); +$DB['PORT'] = getenv('DB_SERVER_PORT'); +$DB['DATABASE'] = getenv('DB_SERVER_DBNAME'); +$DB['USER'] = getenv('DB_SERVER_USER'); +$DB['PASSWORD'] = getenv('DB_SERVER_PASS'); // Schema name. Used for IBM DB2 and PostgreSQL. -$DB['SCHEMA'] = '{DB_SERVER_SCHEMA}'; +$DB['SCHEMA'] = getenv('DB_SERVER_SCHEMA'); -$ZBX_SERVER = '{ZBX_SERVER_HOST}'; -$ZBX_SERVER_PORT = '{ZBX_SERVER_PORT}'; -$ZBX_SERVER_NAME = '{ZBX_SERVER_NAME}'; +$ZBX_SERVER = getenv('ZBX_SERVER_HOST'); +$ZBX_SERVER_PORT = getenv('ZBX_SERVER_PORT'); +$ZBX_SERVER_NAME = getenv('ZBX_SERVER_NAME'); $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG; ?> diff --git a/web-nginx-pgsql/alpine/docker-entrypoint.sh b/web-nginx-pgsql/alpine/docker-entrypoint.sh index 9cfe65d22..9d23ebf88 100755 --- a/web-nginx-pgsql/alpine/docker-entrypoint.sh +++ b/web-nginx-pgsql/alpine/docker-entrypoint.sh @@ -59,83 +59,6 @@ file_env() { unset "$fileVar" } -escape_spec_char() { - local var_value=$1 - - var_value="${var_value//\\/\\\\}" - var_value="${var_value//[$'\n']/}" - var_value="${var_value//\//\\/}" - var_value="${var_value//./\\.}" - var_value="${var_value//\*/\\*}" - var_value="${var_value//^/\\^}" - var_value="${var_value//\$/\\\$}" - var_value="${var_value//\&/\\\&}" - var_value="${var_value//\[/\\[}" - var_value="${var_value//\]/\\]}" - - echo "$var_value" -} - -update_config_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - local is_multiple=$4 - - if [ ! -f "$config_path" ]; then - echo "**** Configuration file '$config_path' does not exist" - return - fi - - echo -n "** Updating '$config_path' parameter \"$var_name\": '$var_value'... " - - # Remove configuration parameter definition in case of unset parameter value - if [ -z "$var_value" ]; then - sed -i -e "/^$var_name=/d" "$config_path" - echo "removed" - return - fi - - # Remove value from configuration parameter in case of double quoted parameter value - if [ "$var_value" == '""' ]; then - sed -i -e "/^$var_name=/s/=.*/=/" "$config_path" - echo "undefined" - return - fi - - # Escaping characters in parameter value and name - var_value=$(escape_spec_char "$var_value") - var_name=$(escape_spec_char "$var_name") - - if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then - sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" - echo "updated" - elif [ "$(grep -Ec "^# $var_name=" $config_path)" -gt 1 ]; then - sed -i -e "/^[#;] $var_name=$/i\\$var_name=$var_value" "$config_path" - echo "added first occurrence" - else - sed -i -e "/^[#;] $var_name=/s/.*/&\n$var_name=$var_value/" "$config_path" - echo "added" - fi - -} - -update_config_multiple_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - - var_value="${var_value%\"}" - var_value="${var_value#\"}" - - local IFS=, - local OPT_LIST=($var_value) - - for value in "${OPT_LIST[@]}"; do - update_config_var $config_path $var_name $value true - done -} - # Check prerequisites for PostgreSQL database check_variables() { file_env POSTGRES_USER @@ -221,21 +144,10 @@ prepare_web_server() { } prepare_zbx_web_config() { - local server_name="" - echo "** Preparing Zabbix frontend configuration file" - ZBX_WEB_CONFIG="$ZABBIX_ETC_DIR/web/zabbix.conf.php" - PHP_CONFIG_FILE="/etc/php7/php-fpm.d/zabbix.conf" - update_config_var "$PHP_CONFIG_FILE" "php_value[max_execution_time]" "${ZBX_MAXEXECUTIONTIME:-"600"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[memory_limit]" "${ZBX_MEMORYLIMIT:-"128M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[post_max_size]" "${ZBX_POSTMAXSIZE:-"16M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[upload_max_filesize]" "${ZBX_UPLOADMAXFILESIZE:-"2M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[max_input_time]" "${ZBX_MAXINPUTTIME:-"300"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[date.timezone]" "${PHP_TZ}" - if [ "$(id -u)" == '0' ]; then echo "user = zabbix" >> "$PHP_CONFIG_FILE" echo "group = zabbix" >> "$PHP_CONFIG_FILE" @@ -243,22 +155,23 @@ prepare_zbx_web_config() { echo "listen.group = nginx" >> "$PHP_CONFIG_FILE" fi - # Escaping characters in parameter value - server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") - server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") - server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") + export ZBX_MAXEXECUTIONTIME=${ZBX_MAXEXECUTIONTIME:-"600"} + export ZBX_MEMORYLIMIT=${ZBX_MEMORYLIMIT:-"128M"} + export ZBX_POSTMAXSIZE=${ZBX_POSTMAXSIZE:-"16M"} + export ZBX_UPLOADMAXFILESIZE=${ZBX_UPLOADMAXFILESIZE:-"2M"} + export ZBX_MAXINPUTTIME=${ZBX_MAXINPUTTIME:-"300"} + export PHP_TZ=${PHP_TZ:-"Europe/Riga"} - sed -i \ - -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ - -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ - -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_SCHEMA}/${DB_SERVER_SCHEMA}/g" \ - -e "s/{DB_SERVER_USER}/$server_user/g" \ - -e "s/{DB_SERVER_PASS}/$server_pass/g" \ - -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ - -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ - -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ - "$ZBX_WEB_CONFIG" + export DB_SERVER_TYPE="POSTGRESQL" + export DB_SERVER_HOST=${DB_SERVER_HOST} + export DB_SERVER_PORT=${DB_SERVER_PORT} + export DB_SERVER_DBNAME=${DB_SERVER_DBNAME} + export DB_SERVER_SCHEMA=${DB_SERVER_SCHEMA} + export DB_SERVER_USER=${DB_SERVER_ZBX_USER} + export DB_SERVER_PASS=${DB_SERVER_ZBX_PASS} + export ZBX_SERVER_HOST=${ZBX_SERVER_HOST} + export ZBX_SERVER_PORT=${ZBX_SERVER_PORT:-"10051"} + export ZBX_SERVER_NAME=${ZBX_SERVER_NAME} if [ "${ENABLE_WEB_ACCESS_LOG:-"true"}" == "false" ]; then sed -ri \ diff --git a/web-nginx-pgsql/centos/conf/etc/php-fpm.d/zabbix.conf b/web-nginx-pgsql/centos/conf/etc/php-fpm.d/zabbix.conf index a4926f4ae..1d19fd099 100644 --- a/web-nginx-pgsql/centos/conf/etc/php-fpm.d/zabbix.conf +++ b/web-nginx-pgsql/centos/conf/etc/php-fpm.d/zabbix.conf @@ -2,6 +2,8 @@ listen = /tmp/php-fpm.sock +clear_env = no + pm = dynamic pm.max_children = 50 pm.start_servers = 5 @@ -16,10 +18,10 @@ php_admin_flag[log_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session -php_value[max_execution_time]= 300 -php_value[memory_limit]= 128M -php_value[post_max_size]= 16M -php_value[upload_max_filesize]= 2M -php_value[max_input_time]= 300 -php_value[max_input_vars]= 10000 -; php_value[date.timezone]= Europe/Riga +php_value[max_execution_time] = ${ZBX_MAXEXECUTIONTIME} +php_value[memory_limit] = ${ZBX_MEMORYLIMIT} +php_value[post_max_size] = ${ZBX_POSTMAXSIZE} +php_value[upload_max_filesize] = ${ZBX_UPLOADMAXFILESIZE} +php_value[max_input_time] = ${ZBX_MAXINPUTTIME} +php_value[max_input_vars] = 10000 +php_value[date.timezone] = ${PHP_TZ} diff --git a/web-nginx-pgsql/centos/conf/etc/zabbix/web/zabbix.conf.php b/web-nginx-pgsql/centos/conf/etc/zabbix/web/zabbix.conf.php index 73c991b18..d6f2ad0c8 100644 --- a/web-nginx-pgsql/centos/conf/etc/zabbix/web/zabbix.conf.php +++ b/web-nginx-pgsql/centos/conf/etc/zabbix/web/zabbix.conf.php @@ -2,19 +2,19 @@ // Zabbix GUI configuration file. global $DB; -$DB['TYPE'] = 'POSTGRESQL'; -$DB['SERVER'] = '{DB_SERVER_HOST}'; -$DB['PORT'] = '{DB_SERVER_PORT}'; -$DB['DATABASE'] = '{DB_SERVER_DBNAME}'; -$DB['USER'] = '{DB_SERVER_USER}'; -$DB['PASSWORD'] = '{DB_SERVER_PASS}'; +$DB['TYPE'] = getenv('DB_SERVER_TYPE'); +$DB['SERVER'] = getenv('DB_SERVER_HOST'); +$DB['PORT'] = getenv('DB_SERVER_PORT'); +$DB['DATABASE'] = getenv('DB_SERVER_DBNAME'); +$DB['USER'] = getenv('DB_SERVER_USER'); +$DB['PASSWORD'] = getenv('DB_SERVER_PASS'); // Schema name. Used for IBM DB2 and PostgreSQL. -$DB['SCHEMA'] = '{DB_SERVER_SCHEMA}'; +$DB['SCHEMA'] = getenv('DB_SERVER_SCHEMA'); -$ZBX_SERVER = '{ZBX_SERVER_HOST}'; -$ZBX_SERVER_PORT = '{ZBX_SERVER_PORT}'; -$ZBX_SERVER_NAME = '{ZBX_SERVER_NAME}'; +$ZBX_SERVER = getenv('ZBX_SERVER_HOST'); +$ZBX_SERVER_PORT = getenv('ZBX_SERVER_PORT'); +$ZBX_SERVER_NAME = getenv('ZBX_SERVER_NAME'); $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG; ?> diff --git a/web-nginx-pgsql/centos/docker-entrypoint.sh b/web-nginx-pgsql/centos/docker-entrypoint.sh index 88b4e850d..36a67516f 100755 --- a/web-nginx-pgsql/centos/docker-entrypoint.sh +++ b/web-nginx-pgsql/centos/docker-entrypoint.sh @@ -59,83 +59,6 @@ file_env() { unset "$fileVar" } -escape_spec_char() { - local var_value=$1 - - var_value="${var_value//\\/\\\\}" - var_value="${var_value//[$'\n']/}" - var_value="${var_value//\//\\/}" - var_value="${var_value//./\\.}" - var_value="${var_value//\*/\\*}" - var_value="${var_value//^/\\^}" - var_value="${var_value//\$/\\\$}" - var_value="${var_value//\&/\\\&}" - var_value="${var_value//\[/\\[}" - var_value="${var_value//\]/\\]}" - - echo "$var_value" -} - -update_config_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - local is_multiple=$4 - - if [ ! -f "$config_path" ]; then - echo "**** Configuration file '$config_path' does not exist" - return - fi - - echo -n "** Updating '$config_path' parameter \"$var_name\": '$var_value'... " - - # Remove configuration parameter definition in case of unset parameter value - if [ -z "$var_value" ]; then - sed -i -e "/^$var_name=/d" "$config_path" - echo "removed" - return - fi - - # Remove value from configuration parameter in case of double quoted parameter value - if [ "$var_value" == '""' ]; then - sed -i -e "/^$var_name=/s/=.*/=/" "$config_path" - echo "undefined" - return - fi - - # Escaping characters in parameter value and name - var_value=$(escape_spec_char "$var_value") - var_name=$(escape_spec_char "$var_name") - - if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then - sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" - echo "updated" - elif [ "$(grep -Ec "^# $var_name=" $config_path)" -gt 1 ]; then - sed -i -e "/^[#;] $var_name=$/i\\$var_name=$var_value" "$config_path" - echo "added first occurrence" - else - sed -i -e "/^[#;] $var_name=/s/.*/&\n$var_name=$var_value/" "$config_path" - echo "added" - fi - -} - -update_config_multiple_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - - var_value="${var_value%\"}" - var_value="${var_value#\"}" - - local IFS=, - local OPT_LIST=($var_value) - - for value in "${OPT_LIST[@]}"; do - update_config_var $config_path $var_name $value true - done -} - # Check prerequisites for PostgreSQL database check_variables() { file_env POSTGRES_USER @@ -221,20 +144,9 @@ prepare_web_server() { } prepare_zbx_web_config() { - local server_name="" - echo "** Preparing Zabbix frontend configuration file" - ZBX_WEB_CONFIG="$ZABBIX_ETC_DIR/web/zabbix.conf.php" - - PHP_CONFIG_FILE="/etc/php-fpm.d/zabbix.conf" - - update_config_var "$PHP_CONFIG_FILE" "php_value[max_execution_time]" "${ZBX_MAXEXECUTIONTIME:-"600"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[memory_limit]" "${ZBX_MEMORYLIMIT:-"128M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[post_max_size]" "${ZBX_POSTMAXSIZE:-"16M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[upload_max_filesize]" "${ZBX_UPLOADMAXFILESIZE:-"2M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[max_input_time]" "${ZBX_MAXINPUTTIME:-"300"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[date.timezone]" "${PHP_TZ}" + ZPHP_CONFIG_FILE="/etc/php-fpm.d/zabbix.conf" if [ "$(id -u)" == '0' ]; then echo "user = zabbix" >> "$PHP_CONFIG_FILE" @@ -243,22 +155,23 @@ prepare_zbx_web_config() { echo "listen.group = nginx" >> "$PHP_CONFIG_FILE" fi - # Escaping characters in parameter value - server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") - server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") - server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") + export ZBX_MAXEXECUTIONTIME=${ZBX_MAXEXECUTIONTIME:-"600"} + export ZBX_MEMORYLIMIT=${ZBX_MEMORYLIMIT:-"128M"} + export ZBX_POSTMAXSIZE=${ZBX_POSTMAXSIZE:-"16M"} + export ZBX_UPLOADMAXFILESIZE=${ZBX_UPLOADMAXFILESIZE:-"2M"} + export ZBX_MAXINPUTTIME=${ZBX_MAXINPUTTIME:-"300"} + export PHP_TZ=${PHP_TZ:-"Europe/Riga"} - sed -i \ - -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ - -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ - -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_SCHEMA}/${DB_SERVER_SCHEMA}/g" \ - -e "s/{DB_SERVER_USER}/$server_user/g" \ - -e "s/{DB_SERVER_PASS}/$server_pass/g" \ - -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ - -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ - -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ - "$ZBX_WEB_CONFIG" + export DB_SERVER_TYPE="POSTGRESQL" + export DB_SERVER_HOST=${DB_SERVER_HOST} + export DB_SERVER_PORT=${DB_SERVER_PORT} + export DB_SERVER_DBNAME=${DB_SERVER_DBNAME} + export DB_SERVER_SCHEMA=${DB_SERVER_SCHEMA} + export DB_SERVER_USER=${DB_SERVER_ZBX_USER} + export DB_SERVER_PASS=${DB_SERVER_ZBX_PASS} + export ZBX_SERVER_HOST=${ZBX_SERVER_HOST} + export ZBX_SERVER_PORT=${ZBX_SERVER_PORT:-"10051"} + export ZBX_SERVER_NAME=${ZBX_SERVER_NAME} if [ "${ENABLE_WEB_ACCESS_LOG:-"true"}" == "false" ]; then sed -ri \ diff --git a/web-nginx-pgsql/ubuntu/conf/etc/php/7.2/fpm/pool.d/zabbix.conf b/web-nginx-pgsql/ubuntu/conf/etc/php/7.2/fpm/pool.d/zabbix.conf index a4926f4ae..1d19fd099 100644 --- a/web-nginx-pgsql/ubuntu/conf/etc/php/7.2/fpm/pool.d/zabbix.conf +++ b/web-nginx-pgsql/ubuntu/conf/etc/php/7.2/fpm/pool.d/zabbix.conf @@ -2,6 +2,8 @@ listen = /tmp/php-fpm.sock +clear_env = no + pm = dynamic pm.max_children = 50 pm.start_servers = 5 @@ -16,10 +18,10 @@ php_admin_flag[log_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session -php_value[max_execution_time]= 300 -php_value[memory_limit]= 128M -php_value[post_max_size]= 16M -php_value[upload_max_filesize]= 2M -php_value[max_input_time]= 300 -php_value[max_input_vars]= 10000 -; php_value[date.timezone]= Europe/Riga +php_value[max_execution_time] = ${ZBX_MAXEXECUTIONTIME} +php_value[memory_limit] = ${ZBX_MEMORYLIMIT} +php_value[post_max_size] = ${ZBX_POSTMAXSIZE} +php_value[upload_max_filesize] = ${ZBX_UPLOADMAXFILESIZE} +php_value[max_input_time] = ${ZBX_MAXINPUTTIME} +php_value[max_input_vars] = 10000 +php_value[date.timezone] = ${PHP_TZ} diff --git a/web-nginx-pgsql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php b/web-nginx-pgsql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php index 73c991b18..d6f2ad0c8 100644 --- a/web-nginx-pgsql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php +++ b/web-nginx-pgsql/ubuntu/conf/etc/zabbix/web/zabbix.conf.php @@ -2,19 +2,19 @@ // Zabbix GUI configuration file. global $DB; -$DB['TYPE'] = 'POSTGRESQL'; -$DB['SERVER'] = '{DB_SERVER_HOST}'; -$DB['PORT'] = '{DB_SERVER_PORT}'; -$DB['DATABASE'] = '{DB_SERVER_DBNAME}'; -$DB['USER'] = '{DB_SERVER_USER}'; -$DB['PASSWORD'] = '{DB_SERVER_PASS}'; +$DB['TYPE'] = getenv('DB_SERVER_TYPE'); +$DB['SERVER'] = getenv('DB_SERVER_HOST'); +$DB['PORT'] = getenv('DB_SERVER_PORT'); +$DB['DATABASE'] = getenv('DB_SERVER_DBNAME'); +$DB['USER'] = getenv('DB_SERVER_USER'); +$DB['PASSWORD'] = getenv('DB_SERVER_PASS'); // Schema name. Used for IBM DB2 and PostgreSQL. -$DB['SCHEMA'] = '{DB_SERVER_SCHEMA}'; +$DB['SCHEMA'] = getenv('DB_SERVER_SCHEMA'); -$ZBX_SERVER = '{ZBX_SERVER_HOST}'; -$ZBX_SERVER_PORT = '{ZBX_SERVER_PORT}'; -$ZBX_SERVER_NAME = '{ZBX_SERVER_NAME}'; +$ZBX_SERVER = getenv('ZBX_SERVER_HOST'); +$ZBX_SERVER_PORT = getenv('ZBX_SERVER_PORT'); +$ZBX_SERVER_NAME = getenv('ZBX_SERVER_NAME'); $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG; ?> diff --git a/web-nginx-pgsql/ubuntu/docker-entrypoint.sh b/web-nginx-pgsql/ubuntu/docker-entrypoint.sh index 4223377a1..39e12e6b6 100755 --- a/web-nginx-pgsql/ubuntu/docker-entrypoint.sh +++ b/web-nginx-pgsql/ubuntu/docker-entrypoint.sh @@ -59,83 +59,6 @@ file_env() { unset "$fileVar" } -escape_spec_char() { - local var_value=$1 - - var_value="${var_value//\\/\\\\}" - var_value="${var_value//[$'\n']/}" - var_value="${var_value//\//\\/}" - var_value="${var_value//./\\.}" - var_value="${var_value//\*/\\*}" - var_value="${var_value//^/\\^}" - var_value="${var_value//\$/\\\$}" - var_value="${var_value//\&/\\\&}" - var_value="${var_value//\[/\\[}" - var_value="${var_value//\]/\\]}" - - echo "$var_value" -} - -update_config_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - local is_multiple=$4 - - if [ ! -f "$config_path" ]; then - echo "**** Configuration file '$config_path' does not exist" - return - fi - - echo -n "** Updating '$config_path' parameter \"$var_name\": '$var_value'... " - - # Remove configuration parameter definition in case of unset parameter value - if [ -z "$var_value" ]; then - sed -i -e "/^$var_name=/d" "$config_path" - echo "removed" - return - fi - - # Remove value from configuration parameter in case of double quoted parameter value - if [ "$var_value" == '""' ]; then - sed -i -e "/^$var_name=/s/=.*/=/" "$config_path" - echo "undefined" - return - fi - - # Escaping characters in parameter value and name - var_value=$(escape_spec_char "$var_value") - var_name=$(escape_spec_char "$var_name") - - if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then - sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" - echo "updated" - elif [ "$(grep -Ec "^# $var_name=" $config_path)" -gt 1 ]; then - sed -i -e "/^[#;] $var_name=$/i\\$var_name=$var_value" "$config_path" - echo "added first occurrence" - else - sed -i -e "/^[#;] $var_name=/s/.*/&\n$var_name=$var_value/" "$config_path" - echo "added" - fi - -} - -update_config_multiple_var() { - local config_path=$1 - local var_name=$2 - local var_value=$3 - - var_value="${var_value%\"}" - var_value="${var_value#\"}" - - local IFS=, - local OPT_LIST=($var_value) - - for value in "${OPT_LIST[@]}"; do - update_config_var $config_path $var_name $value true - done -} - # Check prerequisites for PostgreSQL database check_variables() { file_env POSTGRES_USER @@ -221,21 +144,10 @@ prepare_web_server() { } prepare_zbx_web_config() { - local server_name="" - echo "** Preparing Zabbix frontend configuration file" - ZBX_WEB_CONFIG="$ZABBIX_ETC_DIR/web/zabbix.conf.php" - PHP_CONFIG_FILE="/etc/php/7.2/fpm/pool.d/zabbix.conf" - update_config_var "$PHP_CONFIG_FILE" "php_value[max_execution_time]" "${ZBX_MAXEXECUTIONTIME:-"600"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[memory_limit]" "${ZBX_MEMORYLIMIT:-"128M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[post_max_size]" "${ZBX_POSTMAXSIZE:-"16M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[upload_max_filesize]" "${ZBX_UPLOADMAXFILESIZE:-"2M"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[max_input_time]" "${ZBX_MAXINPUTTIME:-"300"}" - update_config_var "$PHP_CONFIG_FILE" "php_value[date.timezone]" "${PHP_TZ}" - if [ "$(id -u)" == '0' ]; then echo "user = zabbix" >> "$PHP_CONFIG_FILE" echo "group = zabbix" >> "$PHP_CONFIG_FILE" @@ -243,26 +155,23 @@ prepare_zbx_web_config() { echo "listen.group = nginx" >> "$PHP_CONFIG_FILE" fi - # Escaping characters in parameter value - server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") - server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") - server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") + export ZBX_MAXEXECUTIONTIME=${ZBX_MAXEXECUTIONTIME:-"600"} + export ZBX_MEMORYLIMIT=${ZBX_MEMORYLIMIT:-"128M"} + export ZBX_POSTMAXSIZE=${ZBX_POSTMAXSIZE:-"16M"} + export ZBX_UPLOADMAXFILESIZE=${ZBX_UPLOADMAXFILESIZE:-"2M"} + export ZBX_MAXINPUTTIME=${ZBX_MAXINPUTTIME:-"300"} + export PHP_TZ=${PHP_TZ:-"Europe/Riga"} - ZBX_DB_KEY_FILE=$(escape_spec_char "${ZBX_DB_KEY_FILE}") - ZBX_DB_CERT_FILE=$(escape_spec_char "${ZBX_DB_CERT_FILE}") - ZBX_DB_CA_FILE=$(escape_spec_char "${ZBX_DB_CA_FILE}") - - sed -i \ - -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ - -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ - -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_SCHEMA}/${DB_SERVER_SCHEMA}/g" \ - -e "s/{DB_SERVER_USER}/$server_user/g" \ - -e "s/{DB_SERVER_PASS}/$server_pass/g" \ - -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ - -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ - -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ - "$ZBX_WEB_CONFIG" + export DB_SERVER_TYPE="POSTGRESQL" + export DB_SERVER_HOST=${DB_SERVER_HOST} + export DB_SERVER_PORT=${DB_SERVER_PORT} + export DB_SERVER_DBNAME=${DB_SERVER_DBNAME} + export DB_SERVER_SCHEMA=${DB_SERVER_SCHEMA} + export DB_SERVER_USER=${DB_SERVER_ZBX_USER} + export DB_SERVER_PASS=${DB_SERVER_ZBX_PASS} + export ZBX_SERVER_HOST=${ZBX_SERVER_HOST} + export ZBX_SERVER_PORT=${ZBX_SERVER_PORT:-"10051"} + export ZBX_SERVER_NAME=${ZBX_SERVER_NAME} if [ "${ENABLE_WEB_ACCESS_LOG:-"true"}" == "false" ]; then sed -ri \ From f926119e0a5dd61ea3f9c1e927528b378856e84c Mon Sep 17 00:00:00 2001 From: Alexey Pustovalov Date: Thu, 10 Sep 2020 21:07:00 +0300 Subject: [PATCH 2/2] Use env variables in Zabbix web images --- web-nginx-pgsql/centos/docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-nginx-pgsql/centos/docker-entrypoint.sh b/web-nginx-pgsql/centos/docker-entrypoint.sh index 36a67516f..ffdc8ef14 100755 --- a/web-nginx-pgsql/centos/docker-entrypoint.sh +++ b/web-nginx-pgsql/centos/docker-entrypoint.sh @@ -146,7 +146,7 @@ prepare_web_server() { prepare_zbx_web_config() { echo "** Preparing Zabbix frontend configuration file" - ZPHP_CONFIG_FILE="/etc/php-fpm.d/zabbix.conf" + PHP_CONFIG_FILE="/etc/php-fpm.d/zabbix.conf" if [ "$(id -u)" == '0' ]; then echo "user = zabbix" >> "$PHP_CONFIG_FILE"