Browse Source

Add script that switches from apache2 standalone php to php-fpm multiphp

Robert Zollner 6 years ago
parent
commit
746bba21e4
1 changed files with 98 additions and 0 deletions
  1. 98 0
      install/upgrade/manual/migrate_apache.sh

+ 98 - 0
install/upgrade/manual/migrate_apache.sh

@@ -0,0 +1,98 @@
+#!/bin/bash
+# info: enable multiphp 
+#
+# The function enables php-fpm backend for standalone apache2 setups
+
+
+#----------------------------------------------------------#
+#                    Variable&Function                     #
+#----------------------------------------------------------#
+
+# Includes
+source $HESTIA/func/main.sh
+source $HESTIA/conf/hestia.conf
+
+
+#----------------------------------------------------------#
+#                    Verifications                         #
+#----------------------------------------------------------#
+
+if [ ! -z "$WEB_BACKEND" ]; then
+    check_result $E_EXISTS "Web backend already enabled" >/dev/null
+fi
+
+if [ "$(multiphp_count)" -gt 1 ]; then
+    check_result $E_EXISTS "Multiphp allready enabled" >/dev/null
+fi
+
+
+#----------------------------------------------------------#
+#                       Action                             #
+#----------------------------------------------------------#
+
+php_v="$(multiphp_default_version)"
+
+$BIN/v-add-web-php "$php_v"
+
+cp -f "${HESTIA_INSTALL_DIR}/php-fpm/www.conf" "/etc/php/${php_v}/fpm/pool.d/www.conf"
+systemctl start php${php_v}-fpm
+check_result $? "php${php_v}-fpm start failed"
+update-alternatives --set php /usr/bin/php${php_v}
+
+if [ ! -z "$WEB_SYSTEM" ]; then
+    cp -rf "${HESTIA_INSTALL_DIR}/templates/web/$WEB_SYSTEM" "${WEBTPL}/"
+fi
+
+sed -i "/^WEB_BACKEND=/d" $HESTIA/conf/hestia.conf
+echo "WEB_BACKEND='php-fpm'" >> $HESTIA/conf/hestia.conf
+
+for user in $($BIN/v-list-sys-users plain); do
+
+    # Define user data and get suspended status
+    USER_DATA=$HESTIA/data/users/$user
+    SUSPENDED=$(get_user_value '$SUSPENDED')
+
+    # Check if user is suspended
+    if [ "$SUSPENDED" = "yes" ]; then
+        suspended="yes"
+        $BIN/v-unsuspend-user $user
+    fi
+
+    for domain in $($BIN/v-list-web-domains $user plain |cut -f1); do
+        SUSPENDED_WEB=$(get_object_value 'web' 'DOMAIN' "$domain" '$SUSPENDED')
+        # Check if web domain is suspended
+        if [ "$SUSPENDED_WEB" = "yes" ]; then
+            suspended_web="yes"
+            $BIN/v-unsuspend-web-domain $user $domain
+        fi
+
+        echo "Processing domain: $domain"
+        $BIN/v-change-web-domain-backend-tpl "$user" "$domain" "PHP-${php_v/\./_}" "no"
+        $BIN/v-change-web-domain-tpl "$user" "$domain" "default" "no"
+
+        # Suspend domain again, if it was suspended
+        if [ "$suspended_web" = "yes" ]; then
+            unset suspended_web
+            $BIN/v-suspend-web-domain $user $domain
+        fi
+    done
+
+    # Suspend user again, if he was suspended
+    if [ "$suspended" = "yes" ]; then
+        unset suspended
+        $BIN/v-suspend-user $user
+    fi
+done
+
+$BIN/v-update-web-templates "no"
+
+
+#----------------------------------------------------------#
+#                       Hestia                             #
+#----------------------------------------------------------#
+
+# Logging
+log_history "Enabled multiphp $version" '' 'admin'
+log_event "$OK" "$ARGUMENTS"
+
+exit