Apache Web Server

Sevenval FIT uses an Apache Web server to process HTTP client requests. As of release 14.1.0, FIT uses the Apache Web server supplied by the respective Linux distribution instead of shipping its own HTTP daemon package.

Even though FIT uses the Apache system package, it comes with its own configuration. When you start the Web server with service fit14apache start (or the /opt/sevenval/fit14/sbin/apachectl script) the server root will be automatically set to /opt/sevenval/fit14/and the configuration will be taken from /opt/sevenval/fit14/conf/httpd.conf. This also happens when /etc/init.d/fit14apache starts the Web server at boot time.

Therefore, the FIT Apache Web server does not interfere with any other Web services being operated on the same system.

Configuring

As with older versions of Sevenval FIT, the configuration of the Apache Web server is split across multiple files.

You should not change the conf/httpd.conf file and the files in the conf/include/ directory, as they will get overwritten on software updates. Also do not edit the files in conf/vhosts/ as they are generated from the domain configuration.

Instead, put your customizations in the conf/include.global/ directory which is intended for global configuration options affecting all virtual hosts. .conf files therein are included by conf/httpd.conf and allow you to add or override certain configuration settings. A second directory (conf/include.local/) is provided for customization of certain virtual hosts. Both directories contain some example files.

All supported Linux distributions include an Apache 2.4 Web server. Thus, if you customize the Apache configuration as described above or include any httpd-conf sections in the domains.conf.xml, make sure that the syntax is compatible with Apache 2.4.

Tuning

For scalability reasons, FIT uses the threaded worker multi-processing module (MPM). The threaded Apache may hold thousands of open TCP connections which allows long Keep-Alive timeouts without allocating huge amounts of RAM.

The server limits may be customized using the file conf/include.global/limits.conf. To do so, copy the example file conf/include.global/limits.conf.example to conf/include.global/limits.conf and adjust parameters like ServerLimit, MaxClients, ThreadsPerChild, and ThreadLimit.

  • Depending on the number of configured domains, an Apache process consumes 10 to 40 MB of RAM. Ensure that the total number of Apache processes specified by ServerLimit fits into memory together with the running PHP-FPM processes.
  • MaxClients should be large enough to allow clients to keep their TCP connections open for a relatively long time (at most KeepAliveTimeout seconds).
  • On a system which is operated without an SSL offloader and therefore terminates HTTPS connections itself, the ThreadsPerChild setting should not be significantly larger than 128. Otherwise the performance may decrease due to access conflicts within the underlying OpenSSL library.
  • If any of the engine timeouts, such as FIT_FETCH_MAX_TIMEOUT are increased significantly, the httpd ProxyTimeout may have to be adjusted accordingly.

Don’t forget to restart the Web server to activate the changes.

Monitoring

You should monitor the number of running httpd processes. It should at least be MinSpareThreads divided by ThreadsPerChild as specified in conf/httpd.conf or conf/include.global/limits.conf, respectively. It also should be significantly lower than the ServerLimit.

The Apache module mod_status can provide detailed information on the current system status under the URI /ServerStatus. A configuration example for mod_status is included in the conf/include.global/status.conf.example.