|
 |
|
|
41.4 Installing, Activating, and Configuring Modules
The Apache software is built in a modular fashion: all functionality
except some core tasks is handled by modules. This has progressed so far
that even HTTP is processed by a module (http_core).
Apache modules can be compiled into the Apache binary at build time or
dynamically loaded at runtime. Refer to Section 41.4.2,
Activation and Deactivation for details of how
to load modules dynamically.
Apache modules can be divided into four different categories:
- Base Modules
-
Base modules are compiled into Apache by default. Apache in SUSE
Linux has only mod_so (needed to load other modules) and http_core
compiled in. All others are available as shared objects: rather
than being included in the server binary itself, they can be included at
runtime.
- Extension Modules
-
In general, modules labeled as extensions are included in the
Apache software package, but are usually not compiled into the
server statically. In SUSE Linux, they are available as shared
objects that can be loaded into Apache at runtime.
- External Modules
-
Modules labeled external are not included in the official Apache
distribution. SUSE Linux provides several of them readily available
for use.
- Multiprocessing Modules
-
MPMs are responsible for accepting and handling requests to the Web
server, representing the core of the Web server software.
41.4.1 Module Installation
If you have followed the default way of installing Apache (described in
Section 41.1.2,
Installation),
it is installed with all base and extension modules, the multiprocessing
module Prefork MPM, and the external
module PHP5.
You can install additional external modules by starting YaST and
choosing . Now choose
and search for
apache. Among other packages, the result list contains
all available external Apache modules.
41.4.2 Activation and Deactivation
Using YaST, you can activate or deactivate the script language modules
(PHP5, Perl, Python, and Ruby) with the module configuration described in
HTTP Server Wizard. All
other modules can be enabled or disabled as described in
Server Modules.
If you prefer to activate or deactivate the modules manually, use the
commands a2enmod mod_foo
or a2dismod mod_foo,
respectively.
a2enmod -l outputs a list of all currently active
modules.
IMPORTANT: Including Configuration Files for External Modules
If you have activated external modules manually, make sure to load
their configuration files in all virtual host
configurations. Configuration files for external modules are located
under /etc/apache2/conf.d/ and are not loaded by
default. If you need the same modules on each virtual host, you can
include *.conf from this directory. Otherwise
include individual files. See
/etc/apache2/vhost.d/vhost.template for
examples.
41.4.3 Base and Extension Modules
All base and extension modules are described in detail in the Apache
documentation. Only a brief description of the most important
modules is available here. Refer to https://httpd.apache.org/docs/2.2/mod/
to learn details about each module.
- mod_alias
-
Provides Alias and
Redirect directives with which you can
map a URl to a specific directory
(Alias) or redirect a requested URL to
another location. This module is enabled by default.
- mod_auth*
-
The authentication modules provide different authentication
methods: basic authentication with mod_auth_basic or digest
authentication with mod_auth_digest. Digest authentication in
Apache 2.2 is considered experimental.
mod_auth_basic and mod_auth_digest must be combined with an
authentication provider module, mod_authn_* (for example, mod_authn_file
for text file–based authentication) and with an authorization
module mod_authz_* (for example, mod_authz_user for user authorization).
More information about this topic is available in the
Authentication howto at https://httpd.apache.org/docs/2.2/howto/auth.html
- mod_autoindex
-
Autoindex generates directory listings when no index file (for
example, index.html) is present. The look and
feel of these indexes is configurable. This module is enabled by
default. However, directory listings are disabled by default via
the Options directive—overwrite
this setting in your virtual host configuration. The default
configuration file for this module is located at
/etc/apache2/mod_autoindex-defaults.conf.
- mod_cgi
-
mod_cgi is needed to execute CGI scripts. This module is enabled
by default.
- mod_deflate
-
Using this module, Apache can be configured to compress given
file types on the fly before delivering them.
- mod_dir
-
mod_dir provides the DirectoryIndex
directive with which you can configure which files are
automatically delivered when a directory is requested
(index.html by default). It also provides an
automatic redirect to the correct URl when a directory request
does not contain a trailing slash. This module is enabled by
default.
- mod_expires
-
With mod_expires, you can control how often proxy and browser
caches refresh your documents by sending an
Expires header. This module is enabled
by default.
- mod_include
-
mod_include lets you use Server Side Includes (SSI), which
provide a basic functionality to generate HTML pages dynamically.
This module is enabled by default.
- mod_info
-
Provides a comprehensive overview of the server configuration
under https://localhost/server-info/. For security reasons, you
should always limit access to this URL. By default only
localhost is allowed
to access this URL. mod_info is configured at
/etc/apache2/mod_info.conf
- mod_log_config
-
With this module, you can configure the looks of the Apache log
files. This module is enabled by default.
- mod_mime
-
The mime module takes care that a file is delivered with the
correct MIME header based on the filename's extension (for
example text/html for HTML documents).
This module is enabled by default.
- mod_negotiation
-
Necessary for content negotiation. See https://httpd.apache.org/docs/2.2/content-negotiation.html
for more information. This module is enabled by default.
- mod_rewrite
-
Provides the functionality of mod_alias, but offers more features
and flexibility. With mod_rewrite, you can redirect URLs based on
multiple rules, request headers, and more.
- mod_speling
-
mod_speling attempts to automatically correct typographical errors in
URLs, such
as capitalization errors.
- mod_ssl
-
Enables encrypted connections between Web server and
clients. See Section 41.6,
Setting Up a Secure Web Server with SSL for
details. This module is enabled by default.
- mod_status
-
Provides information on server activity and performance under
https://localhost/server-status/. For security reasons, you
should always limit access to this URL. By default, only
localhost is allowed
to access this URl. mod_status is configured at
/etc/apache2/mod_status.conf
- mod_suexec
-
mod_suexec lets you run CGI scripts under a different user
and group. This module is enabled by default.
- mod_userdir
-
Enables user-specific directories available under
~user/. The
UserDir directive must be specified in
the configuration. This
module is enabled by default.
41.4.4 Multiprocessing Modules
SUSE Linux Enterprise Server provides two different multiprocessing modules (MPMs) for
use with Apache.
Prefork MPM
The prefork MPM implements a nonthreaded, preforking Web server. It
makes the Web server behave similarly to Apache version 1.x in that
it isolates each request and handles it by forking a separate child
process. Thus problematic requests cannot affect others, avoiding a
lockup of the Web server.
While providing stability with this process-based approach, the
prefork MPM consumes more system resources than its counterpart, the
worker MPM. The prefork MPM is considered the default MPM for
Unix-based operating systems.
IMPORTANT: MPMs in This Document
This document assumes Apache is used with the prefork MPM.
Worker MPM
The worker MPM provides a multithreaded Web server. A thread is a
lighter form of a process. The advantage of a thread
over a process is its lower resource consumption. Instead of only
forking child processes, the worker MPM serves requests by using
threads with server processes. The preforked child processes are
multithreaded. This approach makes Apache perform better by consuming
fewer system resources than the prefork MPM.
One major disadvantage is the stability of the worker MPM: if a
thread becomes corrupt, all threads of a process can be affected. In
the worst case, this may result in a server crash. Especially when
using the Common Gateway Interface (CGI) with Apache under heavy
load, internal server errors might occur due to threads unable to
communicate with system resources. Another argument against using the
worker MPM with Apache is that not all available Apache modules are
thread-safe and thus cannot be used in conjunction with the worker
MPM.
WARNING: Using PHP Modules with MPMs
Not all available PHP modules are thread-safe. Using the worker MPM
with mod_php is strongly discouraged.
41.4.5 External Modules
Find a list of all external modules shipped with SUSE Linux Enterprise Server
here. Find the module's documentation in the listed directory.
- FastCGI
-
FastCGI is a language-independent, scalable, and open extension
to CGI that provides high performance without the limitations of
server-specific APIs. FastCGI applications are very fast because
they are persistent. There is no per-request start-up and
initialization overhead.
-
Package Name: apache2-mod_fastcgi
-
Configuration File: /etc/apache2/conf.d/mod_fastcgi.conf
-
More Information: /usr/share/doc/packages/apache2-mod_fastcgi
- mod_perl
-
mod_perl enables you to run Perl scripts in an embedded
interpreter. The persistent interpreter embedded in the server
avoids the overhead of starting an external interpreter and the
penalty of Perl start-up time.
-
Package Name: apache2-mod_perl
-
Configuration File: /etc/apache2/conf.d/mod_perl.conf
-
More Information: /usr/share/doc/packages/apache2-mod_perl
- mod_php5
-
PHP is a server-side, cross-platform HTML embedded scripting
language.
-
Package Name: apache2-mod_php5
-
Configuration File: /etc/apache2/conf.d/php5.conf
-
More Information:
/usr/share/doc/packages/apache2-mod_php5
- mod_python
-
mod_python allows embedding Python within the Apache HTTP server
for a considerable boost in performance and added flexibility in
designing Web-based applications.
-
Package Name: apache2-mod_python
-
More Information: /usr/share/doc/packages/apache2-mod_python
- mod_ruby
-
mod_ruby embeds the Ruby interpreter into the Apache Web server,
allowing Ruby CGI scripts to be executed natively. These scripts
start much faster than without mod_ruby.
-
Package Name: apache2-mod_ruby
-
More Information: /usr/share/doc/packages/apache2-mod_ruby
- mod_jk-ap20
-
This module provides connectors between Apache and a Tomcat
Servlet Container.
-
Package Name: mod_jk-ap20
-
More Information: /usr/share/doc/packages/mod_jk-ap20
41.4.6 Compilation
Apache can be extended by advanced users by writing custom modules. To
develop modules for Apache or compile third-party modules,
the package apache2-devel is required along
with the corresponding development tools.
apache2-devel also contains the
apxs2 tools, which are necessary for compiling
additional modules for Apache.
apxs2 enables the compilation and installation of
modules from source code (including the required changes to the
configuration files), which creates dynamic shared
objects (DSOs) that can be loaded into Apache at
runtime.
The apxs2 binaries are located under
/usr/sbin:
-
/usr/sbin/apxs2—suitable for building
an extension module that works with any MPM. The installation
location is /usr/lib/apache2.
-
/usr/sbin/apxs2-prefork—suitable for
prefork MPM modules. The installation location is
/usr/lib/apache2-prefork.
-
/usr/sbin/apxs2-worker—suitable for
worker MPM modules.
apxs2 installs modules so they can be used for all
MPMs. The other two programs install modules so they can only be used
for the respective MPMs. apxs2 installs modules in
/usr/lib/apache2,
apxs2-prefork and apxs2-worker
installs modules in /usr/lib/apache2-prefork or
/usr/lib/apache2-worker.
Install and activate a module from source code with the commands
cd /path/to/module/source; apxs2 -cia
mod_foo.c (-c
compiles the module, -i installs it, and
-a activates it). Other options of
apxs2 are described in the
apxs2(1) man page.
|
|
|