Skip to content

Commit 445513c

Browse files
committed
- Added PHP-FPM pm settings (pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers) to the "Options" tab of a website.
1 parent ced7398 commit 445513c

File tree

11 files changed

+116
-14
lines changed

11 files changed

+116
-14
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
ALTER TABLE `web_domain` ADD `pm_max_children` INT NOT NULL DEFAULT '50' AFTER `php_fpm_use_socket` ,
2+
ADD `pm_start_servers` INT NOT NULL DEFAULT '20' AFTER `pm_max_children` ,
3+
ADD `pm_min_spare_servers` INT NOT NULL DEFAULT '5' AFTER `pm_start_servers` ,
4+
ADD `pm_max_spare_servers` INT NOT NULL DEFAULT '35' AFTER `pm_min_spare_servers`;

install/sql/ispconfig3.sql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1513,6 +1513,10 @@ CREATE TABLE `web_domain` (
15131513
`apache_directives` mediumtext,
15141514
`nginx_directives` mediumtext,
15151515
`php_fpm_use_socket` ENUM('n','y') NOT NULL DEFAULT 'n',
1516+
`pm_max_children` int(11) NOT NULL DEFAULT '50',
1517+
`pm_start_servers` int(11) NOT NULL DEFAULT '20',
1518+
`pm_min_spare_servers` int(11) NOT NULL DEFAULT '5',
1519+
`pm_max_spare_servers` int(11) NOT NULL DEFAULT '35',
15161520
`php_open_basedir` mediumtext,
15171521
`custom_php_ini` mediumtext,
15181522
`backup_interval` VARCHAR( 255 ) NOT NULL DEFAULT 'none',

interface/web/sites/form/web_domain.tform.php

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,54 @@
511511
'default' => 'n',
512512
'value' => array(0 => 'n',1 => 'y')
513513
),
514+
'pm_max_children' => array (
515+
'datatype' => 'INTEGER',
516+
'formtype' => 'TEXT',
517+
'validators' => array ( 0 => array ( 'type' => 'REGEX',
518+
'regex' => '/^([1-9][0-9]{0,10})$/',
519+
'errmsg'=> 'pm_max_children_error_regex'),
520+
),
521+
'default' => '50',
522+
'value' => '',
523+
'width' => '3',
524+
'maxlength' => '3'
525+
),
526+
'pm_start_servers' => array (
527+
'datatype' => 'INTEGER',
528+
'formtype' => 'TEXT',
529+
'validators' => array ( 0 => array ( 'type' => 'REGEX',
530+
'regex' => '/^([1-9][0-9]{0,10})$/',
531+
'errmsg'=> 'pm_start_servers_error_regex'),
532+
),
533+
'default' => '20',
534+
'value' => '',
535+
'width' => '3',
536+
'maxlength' => '3'
537+
),
538+
'pm_min_spare_servers' => array (
539+
'datatype' => 'INTEGER',
540+
'formtype' => 'TEXT',
541+
'validators' => array ( 0 => array ( 'type' => 'REGEX',
542+
'regex' => '/^([1-9][0-9]{0,10})$/',
543+
'errmsg'=> 'pm_min_spare_servers_error_regex'),
544+
),
545+
'default' => '5',
546+
'value' => '',
547+
'width' => '3',
548+
'maxlength' => '3'
549+
),
550+
'pm_max_spare_servers' => array (
551+
'datatype' => 'INTEGER',
552+
'formtype' => 'TEXT',
553+
'validators' => array ( 0 => array ( 'type' => 'REGEX',
554+
'regex' => '/^([1-9][0-9]{0,10})$/',
555+
'errmsg'=> 'pm_max_spare_servers_error_regex'),
556+
),
557+
'default' => '35',
558+
'value' => '',
559+
'width' => '3',
560+
'maxlength' => '3'
561+
),
514562
'php_open_basedir' => array (
515563
'datatype' => 'VARCHAR',
516564
'formtype' => 'TEXT',

interface/web/sites/lib/lang/de_web_domain.lng

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,13 @@ $wb['php_fpm_use_socket_txt'] = 'Benutze Socket für PHP-FPM';
8080
$wb['ipv6_address_txt'] = 'IPv6-Address';
8181
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
8282
$wb["python_txt"] = 'Python';
83+
$wb["pm_max_children_txt"] = 'PHP-FPM pm.max_children';
84+
$wb["pm_start_servers_txt"] = 'PHP-FPM pm.start_servers';
85+
$wb["pm_min_spare_servers_txt"] = 'PHP-FPM pm.min_spare_servers';
86+
$wb["pm_max_spare_servers_txt"] = 'PHP-FPM pm.max_spare_servers';
87+
$wb["error_php_fpm_pm_settings_txt"] = 'Die Werte der PHP-FPM pm Einstellungen müssen wie folgt sein: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0';
88+
$wb["pm_max_children_error_regex"] = 'PHP-FPM pm.max_children muß eine positive ganze Zahl sein.';
89+
$wb["pm_start_servers_error_regex"] = 'PHP-FPM pm.start_servers muß eine positive ganze Zahl sein.';
90+
$wb["pm_min_spare_servers_error_regex"] = 'PHP-FPM pm.min_spare_servers muß eine positive ganze Zahl sein.';
91+
$wb["pm_max_spare_servers_error_regex"] = 'PHP-FPM pm.max_spare_servers muß eine positive ganze Zahl sein.';
8392
?>

interface/web/sites/lib/lang/en_web_domain.lng

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,13 @@ $wb["www_to_non_www_txt"] = 'www -> non-www';
8080
$wb["php_fpm_use_socket_txt"] = 'Use Socket For PHP-FPM';
8181
$wb["error_no_sni_txt"] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
8282
$wb["python_txt"] = 'Python';
83+
$wb["pm_max_children_txt"] = 'PHP-FPM pm.max_children';
84+
$wb["pm_start_servers_txt"] = 'PHP-FPM pm.start_servers';
85+
$wb["pm_min_spare_servers_txt"] = 'PHP-FPM pm.min_spare_servers';
86+
$wb["pm_max_spare_servers_txt"] = 'PHP-FPM pm.max_spare_servers';
87+
$wb["error_php_fpm_pm_settings_txt"] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0';
88+
$wb["pm_max_children_error_regex"] = 'PHP-FPM pm.max_children must be a positive integer value.';
89+
$wb["pm_start_servers_error_regex"] = 'PHP-FPM pm.start_servers must be a positive integer value.';
90+
$wb["pm_min_spare_servers_error_regex"] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
91+
$wb["pm_max_spare_servers_error_regex"] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
8392
?>

interface/web/sites/templates/web_domain_advanced.htm

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,22 @@ <h2><tmpl_var name="list_head_txt"></h2>
2626
{tmpl_var name='php_fpm_use_socket'}
2727
</div>
2828
</div>
29+
<div class="ctrlHolder nginx">
30+
<label for="pm_max_children">{tmpl_var name='pm_max_children_txt'}</label>
31+
<input name="pm_max_children" id="pm_max_children" value="{tmpl_var name='pm_max_children'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
32+
</div>
33+
<div class="ctrlHolder nginx">
34+
<label for="pm_start_servers">{tmpl_var name='pm_start_servers_txt'}</label>
35+
<input name="pm_start_servers" id="pm_start_servers" value="{tmpl_var name='pm_start_servers'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
36+
</div>
37+
<div class="ctrlHolder nginx">
38+
<label for="pm_min_spare_servers">{tmpl_var name='pm_min_spare_servers_txt'}</label>
39+
<input name="pm_min_spare_servers" id="pm_min_spare_servers" value="{tmpl_var name='pm_min_spare_servers'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
40+
</div>
41+
<div class="ctrlHolder nginx">
42+
<label for="pm_max_spare_servers">{tmpl_var name='pm_max_spare_servers_txt'}</label>
43+
<input name="pm_max_spare_servers" id="pm_max_spare_servers" value="{tmpl_var name='pm_max_spare_servers'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
44+
</div>
2945
<div class="ctrlHolder">
3046
<label for="php_open_basedir">{tmpl_var name='php_open_basedir_txt'}</label>
3147
<input name="php_open_basedir" id="php_open_basedir" value="{tmpl_var name='php_open_basedir'}" size="30" type="text" class="textInput" style="width:400px;" />

interface/web/sites/web_domain_edit.php

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -418,15 +418,23 @@ function onSubmit() {
418418
if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]);
419419

