Просмотр исходного кода

Improve php-fpm backend: enable multiphp support

Robert Zollner 6 лет назад
Родитель
Сommit
eeb9926e28

+ 2 - 1
bin/v-add-web-domain-backend

@@ -62,7 +62,8 @@ cat $WEBTPL/$WEB_BACKEND/$template.tpl |\
     sed -e "s|%backend_port%|$backend_port|" \
     sed -e "s|%backend_port%|$backend_port|" \
         -e "s|%user%|$user|g"\
         -e "s|%user%|$user|g"\
         -e "s|%domain%|$domain|g"\
         -e "s|%domain%|$domain|g"\
-        -e "s|%backend%|$backend_type|g" > $pool/$backend_type.conf
+        -e "s|%backend%|$backend_type|g"\
+        -e "s|%backend_version%|$version|g" > $pool/$backend_type.conf
 
 
 
 
 #----------------------------------------------------------#
 #----------------------------------------------------------#

+ 11 - 21
bin/v-add-web-php

@@ -51,7 +51,7 @@ fi
 mph="php$version-mbstring php$version-bcmath php$version-cli php$version-curl
 mph="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-fpm php$version-gd php$version-intl php$version-mysql
      php$version-soap php$version-xml php$version-zip php$version-mbstring
      php$version-soap php$version-xml php$version-zip php$version-mbstring
-     php$version-json php$version-bz2 php$version-pspell"
+     php$version-json php$version-bz2 php$version-pspell php$version-imagick"
 
 
 # Check is version is 7.1 or below to add mcrypt
 # Check is version is 7.1 or below to add mcrypt
 if [[ `echo "$version 7.2" | awk '{print ($1 < $2)}'` == 1 ]]; then
 if [[ `echo "$version 7.2" | awk '{print ($1 < $2)}'` == 1 ]]; then
@@ -83,42 +83,32 @@ fi
 
 
 # Check if required modules for apache2 are enabled
 # Check if required modules for apache2 are enabled
 if [ "$WEB_SYSTEM" = "apache2" ]; then
 if [ "$WEB_SYSTEM" = "apache2" ]; then
-    if ! ls -l /etc/apache2/mods-enabled/ | grep --quiet "proxy_fcgi"; then
-        a2enmod proxy_fcgi > /dev/null 2>&1
-        restart_apache2="yes"
+    if ! a2query -q -m proxy_fcgi; then
+        a2enmod -q proxy_fcgi
     fi
     fi
-    if ! ls -l /etc/apache2/mods-enabled/ | grep --quiet "setenvif"; then
-        a2enmod setenvif > /dev/null 2>&1
-        restart_apache2="yes"
-    fi
-    if [ "$restart_apache2" = "yes" ]; then
-        service apache2 restart > /dev/null 2>&1
+    if ! a2query -q -m setenvif; then
+        a2enmod -q setenvif
     fi
     fi
+    $BIN/v-restart-web
 fi
 fi
 
 
 # Configure fpm
 # Configure fpm
 update-rc.d php$version-fpm defaults > /dev/null 2>&1
 update-rc.d php$version-fpm defaults > /dev/null 2>&1
