From ca0b77f95a10f7d81714667557d4946ce5b50a9e Mon Sep 17 00:00:00 2001 From: ftimme Date: Wed, 28 Sep 2011 08:49:55 +0000 Subject: [PATCH] - nginx: Changed ispconfig and apps vhost from using PHP-FPM TCP connections to sockets. --- install/dist/lib/fedora.lib.php | 11 +++++++-- install/dist/lib/gentoo.lib.php | 22 +++++++++++++---- install/dist/lib/opensuse.lib.php | 11 +++++++-- install/lib/installer_base.lib.php | 24 +++++++++++++++---- install/tpl/apps_php_fpm_pool.conf.master | 7 +++--- install/tpl/nginx_apps.vhost.master | 6 ++--- install/tpl/nginx_ispconfig.vhost.master | 6 ++--- install/tpl/php_fpm_pool.conf.master | 7 +++--- server/conf/nginx_apps.vhost.master | 6 ++--- .../apps_vhost_plugin.inc.php | 8 ++++++- server/plugins-available/nginx_plugin.inc.php | 4 ++-- 11 files changed, 81 insertions(+), 31 deletions(-) diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index dc9ce432d0..e9929475c1 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -942,7 +942,13 @@ class installer_dist extends installer_base { $content = str_replace('{fastcgi_ssl}', 'off', $content); } - $content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + $socket_dir = escapeshellcmd($conf['nginx']['php_fpm_socket_dir']); + if(substr($socket_dir,-1) != '/') $socket_dir .= '/'; + if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); + $fpm_socket = $socket_dir.'ispconfig.sock'; + + //$content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); wf($vhost_conf_dir.'/ispconfig.vhost', $content); @@ -952,7 +958,8 @@ class installer_dist extends installer_base { // Dont just copy over the php-fpm pool template but add some custom settings $content = rf('tpl/php_fpm_pool.conf.master'); $content = str_replace('{fpm_pool}', 'ispconfig', $content); - $content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + //$content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); $content = str_replace('{fpm_user}', 'ispconfig', $content); $content = str_replace('{fpm_group}', 'ispconfig', $content); wf($conf['nginx']['php_fpm_pool_dir'].'/ispconfig.conf', $content); diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index f7a0df1d7f..ffc919d290 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -642,12 +642,18 @@ class installer extends installer_base } else { $apps_vhost_ip = $conf['web']['apps_vhost_ip'].':'; } + + $socket_dir = escapeshellcmd($conf['nginx']['php_fpm_socket_dir']); + if(substr($socket_dir,-1) != '/') $socket_dir .= '/'; + if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); + $fpm_socket = $socket_dir.'apps.sock'; $content = str_replace('{apps_vhost_ip}', $apps_vhost_ip, $content); $content = str_replace('{apps_vhost_port}', $conf['web']['apps_vhost_port'], $content); $content = str_replace('{apps_vhost_dir}', $conf['web']['website_basedir'].'/apps', $content); $content = str_replace('{apps_vhost_servername}', $apps_vhost_servername, $content); - $content = str_replace('{fpm_port}', ($conf['nginx']['php_fpm_start_port']+1), $content); + //$content = str_replace('{fpm_port}', ($conf['nginx']['php_fpm_start_port']+1), $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); wf($vhost_conf_dir.'/apps.vhost', $content); @@ -655,7 +661,8 @@ class installer extends installer_base // Dont just copy over the php-fpm pool template but add some custom settings $content = rf('tpl/apps_php_fpm_pool.conf.master'); $content = str_replace('{fpm_pool}', 'apps', $content); - $content = str_replace('{fpm_port}', ($conf['nginx']['php_fpm_start_port']+1), $content); + //$content = str_replace('{fpm_port}', ($conf['nginx']['php_fpm_start_port']+1), $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); $content = str_replace('{fpm_user}', $apps_vhost_user, $content); $content = str_replace('{fpm_group}', $apps_vhost_group, $content); wf($conf['nginx']['php_fpm_pool_dir'].'/apps.conf', $content); @@ -918,7 +925,13 @@ class installer extends installer_base $content = str_replace('{fastcgi_ssl}', 'off', $content); } - $content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + $socket_dir = escapeshellcmd($conf['nginx']['php_fpm_socket_dir']); + if(substr($socket_dir,-1) != '/') $socket_dir .= '/'; + if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); + $fpm_socket = $socket_dir.'ispconfig.sock'; + + //$content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); wf($vhost_conf_dir.'/ispconfig.vhost', $content); @@ -928,7 +941,8 @@ class installer extends installer_base // Dont just copy over the php-fpm pool template but add some custom settings $content = rf('tpl/php_fpm_pool.conf.master'); $content = str_replace('{fpm_pool}', 'ispconfig', $content); - $content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + //$content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); $content = str_replace('{fpm_user}', 'ispconfig', $content); $content = str_replace('{fpm_group}', 'ispconfig', $content); wf($conf['nginx']['php_fpm_pool_dir'].'/ispconfig.conf', $content); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index b2953cf6e3..e29b18ca0a 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -976,7 +976,13 @@ class installer_dist extends installer_base { $content = str_replace('{fastcgi_ssl}', 'off', $content); } - $content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + $socket_dir = escapeshellcmd($conf['nginx']['php_fpm_socket_dir']); + if(substr($socket_dir,-1) != '/') $socket_dir .= '/'; + if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); + $fpm_socket = $socket_dir.'ispconfig.sock'; + + //$content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); wf($vhost_conf_dir.'/ispconfig.vhost', $content); @@ -986,7 +992,8 @@ class installer_dist extends installer_base { // Dont just copy over the php-fpm pool template but add some custom settings $content = rf('tpl/php_fpm_pool.conf.master'); $content = str_replace('{fpm_pool}', 'ispconfig', $content); - $content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + //$content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); $content = str_replace('{fpm_user}', 'ispconfig', $content); $content = str_replace('{fpm_group}', 'ispconfig', $content); wf($conf['nginx']['php_fpm_pool_dir'].'/ispconfig.conf', $content); diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index f145e24363..ab1f110b98 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1472,12 +1472,18 @@ class installer_base { } else { $apps_vhost_ip = $conf['web']['apps_vhost_ip'].':'; } + + $socket_dir = escapeshellcmd($conf['nginx']['php_fpm_socket_dir']); + if(substr($socket_dir,-1) != '/') $socket_dir .= '/'; + if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); + $fpm_socket = $socket_dir.'apps.sock'; $content = str_replace('{apps_vhost_ip}', $apps_vhost_ip, $content); $content = str_replace('{apps_vhost_port}', $conf['web']['apps_vhost_port'], $content); $content = str_replace('{apps_vhost_dir}', $conf['web']['website_basedir'].'/apps', $content); $content = str_replace('{apps_vhost_servername}', $apps_vhost_servername, $content); - $content = str_replace('{fpm_port}', ($conf['nginx']['php_fpm_start_port']+1), $content); + //$content = str_replace('{fpm_port}', ($conf['nginx']['php_fpm_start_port']+1), $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); wf($vhost_conf_dir.'/apps.vhost', $content); @@ -1485,7 +1491,8 @@ class installer_base { // Dont just copy over the php-fpm pool template but add some custom settings $content = rf('tpl/apps_php_fpm_pool.conf.master'); $content = str_replace('{fpm_pool}', 'apps', $content); - $content = str_replace('{fpm_port}', ($conf['nginx']['php_fpm_start_port']+1), $content); + //$content = str_replace('{fpm_port}', ($conf['nginx']['php_fpm_start_port']+1), $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); $content = str_replace('{fpm_user}', $apps_vhost_user, $content); $content = str_replace('{fpm_group}', $apps_vhost_group, $content); wf($conf['nginx']['php_fpm_pool_dir'].'/apps.conf', $content); @@ -1808,8 +1815,14 @@ class installer_base { $content = str_replace('{fastcgi_ssl}', 'off', $content); } - $content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); - + $socket_dir = escapeshellcmd($conf['nginx']['php_fpm_socket_dir']); + if(substr($socket_dir,-1) != '/') $socket_dir .= '/'; + if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); + $fpm_socket = $socket_dir.'ispconfig.sock'; + + //$content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); + wf($vhost_conf_dir.'/ispconfig.vhost', $content); unset($content); @@ -1818,7 +1831,8 @@ class installer_base { // Dont just copy over the php-fpm pool template but add some custom settings $content = rf('tpl/php_fpm_pool.conf.master'); $content = str_replace('{fpm_pool}', 'ispconfig', $content); - $content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + //$content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); $content = str_replace('{fpm_user}', 'ispconfig', $content); $content = str_replace('{fpm_group}', 'ispconfig', $content); wf($conf['nginx']['php_fpm_pool_dir'].'/ispconfig.conf', $content); diff --git a/install/tpl/apps_php_fpm_pool.conf.master b/install/tpl/apps_php_fpm_pool.conf.master index b5000e70b8..adda0b587c 100644 --- a/install/tpl/apps_php_fpm_pool.conf.master +++ b/install/tpl/apps_php_fpm_pool.conf.master @@ -1,8 +1,9 @@ [{fpm_pool}] -listen = 127.0.0.1:{fpm_port} - -listen.allowed_clients = 127.0.0.1 +listen = {fpm_socket} +listen.owner = {fpm_user} +listen.group = {fpm_group} +listen.mode = 0660 user = {fpm_user} group = {fpm_group} diff --git a/install/tpl/nginx_apps.vhost.master b/install/tpl/nginx_apps.vhost.master index 0ba7fc2b08..c7e58a3a2c 100644 --- a/install/tpl/nginx_apps.vhost.master +++ b/install/tpl/nginx_apps.vhost.master @@ -17,7 +17,7 @@ server { location ~ \.php$ { try_files $uri =404; include /etc/nginx/fastcgi_params; - fastcgi_pass 127.0.0.1:{fpm_port}; + fastcgi_pass unix:{fpm_socket}; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; @@ -38,7 +38,7 @@ server { try_files $uri =404; root /usr/share/; include /etc/nginx/fastcgi_params; - fastcgi_pass 127.0.0.1:{fpm_port}; + fastcgi_pass unix:{fpm_socket}; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; } @@ -57,7 +57,7 @@ server { try_files $uri =404; root /usr/share/; include /etc/nginx/fastcgi_params; - fastcgi_pass 127.0.0.1:{fpm_port}; + fastcgi_pass unix:{fpm_socket}; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; } diff --git a/install/tpl/nginx_ispconfig.vhost.master b/install/tpl/nginx_ispconfig.vhost.master index 967fba9063..22947cc58d 100644 --- a/install/tpl/nginx_ispconfig.vhost.master +++ b/install/tpl/nginx_ispconfig.vhost.master @@ -19,7 +19,7 @@ server { location ~ \.php$ { try_files $uri =404; include /etc/nginx/fastcgi_params; - fastcgi_pass 127.0.0.1:{fpm_port}; + fastcgi_pass unix:{fpm_socket}; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; @@ -40,7 +40,7 @@ server { # try_files $uri =404; # root /usr/share/; # include /etc/nginx/fastcgi_params; -# fastcgi_pass 127.0.0.1:{fpm_port}; +# fastcgi_pass unix:{fpm_socket}; # {ssl_comment}fastcgi_param HTTPS {fastcgi_ssl}; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME $request_filename; @@ -60,7 +60,7 @@ server { # try_files $uri =404; # root /usr/share/; # include /etc/nginx/fastcgi_params; -# fastcgi_pass 127.0.0.1:{fpm_port}; +# fastcgi_pass unix:{fpm_socket}; # {ssl_comment}fastcgi_param HTTPS {fastcgi_ssl}; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME $request_filename; diff --git a/install/tpl/php_fpm_pool.conf.master b/install/tpl/php_fpm_pool.conf.master index 5a2c6c8d92..fc193d01b8 100644 --- a/install/tpl/php_fpm_pool.conf.master +++ b/install/tpl/php_fpm_pool.conf.master @@ -1,8 +1,9 @@ [{fpm_pool}] -listen = 127.0.0.1:{fpm_port} - -listen.allowed_clients = 127.0.0.1 +listen = {fpm_socket} +listen.owner = {fpm_user} +listen.group = {fpm_group} +listen.mode = 0660 user = {fpm_user} group = {fpm_group} diff --git a/server/conf/nginx_apps.vhost.master b/server/conf/nginx_apps.vhost.master index 0ba7fc2b08..c7e58a3a2c 100644 --- a/server/conf/nginx_apps.vhost.master +++ b/server/conf/nginx_apps.vhost.master @@ -17,7 +17,7 @@ server { location ~ \.php$ { try_files $uri =404; include /etc/nginx/fastcgi_params; - fastcgi_pass 127.0.0.1:{fpm_port}; + fastcgi_pass unix:{fpm_socket}; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; @@ -38,7 +38,7 @@ server { try_files $uri =404; root /usr/share/; include /etc/nginx/fastcgi_params; - fastcgi_pass 127.0.0.1:{fpm_port}; + fastcgi_pass unix:{fpm_socket}; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; } @@ -57,7 +57,7 @@ server { try_files $uri =404; root /usr/share/; include /etc/nginx/fastcgi_params; - fastcgi_pass 127.0.0.1:{fpm_port}; + fastcgi_pass unix:{fpm_socket}; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; } diff --git a/server/plugins-available/apps_vhost_plugin.inc.php b/server/plugins-available/apps_vhost_plugin.inc.php index c812d5e67e..5e942b241f 100644 --- a/server/plugins-available/apps_vhost_plugin.inc.php +++ b/server/plugins-available/apps_vhost_plugin.inc.php @@ -117,12 +117,18 @@ class apps_vhost_plugin { } else { $apps_vhost_ip = $web_config['apps_vhost_ip'].':'; } + + $socket_dir = escapeshellcmd($web_config['php_fpm_socket_dir']); + if(substr($socket_dir,-1) != '/') $socket_dir .= '/'; + if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); + $fpm_socket = $socket_dir.'apps.sock'; $content = str_replace('{apps_vhost_ip}', $apps_vhost_ip, $content); $content = str_replace('{apps_vhost_port}', $web_config['apps_vhost_port'], $content); $content = str_replace('{apps_vhost_dir}', $web_config['website_basedir'].'/apps', $content); $content = str_replace('{apps_vhost_servername}', $apps_vhost_servername, $content); - $content = str_replace('{fpm_port}', $web_config['php_fpm_start_port']+1, $content); + //$content = str_replace('{fpm_port}', $web_config['php_fpm_start_port']+1, $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); } file_put_contents("$vhost_conf_dir/apps.vhost", $content); diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 5e927cdecb..83f8d4e866 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -660,7 +660,7 @@ class nginx_plugin { $tpl->setVar('use_socket', $use_socket); $fpm_socket = $socket_dir.$pool_name.'.sock'; $tpl->setVar('fpm_socket', $fpm_socket); - $vhost_data['fpm_port'] = $web_config['php_fpm_start_port'] + $data['new']['domain_id'] + 1; + $vhost_data['fpm_port'] = $web_config['php_fpm_start_port'] + $data['new']['domain_id'] - 1; // Custom nginx directives $final_nginx_directives = array(); @@ -1129,7 +1129,7 @@ class nginx_plugin { $tpl->setVar('fpm_socket', $fpm_socket); $tpl->setVar('fpm_pool', $pool_name); - $tpl->setVar('fpm_port', $web_config['php_fpm_start_port'] + $data['new']['domain_id'] + 1); + $tpl->setVar('fpm_port', $web_config['php_fpm_start_port'] + $data['new']['domain_id'] - 1); $tpl->setVar('fpm_user', $data['new']['system_user']); $tpl->setVar('fpm_group', $data['new']['system_group']); $tpl->setVar('pm_max_children', $data['new']['pm_max_children']); -- GitLab