420420
//* get the server config for this server
421-
$app->uses("getconf");
422-
$web_config = $app->getconf->get_server_config(intval($this->dataRecord["server_id"]),'web');
423-
//* Check for duplicate ssl certs per IP if SNI is disabled
424-
if(isset($this->dataRecord['ssl']) && $this->dataRecord['ssl'] == 'y' && $web_config['enable_sni'] != 'y') {
425-
$sql = "SELECT count(domain_id) as number FROM web_domain WHERE `ssl` = 'y' AND ip_address = '".$app->db->quote($this->dataRecord['ip_address'])."' and domain_id != ".$this->id;
426-
$tmp = $app->db->queryOneRecord($sql);
427-
if($tmp['number'] > 0) $app->tform->errorMessage .= $app->tform->lng("error_no_sni_txt");
428-
}
421+
$app->uses("getconf");
422+
$web_config = $app->getconf->get_server_config(intval($this->dataRecord["server_id"]),'web');
423+
//* Check for duplicate ssl certs per IP if SNI is disabled
424+
if(isset($this->dataRecord['ssl']) && $this->dataRecord['ssl'] == 'y' && $web_config['enable_sni'] != 'y') {
425+
$sql = "SELECT count(domain_id) as number FROM web_domain WHERE `ssl` = 'y' AND ip_address = '".$app->db->quote($this->dataRecord['ip_address'])."' and domain_id != ".$this->id;
426+
$tmp = $app->db->queryOneRecord($sql);
427+
if($tmp['number'] > 0) $app->tform->errorMessage .= $app->tform->lng("error_no_sni_txt");
428+
}
429+
430+
// Check if pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0
431+
if(isset($this->dataRecord['pm_max_children'])) {
432+
if(intval($this->dataRecord['pm_max_children']) >= intval($this->dataRecord['pm_max_spare_servers']) && intval($this->dataRecord['pm_max_spare_servers']) >= intval($this->dataRecord['pm_start_servers']) && intval($this->dataRecord['pm_start_servers']) >= intval($this->dataRecord['pm_min_spare_servers']) && intval($this->dataRecord['pm_min_spare_servers']) > 0){
429433

434+
} else {
435+
$app->tform->errorMessage .= $app->tform->lng("error_php_fpm_pm_settings_txt").'<br>';
436+
}
437+
}
430438

