Skip to content

Commit a180d28

Browse files
authored
Improve update speed due optimasation (hestiacp#2697)
* Change order * Improve update script * Improve general speed * Undo changes * Don't restart all php version if you only need reload 1 or 2 With more php version active restarting takes a alot of time: By checking what php version need to get an update it will not restart the php version you don't need * Fix typo * Update v-delete-web-domain-backend * Change order rebuild an update config value * Make sure to reset the correct version when default it used
1 parent ef88a79 commit a180d28

10 files changed

+88
-29
lines changed

bin/v-add-web-domain-backend

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ fi
8484
#----------------------------------------------------------#
8585

8686
# Restart backend server
87-
$BIN/v-restart-web-backend "$restart"
87+
$BIN/v-restart-web-backend "$restart" "$backend_version"
8888
check_result $? "Web backend restart failed" >/dev/null
8989

9090
# Logging

bin/v-change-mail-domain-rate-limit

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ if [[ "$rate" = "system" ]]; then
6262
rate=''
6363
fi
6464

65-
$HESTIA/bin/v-rebuild-mail-domain "$user" "$domain"
6665
# Update quota
6766
update_object_value "mail" 'DOMAIN' "$domain" '$RATE_LIMIT' "$rate"
67+
$HESTIA/bin/v-rebuild-mail-domain "$user" "$domain"
6868

6969
# Logging
7070
$BIN/v-log-action "$user" "Info" "Mail" "Mail domain rate limit has changed ($rate)"

bin/v-change-web-domain-backend-tpl

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,18 @@ fi
165165
$BIN/v-restart-web "$restart"
166166
check_result $? "Web restart failed" >/dev/null
167167

168-
$BIN/v-restart-web-backend "$restart"
168+
# Detect prev version
169+
if [[ $BACKEND =~ ^.*PHP-([0-9])\_([0-9])$ ]]; then
170+
version="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}"
171+
else
172+
version=$(multiphp_default_version)
173+
fi
174+
175+
$BIN/v-restart-web-backend "$restart" "$version"
176+
if [ "$version" != "$backend_version" ]; then
177+
$BIN/v-restart-web-backend "$restart" "$backend_version"
178+
fi
179+
169180
check_result $? "Web backend restart failed" >/dev/null
170181

171182
# Logging

bin/v-change-web-domain-docroot

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ domain=$2
2626
export target_domain=$3
2727
export target_directory=$4
2828
export php=$5
29+
restart=$6
2930

3031
# Includes
3132
# shellcheck source=/etc/hestiacp/hestia.conf
@@ -44,15 +45,15 @@ format_domain
4445
# Verifications #
4546
#----------------------------------------------------------#
4647

47-
check_args '2' "$#" 'USER DOMAIN TARGET_DOMAIN [DIRECTORY]'
48+
check_args '2' "$#" 'USER DOMAIN [TARGET_DOMAIN] [DIRECTORY] [PHP-DOCROOT] [RESTART]'
4849
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
4950
# Check to ensure that target domain is valid if we're
5051
# not setting the docroot value back to defaults
5152
if [ "$target_domain" != "default" ]; then
52-
is_format_valid 'user' 'domain' 'target_domain'
53+
is_format_valid 'user' 'domain' 'target_domain' 'restart'
5354
is_object_valid 'web' 'DOMAIN' "$target_domain"
5455
else
55-
is_format_valid 'user' 'domain'
56+
is_format_valid 'user' 'domain' 'restart'
5657
fi
5758
is_object_valid 'user' 'USER' "$user" "$user"
5859
is_object_unsuspended 'user' 'USER' "$user"
@@ -121,7 +122,7 @@ fi
121122
#----------------------------------------------------------#
122123

123124
# Rebuild domain configuration
124-
$BIN/v-rebuild-web-domain "$user" "$domain"
125+
$BIN/v-rebuild-web-domain "$user" "$domain" "$restart"
125126

126127
# Logging
127128
if [ "$target_domain" = "default" ]; then

bin/v-delete-web-domain

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ check_hestia_demo_mode
5858
get_domain_values 'web'
5959
local_ip=$(get_real_ip "$IP")
6060

61+
62+
6163
# Deleting ftp users
6264
if [ -n "$FTP_USER" ]; then
6365
for ftp_user in ${FTP_USER//:/ }; do
@@ -138,8 +140,15 @@ if [ -n "$SUSPENDED" ]; then
138140
fi
139141
fi
140142

141-
# Restarting web server
142-
$BIN/v-restart-web "$restart"
143+
# Detect php version
144+
145+
if [[ $BACKEND =~ ^.*PHP-([0-9])\_([0-9])$ ]]; then
146+
version="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}"
147+
else
148+
version=$(multiphp_default_version)
149+
fi
150+
# Restarting backend server
151+
$BIN/v-restart-web-backend "$restart" "$version"
143152
check_result $? "Web restart failed" >/dev/null
144153

145154
# Restarting proxy server

bin/v-delete-web-domain-backend

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ check_hestia_demo_mode
4949
# Action #
5050
#----------------------------------------------------------#
5151

52+
get_domain_values 'web'
53+
BACKEND="$template"
54+
55+
5256
# Defining pool directory
5357
pool=$(find -L /etc/php/ -name "$domain.conf" -exec dirname {} \;)
5458
if [ ! -e "$pool" ]; then
@@ -77,8 +81,15 @@ delete_web_backend
7781
# Hestia #
7882
#----------------------------------------------------------#
7983

84+
85+
# Detect prev version
86+
if [[ $BACKEND =~ ^.*PHP-([0-9])\_([0-9])$ ]]; then
87+
version="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}"
88+
else
89+
version=$(multiphp_default_version)
90+
fi
8091
# Restarting backend server
81-
$BIN/v-restart-web-backend "$restart"
92+
$BIN/v-restart-web-backend "$restart" "$version"
8293
check_result $? "Backend restart failed" >/dev/null
8394

8495
# Logging

bin/v-restart-web-backend

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
#
77
# This function reloads backend server configuration.
88

9+
restart=$1
10+
# For backward compatibility might change in the feature
11+
version=$2
12+
913
#----------------------------------------------------------#
1014
# Variables & Functions #
1115
#----------------------------------------------------------#
@@ -47,20 +51,30 @@ if [ "$1" = 'scheduled' ] || [ -z "$1" ] && [ "$SCHEDULED_RESTART" = 'yes' ]; th
4751
fi
4852

4953
tmpfile=$(mktemp)
50-
# Substitute php-fpm service name formats
51-
for version in $($BIN/v-list-sys-php plain); do
52-
v_php="php$version-fpm"
53-
if [ ! -f "/etc/php/${version}/fpm/pool.d/dummy.conf" ]; then
54-
cp -f "$HESTIA_INSTALL_DIR/php-fpm/dummy.conf" "/etc/php/${version}/fpm/pool.d/"
55-
sed -i "s/9999/99${version//.}/g" "/etc/php/${version}/fpm/pool.d/dummy.conf"
56-
fi
5754

58-
$BIN/v-restart-service "$v_php" "$1" >> $tmpfile 2>&1
55+
if [ -z "$version" ]; then
56+
# Substitute php-fpm service name formats
57+
for version in $($BIN/v-list-sys-php plain); do
58+
v_php="php$version-fpm"
59+
if [ ! -f "/etc/php/${version}/fpm/pool.d/dummy.conf" ]; then
60+
cp -f "$HESTIA_INSTALL_DIR/php-fpm/dummy.conf" "/etc/php/${version}/fpm/pool.d/"
61+
sed -i "s/9999/99${version//.}/g" "/etc/php/${version}/fpm/pool.d/dummy.conf"
62+
fi
63+
64+
$BIN/v-restart-service "$v_php" "$restart"
65+
if [ $? -ne 0 ]; then
66+
send_email_report
67+
check_result "$E_RESTART" "$v_php restart failed"
68+
fi
69+
done
70+
else
71+
v_php="php$version-fpm"
72+
$BIN/v-restart-service "$v_php" "$restart"
5973
if [ $? -ne 0 ]; then
6074
send_email_report
6175
check_result "$E_RESTART" "$v_php restart failed"
6276
fi
63-
done
77+
fi
6478

6579
# Update restart queue
6680
if [ -e "$HESTIA/data/queue/restart.pipe" ]; then

func/syshealth.sh

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -464,19 +464,31 @@ function syshealth_repair_system_config() {
464464
$BIN/v-change-sys-config-value "POLICY_CSRF_STRICTNESS" "1"
465465
fi
466466

467-
mv $HESTIA/conf/hestia.conf $HESTIA/conf/hestia.old.conf
468-
touch $HESTIA/conf/hestia.conf
467+
touch $HESTIA/conf/hestia.conf.new
469468
while IFS='= ' read -r lhs rhs
470469
do
471470
if [[ ! $lhs =~ ^\ *# && -n $lhs ]]; then
472471
rhs="${rhs%%^\#*}" # Del in line right comments
473472
rhs="${rhs%%*( )}" # Del trailing spaces
474473
rhs="${rhs%\'*}" # Del opening string quotes
475474
rhs="${rhs#\'*}" # Del closing string quotes
476-
$BIN/v-change-sys-config-value "$lhs" "$rhs"
475+
477476
fi
478-
done < $HESTIA/conf/hestia.old.conf
479-
rm $HESTIA/conf/hestia.old.conf
477+
check_ckey=$(grep "^$lhs='" "$HESTIA/conf/hestia.conf.new")
478+
if [ -z "$check_ckey" ]; then
479+
echo "$lhs='$rhs'" >> "$HESTIA/conf/hestia.conf.new"
480+
else
481+
sed -i "s|^$lhs=.*|$lhs='$rhs'|g" "$HESTIA/conf/hestia.conf.new"
482+
fi
483+
done < $HESTIA/conf/hestia.conf
484+
485+
cmp --silent $HESTIA/conf/hestia.conf $HESTIA/conf/hestia.conf.new
486+
if [ $? -ne 0 ]; then
487+
echo "[ ! ] Duplicated keys found repair config"
488+
rm $HESTIA/conf/hestia.conf
489+
cp $HESTIA/conf/hestia.conf.new $HESTIA/conf/hestia.conf
490+
rm $HESTIA/conf/hestia.conf.new
491+
fi
480492
}
481493

482494
# Repair System Cron Jobs

func/upgrade.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,7 @@ upgrade_init_logging() {
380380
}
381381

382382
upgrade_start_backup() {
383+
echo "============================================================================="
383384
echo "[ * ] Backing up existing templates and configuration files..."
384385
if [ "$DEBUG_MODE" = "true" ]; then
385386
echo " - Packages"

src/deb/hestia/postinst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,14 @@ fi
5151
upgrade_welcome_message_log >> $LOG
5252
upgrade_welcome_message
5353

54-
# Perform upgrade health check and refresh configuration before upgrading
55-
upgrade_health_check | tee -a $LOG
56-
upgrade_replace_default_config
57-
upgrade_refresh_config
58-
5954
# Back up existing configuration files and templates
6055
upgrade_start_backup | tee -a $LOG
6156

57+
# Perform upgrade health check and refresh configuration before upgrading
58+
upgrade_health_check | tee -a $LOG
59+
upgrade_replace_default_config | tee -a $LOG
60+
upgrade_refresh_config | tee -a $LOG
61+
6262
# Execute version-specific upgrade scripts
6363
upgrade_start_routine | tee -a $LOG
6464

0 commit comments

Comments
 (0)