-v_tpl=$(echo "$version" | sed -e 's/[.]//')
+v_tpl=${version//.}
 rm -f /etc/php/$version/fpm/pool.d/*
 rm -f /etc/php/$version/fpm/pool.d/*
 cp -f $HESTIA_INSTALL_DIR/php-fpm/dummy.conf /etc/php/$version/fpm/pool.d/
 cp -f $HESTIA_INSTALL_DIR/php-fpm/dummy.conf /etc/php/$version/fpm/pool.d/
 sed -i "s/9999/99$v_tpl/g" /etc/php/$version/fpm/pool.d/dummy.conf
 sed -i "s/9999/99$v_tpl/g" /etc/php/$version/fpm/pool.d/dummy.conf
 
 
-# Install php templates
-cp -f $HESTIA_INSTALL_DIR/multiphp/$WEB_SYSTEM/PHP-${version//.}.sh \
-    $HESTIA/data/templates/web/$WEB_SYSTEM/
-cp -f $HESTIA_INSTALL_DIR/multiphp/$WEB_SYSTEM/PHP-${version//.}.tpl \
-    $HESTIA/data/templates/web/$WEB_SYSTEM/
-cp -f $HESTIA_INSTALL_DIR/multiphp/$WEB_SYSTEM/PHP-${version//.}.stpl \
-    $HESTIA/data/templates/web/$WEB_SYSTEM/
-chmod a+x $HESTIA/data/templates/web/$WEB_SYSTEM/PHP-${version//.}.sh
-
+# Install backend template
+cp -f $HESTIA_INSTALL_DIR/multiphp/php-fpm/default.tpl \
+    $HESTIA/data/templates/web/php-fpm/PHP-${version/\./_}.tpl
 
 
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 #                       Hestia                             #
 #                       Hestia                             #
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 
 
 # Logging
 # Logging
-log_history "installed php $job"
+log_history "installed php $version" '' 'admin'
 log_event "$OK" "$ARGUMENTS"
 log_event "$OK" "$ARGUMENTS"
 
 
 exit
 exit

+ 2 - 1
bin/v-change-web-domain-backend-tpl

@@ -69,7 +69,8 @@ cat $WEBTPL/$WEB_BACKEND/$template.tpl |\
         -e "s|%user%|$user|g"\
         -e "s|%user%|$user|g"\
         -e "s|%domain%|$domain|g"\
         -e "s|%domain%|$domain|g"\
         -e "s|%domain_idn%|$domain_idn|"\
         -e "s|%domain_idn%|$domain_idn|"\
-        -e "s|%backend%|$backend_type|g" > $pool/$backend_type.conf
+        -e "s|%backend%|$backend_type|g"\
+        -e "s|%backend_version%|$version|g" > $pool/$backend_type.conf
 
 
 # Checking backend pool configuration
 # Checking backend pool configuration
 if [ "$backend_type" = "$user" ]; then
 if [ "$backend_type" = "$user" ]; then

+ 2 - 5
bin/v-delete-web-php

@@ -75,11 +75,8 @@ if [ -f "$php_fpm" ]; then
     echo "apt-get purge $mph"
     echo "apt-get purge $mph"
 fi
 fi
 
 
-# Install php templates
-rm -f $HESTIA/data/templates/web/$WEB_SYSTEM/PHP-${version//.}.sh
-rm -f $HESTIA/data/templates/web/$WEB_SYSTEM/PHP-${version//.}.tpl
-rm -f $HESTIA/data/templates/web/$WEB_SYSTEM/PHP-${version//.}.stpl
-
+# Remove php templates
+rm -f $HESTIA/data/templates/web/php-fpm/PHP-${version/\./_}.tpl
 
 
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 #                       Hestia                             #
 #                       Hestia                             #

+ 3 - 9
func/domain.sh

@@ -84,20 +84,14 @@ is_web_alias_new() {
 
 
 # Prepare web backend
 # Prepare web backend
 prepare_web_backend() {
 prepare_web_backend() {
-    pool=$(find -L /etc/php/ -name "$domain.conf" -exec dirname {} \;)
-
     # Check if multiple-PHP installed
     # Check if multiple-PHP installed
     regex="socket-(\d+)_(\d+)"
     regex="socket-(\d+)_(\d+)"
-    if [[ $template =~ ^socket-([0-9])\_([0-9])$ ]]
-    then
+    if [[ $template =~ ^PHP-([0-9])\_([0-9])$ ]]; then
         version="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}"
         version="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}"
         pool=$(find -L /etc/php/$version -type d \( -name "pool.d" -o -name "*fpm.d" \))
         pool=$(find -L /etc/php/$version -type d \( -name "pool.d" -o -name "*fpm.d" \))
     else
     else
-        if [ "$pool" == "" ]
-        then
-            version=`echo "<?php echo (float)phpversion();" | php`
-            pool=$(find -L /etc/php/$version -type d \( -name "pool.d" -o -name "*fpm.d" \))
-        fi
+        version=$(php -r "echo (float)phpversion();")
+        pool=$(find -L /etc/php/$version -type d \( -name "pool.d" -o -name "*fpm.d" \))
     fi
     fi
  
  
     if [ ! -e "$pool" ]; then
     if [ ! -e "$pool" ]; then

+ 31 - 0
install/deb/multiphp/php-fpm/default.tpl

@@ -0,0 +1,31 @@
+[%domain%]
+
+listen = /run/php/php%backend_version%-fpm-%domain%.sock
+listen.owner = %user%
+listen.group = www-data
+listen.mode = 0660
+
+user = %user%
+group = %user%
+
+pm = ondemand
+pm.max_children = 8
+pm.max_requests = 4000
+pm.process_idle_timeout = 10s
+pm.status_path = /status
+
+php_admin_value[upload_tmp_dir] = /home/%user%/tmp
+php_admin_value[session.save_path] = /home/%user%/tmp
+php_admin_value[open_basedir] = /home/%user%/web/%domain%/public_html:/home/%user%/web/%domain%/public_shtml:/home/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail
+php_admin_value[upload_max_filesize] = 80M
+php_admin_value[max_execution_time] = 30
+php_admin_value[post_max_size] = 80M
+php_admin_value[memory_limit] = 256M
+php_admin_value[sendmail_path] = \"/usr/sbin/sendmail -t -i -f info@%domain%\"
+php_admin_flag[mysql.allow_persistent] = off
+php_admin_flag[safe_mode] = off
+
+env[PATH] = /usr/local/bin:/usr/bin:/bin
+env[TMP] = /home/%user%/tmp
+env[TMPDIR] = /home/%user%/tmp
+env[TEMP] = /home/%user%/tmp