431439
parent::onSubmit();
432440
}

server/conf/nginx_vhost.conf.master

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ server {
4444
error_page 404 /error/404.html;
4545
error_page 405 /error/405.html;
4646
error_page 500 /error/500.html;
47-
error_page 502 /error/502.html;
47+
error_page 502 /error/502.html;
4848
error_page 503 /error/503.html;
4949
</tmpl_if>
5050

server/conf/php_fpm_pool.conf.master

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ user = <tmpl_var name='fpm_user'>
1515
group = <tmpl_var name='fpm_group'>
1616

1717
pm = dynamic
18-
pm.max_children = 50
19-
pm.start_servers = 20
20-
pm.min_spare_servers = 5
21-
pm.max_spare_servers = 35
18+
pm.max_children = <tmpl_var name='pm_max_children'>
19+
pm.start_servers = <tmpl_var name='pm_start_servers'>
20+
pm.min_spare_servers = <tmpl_var name='pm_min_spare_servers'>
21+
pm.max_spare_servers = <tmpl_var name='pm_max_spare_servers'>
2222

2323
chdir = /
2424

server/conf/vhost.conf.master

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
ErrorDocument 404 /error/404.html
3434
ErrorDocument 405 /error/405.html
3535
ErrorDocument 500 /error/500.html
36-
ErrorDocument 502 /error/502.html
36+
ErrorDocument 502 /error/502.html
3737
ErrorDocument 503 /error/503.html
3838
</tmpl_if>
3939

0 commit comments

Comments
 (0)