Development Guides Home >> Guide to Perl
Guide to Perl in cPanel - Apache Configuration
Overview
You can customize your Apache configuration with the Cpanel::EA4::Conf
class.
Customize your Apache configuration
- You must use Perl to perform these actions.
-
Do
not
edit the
/etc/cpanel/ea4/ea4.conf
file manually. This may cause unexpected behavior. TheCpanel::EA4::Conf
class provides data validation. If you edit the JSON directly, you may cause server malfunctions.
The Cpanel::EA4::Conf
class allows third-party integrators to set the contents of the /etc/cpanel/ea4/ea4.conf
file. This file consolidates all of your server's options into a single JSON file. This file also replaces the /var/cpanel/conf/apache/local
and /var/cpanel/conf/apache/main
files.
Use the class
To use this class, write a Perl script that utilizes the class's methods and then calls your customizations in your template.
Your code might resemble the following example:
use Cpanel::EA4::Conf ();
my $ea4cnf = Cpanel::EA4::Conf->instance();
$ea4cnf->directoryindex($new_value);
$ea4cnf->save;
For the above example, you would use the following in your template:
[% ea4conf.directoryindex %]
Methods
You can use the following methods in your Perl scripts with this class:
Method | Description |
---|---|
new() | Returns a new EA4::Conf object. You can use any configuration directive that is not read only. Your script might resemble the following example: Cpanel::EA4::Conf->new(directoryindex => $new_value)->save; |
instance() | Returns a new EA4::Conf object. This method allows you to create multiple instances. This is the preferred method and allows you to avoid using a global variable. Your script might resemble the following sub foo { You can also use the same arguments that the new() method uses. |
warn_unsaved() | Returns a warning if unsaved changes exist. This method only accepts an argument of 0 or 1 . |
conf_attrs() | Returns an array reference of the directives that you can configure. |
save() | Save the current values to the /etc/cpanel/ea4/ea4.conf JSON file. |
as_hr() | Returns the configuration object in a hash reference. |
as_distiller_hr() | Returns the configuration object in a hash that the distiller can use. This method does not accept an argument. This method only exists to support older servers. |
save_from_hr($hr) | Writes the known configurations in the $hr hash reference to an object, and then saves the object. |
is_dirty() | Returns a true value if any configuration directive exists. This method does not accept an argument. |
local_attrs() | Returns a hash reference of local attributes. Use this method to update arbitrary configuration data. Your code might resemble the following example:my $e4c = Cpanel::EA4::Conf->instance(); In your custom template, you would use the following entries: [% ea4conf.localattrs.foo %] |
Configuration directives
This class includes several directives that you can configure.
To retrieve a value, your code might resemble the following example:
my $directoryindex = $conf_obj->directoryindex;
To set the value of a directive, your code might resemble the following example:
$conf_obj->directoryindex("index.js index.html");
You can set the following directives with this class:
Except where specified, you can set all of the following directives in the Global Configuration section of WHM's Apache Configuration interface (WHM >> Home >> Service Configuration >> Apache Configuration).
Directive | Description | Arguments |
---|---|---|
directoryindex |
Sets the files that the server returns when a URL does not refer to a specific file. You can also set this directive in the DirectoryIndex Priority section of WHM's Apache Configuration interface (WHM >> Home >> Service Configuration >> Apache Configuration). | A space-separated string |
extendedstatus |
Shows more details about incoming requests. |
|
fileetag |
Determines the amount of information that Apache provides to visitors who request a file via HTTP. |
|
keepalive |
Enables or disable persistent HTTP connections. |
|
keepalivetimeout |
The number of seconds that Apache waits for another request before it closes a connection. | An integer greater than 0 , in seconds |
logformat_combined |
The Apache log file's format, including the referrer and user agent strings. | A string. |
logformat_common |
The Apache log file's format. | A string. |
loglevel |
The verbosity of the error log. |
|
maxrequestworkers |
Sets the limit on the number of simultaneous requests that Apache serves. | An integer greater than 0 . |
maxkeepaliverequests |
The number of requests that a persistent connection allows. | An integer greater than 0 . |
maxconnectionsperchild |
The number of requests that an individual child server process can handle. | An integer greater than 0 . |
maxspareservers |
Sets the maximum number of idle child server processes. | An integer greater than 0 . |
minspareservers |
Sets the minimum number of idle child server processes. | An integer greater than 0 . |
rlimit_cpu_hard |
Maximum number of CPU seconds a process can use. | An integer greater than 0 . |
rlimit_cpu_soft |
Maximum number of CPU seconds a process can use. | An integer greater than 0 . |
rlimit_mem_hard |
Maximum number of bytes seconds a process can use. You can also set this directive in the Memory Usage Restrictions section of WHM's Apache Configuration interface (WHM >> Home >> Service Configuration >> Apache Configuration). | An integer greater than 0 or a blank string. |
rlimit_mem_soft |
Maximum number of bytes seconds a process can use. You can also set this directive in the Memory Usage Restrictions section of WHM's Apache Configuration interface (WHM >> Home >> Service Configuration >> Apache Configuration). |
An integer greater than 0 or a blank string. |
root_options |
Sets options that pertain to the root (/ ) directory. |
A space-separated list that contains one or more of the following strings:
|
serverlimit |
The maximum configured value for the MaxRequestWorkers directive for the lifetime of the Apache process. | An integer greater than 0 . |
servername |
The default server name. This value is read-only and you cannot change it with this class. | None. |
serveradmin |
The server administrator's email address. This value is read-only and you cannot change it with this class. | None. |
serversignature |
Whether the server information appears in error results and other information that the server generates. |
|
servertokens |
The amount of information that Apache provides to visitors in Server HTTP response headers. |
|
sslciphersuite |
Sets the OpenSSL ciphers that Apache uses. | A string of colon-separated ciphers. |
sslprotocol |
The SSL and TLS protocols that the client and server negotiate during the SSL/TLS handshake phase. | A space-separated string of protocols. |
startservers |
The number of child server processes that Apache creates when it starts. | An integer greater than 1. |
symlink_protect |
Enables the Symlink Protection patch. This improves Apache's ability to detect a race condition. |
|
timeout |
The amount of time, in seconds, that Apache waits for an event before the request fails. An integer between 3 and 604800 . |
|
traceenable |
Allows or disallows TRACE requests. |
|
Customize your Apache configuration in the user interface
The WHM interface provides several ways to customize your Apache configuration:
- cPanel & WHM sets several Apache directives by default. These directives affect the whole server. To change these directives, use the Global Configuration section of WHM's Apache Configuration interface ( WHM >> Home >> Service Configuration >> Apache Configuration ).
-
To modify the Apache configuration's include files through WHM, use the
Include Editor
section of WHM's Apache Configuration interface ( WHM >> Home >> Service Configuration >> Apache Configuration ).
We provide several other ways to customize your system. You can also create custom configurations with the following actions:
- Create a custom template file for your Apache configuration. For more information, read our Custom Templates documentation.
- Add include files for your virtualhosts. For more information, read our Modify Apache Virtual Hosts with Include Files documentation.
For more information, read our Advanced Apache Configuration documentation.