From b52ec2c862fe0335bf20467cf3fcfe902a68a7a1 Mon Sep 17 00:00:00 2001 From: Alexey Berezhok Date: Fri, 14 Jun 2024 00:14:42 +0300 Subject: [PATCH] Added fixes for php manipulation and system config --- bin/v-add-sys-quota | 18 +++++---- bin/v-add-web-php | 23 +++++++++--- bin/v-change-sys-php | 38 +++++++++++++++---- bin/v-check-rhel-utility | 11 ++++++ bin/v-delete-web-php | 74 +++++++++++++++++++++++++++++-------- bin/v-list-default-php | 15 ++++++-- install/hst-install-rhel.sh | 1 + web/edit/server/index.php | 19 ++++++++++ 8 files changed, 159 insertions(+), 40 deletions(-) create mode 100755 bin/v-check-rhel-utility diff --git a/bin/v-add-sys-quota b/bin/v-add-sys-quota index 811eaae..364add5 100755 --- a/bin/v-add-sys-quota +++ b/bin/v-add-sys-quota @@ -22,14 +22,16 @@ source_conf "$HESTIA/conf/hestia.conf" #----------------------------------------------------------# # Ensure that quota kernel modules are installed -kernel_module_check=$(find /lib/modules/$(uname -r) -type f -name '*quota_v*.ko*' | egrep '.*' && [ $? -eq 0 ]) -if [ -z "$kernel_module_check" ]; then - # Install kernel modules for quota support. - # Requires reboot to activate updated kernel. - echo "Installing required kernel modules for quota support..." - reboot_req="Y" - apt-get -qq install linux-image-extra-virtual -y - check_result $? "kernel module installation failed" "$E_UPDATE" +if [ ! -f /etc/redhat-release ]; then + kernel_module_check=$(find /lib/modules/$(uname -r) -type f -name '*quota_v*.ko*' | egrep '.*' && [ $? -eq 0 ]) + if [ -z "$kernel_module_check" ]; then + # Install kernel modules for quota support. + # Requires reboot to activate updated kernel. + echo "Installing required kernel modules for quota support..." + reboot_req="Y" + apt-get -qq install linux-image-extra-virtual -y + check_result $? "kernel module installation failed" "$E_UPDATE" + fi fi # Checking quota package diff --git a/bin/v-add-web-php b/bin/v-add-web-php index 154d72d..b96361c 100755 --- a/bin/v-add-web-php +++ b/bin/v-add-web-php @@ -38,7 +38,11 @@ if [ -z "$WEB_BACKEND" ]; then fi # Set file locations -php_fpm="/etc/init.d/php$version-fpm" +if [ -f /etc/redhat-release ]; then + php_fpm="/usr/lib/systemd/system/php$version-php-fpm.service" +else + php_fpm="/etc/init.d/php$version-fpm" +fi # Verify php version format if [ -f /etc/redhat-release ]; then @@ -74,16 +78,16 @@ check_hestia_demo_mode # Action # #----------------------------------------------------------# -mph="php$version-common php$version-mbstring php$version-bcmath php$version-cli php$version-curl +mph="php$version-common php$version-mbstring php$version-bcmath php$version-cli php$version-curl php$version-fpm php$version-gd php$version-intl php$version-mysql php$version-soap php$version-xml php$version-zip php$version-json php$version-bz2 php$version-pspell php$version-imagick php$version-pgsql php$version-imap php$version-ldap" if [ -f /etc/redhat-release ]; then # Packages in Remi repo have names with php$version-php- prefixes - mph="php$version-php-fpm php$version-php-cgi php$version-php-mysqlnd php$version-php-pgsql - php$version-php-pdo php$version-php-common php$version-php-pecl-imagick php$version-php-imap - php$version-php-ldap php$version-php-pecl-apcu php$version-php-pecl-zip php$version-php-cli - php$version-php-opcache php$version-php-xml php$version-php-gd php$version-php-intl + mph="php$version-php-fpm php$version-php-cgi php$version-php-mysqlnd php$version-php-pgsql + php$version-php-pdo php$version-php-common php$version-php-pecl-imagick php$version-php-imap + php$version-php-ldap php$version-php-pecl-apcu php$version-php-pecl-zip php$version-php-cli + php$version-php-opcache php$version-php-xml php$version-php-gd php$version-php-intl php$version-php-mbstring php$version-php-pspell php$version-php-readline" if [ "$version" = "56" ]; then mph=$(sed -e "s/php$version-php-pecl-apcu//") @@ -139,6 +143,13 @@ if [ ! -f "$php_fpm" ]; then fi fi +if [ -f '/etc/redhat-release' ]; then + result_alt_php=$(alternatives --display php | grep /usr/bin/php$version) + if [ -z "$result_alt_php" ]; then + alternatives --install /usr/bin/php php /usr/bin/php$version 1 > /dev/null 2>&1 + fi +fi + # Check if required modules for apache2 are enabled if [ "$WEB_SYSTEM" = "apache2" ]; then if [ -f /etc/redhat-release ]; then diff --git a/bin/v-change-sys-php b/bin/v-change-sys-php index acfaae0..6bfb44f 100755 --- a/bin/v-change-sys-php +++ b/bin/v-change-sys-php @@ -21,10 +21,18 @@ source_conf "$HESTIA/conf/hestia.conf" check_args '1' "$#" 'VERSION' # Verify php version format -if [[ ! $version =~ ^[0-9]\.[0-9]+ ]]; then - echo "The specified PHP version format is invalid, it should look like [0-9].[0-9]." - echo "Example: 7.0, 7.4, 8.0" - exit "$E_INVALID" +if [ -f /etc/redhat-release ]; then + if [[ ! $version =~ ^[0-9][0-9]+ ]]; then + echo "The specified PHP version format is invalid, it should look like [0-9][0-9]." + echo "Example: 70, 74, 80" + exit "$E_INVALID" + fi +else + if [[ ! $version =~ ^[0-9].[0-9]+ ]]; then + echo "The specified PHP version format is invalid, it should look like [0-9].[0-9]." + echo "Example: 7.0, 7.4, 8.0" + exit "$E_INVALID" + fi fi # Check if php version exists @@ -42,10 +50,19 @@ check_hestia_demo_mode #----------------------------------------------------------# # Set file locations -php_fpm="/etc/init.d/php$version-fpm" +if [ -f /etc/redhat-release ]; then + php_fpm="/usr/lib/systemd/system/php$version-php-fpm.service" +else + php_fpm="/etc/init.d/php$version-fpm" +fi -rm -f /etc/php/*/fpm/pool.d/www.conf -cp -f $HESTIA/install/deb/php-fpm/www.conf /etc/php/$version/fpm/pool.d/www.conf +if [ -f /etc/redhat-release ]; then + rm -f /etc/opt/remi/php*/php-fpm.d/www.conf + cp -f $HESTIA/install/rpm/php-fpm/www.conf /etc/opt/remi/php$version/php-fpm.d/www.conf +else + rm -f /etc/php/*/fpm/pool.d/www.conf + cp -f $HESTIA/install/deb/php-fpm/www.conf /etc/php/$version/fpm/pool.d/www.conf +fi for user in $($BIN/v-list-sys-users plain); do $BIN/v-rebuild-web-domains "$user" 'no' > /dev/null 2>&1 @@ -58,6 +75,13 @@ $BIN/v-restart-web-backend $BIN/v-restart-web $BIN/v-restart-proxy +if [ -f '/etc/redhat-release' ]; then + result_alt_php=$(alternatives --display php | grep /usr/bin/php$version) + if [ -z "$result_alt_php" ]; then + alternatives --install /usr/bin/php php /usr/bin/php$version 1 > /dev/null 2>&1 + fi +fi + update-alternatives --set php /usr/bin/php$version #----------------------------------------------------------# diff --git a/bin/v-check-rhel-utility b/bin/v-check-rhel-utility new file mode 100755 index 0000000..e280d5b --- /dev/null +++ b/bin/v-check-rhel-utility @@ -0,0 +1,11 @@ +#!/bin/bash +# info: Check rehel or not +# options: none + +# example: v-check-rhel-utility + +if [ -f '/etc/redhat-release' ]; then + echo -n "+" +else + echo -n "-" +fi \ No newline at end of file diff --git a/bin/v-delete-web-php b/bin/v-delete-web-php index 9680df1..e575543 100755 --- a/bin/v-delete-web-php +++ b/bin/v-delete-web-php @@ -32,13 +32,25 @@ if [ -z "$WEB_BACKEND" ]; then fi # Set file locations -php_fpm="/etc/init.d/php$version-fpm" +if [ -f /etc/redhat-release ]; then + php_fpm="/usr/lib/systemd/system/php$version-php-fpm.service" +else + php_fpm="/etc/init.d/php$version-fpm" +fi # Verify php version format -if [[ ! $version =~ ^[0-9]\.[0-9]+ ]]; then - echo "The PHP version format is invalid, it should look like [0-9].[0-9]." - echo "Example: 7.0, 7.4" - exit +if [ -f /etc/redhat-release ]; then + if [[ ! $version =~ ^[0-9][0-9]+ ]]; then + echo "The PHP version format is invalid, it should look like [0-9][0-9]." + echo "Example: 70, 74, 80" + exit "$E_INVALID" + fi +else + if [[ ! $version =~ ^[0-9].[0-9]+ ]]; then + echo "The PHP version format is invalid, it should look like [0-9].[0-9]." + echo "Example: 7.0, 7.4, 8.0" + exit "$E_INVALID" + fi fi # Remove backend template @@ -64,10 +76,25 @@ mph="php$version-common php$version-mbstring php$version-bcmath php$version-cli php$version-json php$version-bz2 php$version-pspell php$version-imagick php$version-pgsql php$version-imap php$version-ldap" + if [ -f /etc/redhat-release ]; then + # Packages in Remi repo have names with php$version-php- prefixes + mph="php$version-php-fpm php$version-php-cgi php$version-php-mysqlnd php$version-php-pgsql + php$version-php-pdo php$version-php-common php$version-php-pecl-imagick php$version-php-imap + php$version-php-ldap php$version-php-pecl-apcu php$version-php-pecl-zip php$version-php-cli + php$version-php-opcache php$version-php-xml php$version-php-gd php$version-php-intl + php$version-php-mbstring php$version-php-pspell php$version-php-readline" +fi + # Check is version is 7.1 or below to add mcrypt +if [ -f /etc/redhat-release ]; then +if [[ $(echo "$version 72" | awk '{print ($1 < $2)}') == 1 ]]; then + mph="$mph php$version-php-mcrypt" +fi +else if [[ $(echo "$version 7.2" | awk '{print ($1 < $2)}') == 1 ]]; then mph="$mph php$version-mcrypt" fi +fi # Purge php packages if [ -f '/etc/redhat-release' ]; then @@ -101,16 +128,33 @@ if [ -f "$php_fpm" ]; then fi # Cleanup php folder -[[ -d /etc/php/$version ]] && rm -rf "/etc/php/$version" - -if [ "$WEB_BACKEND" = "php-fpm" ]; then - conf=$(find /etc/php* -name www.conf) - # Check if www.conf exists - if [ -z "$conf" ]; then - # If not grab the "last php version - last=$($BIN/v-list-sys-php "shell" | tail -n1) - cp -f $HESTIA/install/deb/php-fpm/www.conf /etc/php/$last/fpm/pool.d/www.conf - $BIN/v-restart-web-backend +if [ -f '/etc/redhat-release' ]; then + [[ -d /etc/opt/remi/php$version ]] && rm -rf "/etc/opt/remi/php$version" +else + [[ -d /etc/php/$version ]] && rm -rf "/etc/php/$version" +fi + +if [ -f '/etc/redhat-release' ]; then + if [ "$WEB_BACKEND" = "php-fpm" ]; then + conf=$(find /etc/opt/remi/php* -name www.conf) + # Check if www.conf exists + if [ -z "$conf" ]; then + # If not grab the "last php version + last=$($BIN/v-list-sys-php "shell" | tail -n1) + cp -f $HESTIA/install/rpm/php-fpm/www.conf /etc/opt/remi/php$version/php-fpm.d/www.conf + $BIN/v-restart-web-backend + fi + fi +else + if [ "$WEB_BACKEND" = "php-fpm" ]; then + conf=$(find /etc/php* -name www.conf) + # Check if www.conf exists + if [ -z "$conf" ]; then + # If not grab the "last php version + last=$($BIN/v-list-sys-php "shell" | tail -n1) + cp -f $HESTIA/install/deb/php-fpm/www.conf /etc/php/$last/fpm/pool.d/www.conf + $BIN/v-restart-web-backend + fi fi fi diff --git a/bin/v-list-default-php b/bin/v-list-default-php index ef4b945..da15898 100755 --- a/bin/v-list-default-php +++ b/bin/v-list-default-php @@ -67,10 +67,17 @@ csv_list() { declare -a versions # List through /etc/php -for version in /etc/php/*/fpm/pool.d/www.conf; do - ver=$(echo "$version" | awk -F"/" '{ print $4 }') - versions+=("$ver") -done +if [ -f /etc/redhat-release ]; then + for version in /etc/opt/remi/php*/php-fpm.d/www.conf; do + ver=$(echo "$version" | awk -F"/" '{ print $5 }' | sed "s/php\([[:digit:]]\+\)/\1/g") + versions+=("$ver") + done +else + for version in /etc/php/*/fpm/pool.d/www.conf; do + ver=$(echo "$version" | awk -F"/" '{ print $4 }') + versions+=("$ver") + done +fi # Listing data case $format in diff --git a/install/hst-install-rhel.sh b/install/hst-install-rhel.sh index 01118c9..89caaee 100755 --- a/install/hst-install-rhel.sh +++ b/install/hst-install-rhel.sh @@ -1380,6 +1380,7 @@ if [ "$phpfpm" = "yes" ]; then systemctl enable php${php_v}-php-fpm --now >> $LOG check_result $? "php-fpm start failed" # Set default php version to $php_v + alternatives --install /usr/bin/php php /usr/bin/php$php_v 1 > /dev/null 2>&1 alternatives --set php /usr/bin/php$php_v > /dev/null 2>&1 fi diff --git a/web/edit/server/index.php b/web/edit/server/index.php index 09d66be..3facf7a 100644 --- a/web/edit/server/index.php +++ b/web/edit/server/index.php @@ -29,6 +29,10 @@ exec(HESTIA_CMD . "v-list-web-templates-backend json", $output, $return_var); $backend_templates = json_decode(implode("", $output), true); unset($output); +exec(HESTIA_CMD . "v-check-rhel-utility", $output, $return_var); +$is_rhel = str_contains(implode("", $output), "+"); +unset($output); + $v_php_versions = [ "php-5.6", "php-7.0", @@ -40,6 +44,21 @@ $v_php_versions = [ "php-8.1", "php-8.2", ]; + +if ($is_rhel){ + $v_php_versions = [ + "php-56", + "php-70", + "php-71", + "php-72", + "php-73", + "php-74", + "php-80", + "php-81", + "php-82", + ]; +} + sort($v_php_versions); if (empty($backend_templates)) {