Apache HTTP server


The Apache HTTP Server, an open-source web server developed by the Apache Software Foundation. The Apache server is used to host web content. It responds to requests for content from web browsers, such as Internet Explorer and Firefox.


Note: The post uses RHEL/CentOS 7 distribution to install and configure the Apache server. Although the start/stop/install commands may differ the configuration steps are same in all the Linux distribution


Installing Apache


To configure your system as a web server, begin by installing the httpd software package.

# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
# systemctl start httpd


Use the systemctl utility to enable the HTTP daemon to start at boot time and also to start the daemon immediately.



Configuration files


The main configuration file for Apache is /etc/httpd/conf/httpd.conf. An auxiliary directory, /etc/httpd/conf.d, also exists to store configuration files that are included in the main configuration file. Configuration files that load modules are in the /etc/httpd/conf.modules.d directory.


New apachectl subcommands in CentOS / RHEL 7


A new apachectl sub-commands are available in CentOS / RHEL 7. The following example uses the configtest subcommand to check the configuration for possible errors.

# apachectl configtest


Use the graceful subcommand to reload the configuration without affecting active requests.

# apachectl graceful


Configuring Apache


The main configuration file for Apache is /etc/httpd/conf/httpd.conf. Apache runs as installed, but you can modify configuration directives in this file to customize Apache for your environment. Some of these directives are described in the post below.


Testing Apache HTTP server


You can confirm that Apache is working by pointing a browser on the local system to http://localhost as shown in the picture below. You can also point a browser to http:// followed by the IP Public address of the server or the ServerName directive that you specified in the configuration file. The test page shown below confirms the functioning Apache HTTP server.


To test the display of actual content, create an HTML file named index.html in the directory specified by the DocumentRoot directive (the default directory is /var/www/html). Apache automatically displays the index.html file in this directory, if it exists.


Apache Containers


Apache containers are special configuration directives that group other directives. The containers use XML-style tags, meaning that the beginning of a container is <name> and the end is </name>. An index of all the container directives is available at http://httpd.apache.org/docs/current/sections.html. Refer the post below to get the most commonly used Apache containers.


Apache Virtual Hosts


Apache supports virtual hosts, meaning that a single Apache server can respond to requests directed to multiple IP addresses or hostnames. Each virtual host can provide content and be configured differently.

You can configure virtual hosts in two ways:

1. IP-based Virtual Hosts (host-by-IP)

2. Name-based Virtual Hosts (host-by-name)



With host-by-IP, each virtual host has its own IP address and port combination. The Apache web server responds to the IP address that the host resolves as. Host-by-IP is required for serving HTTPS requests due to restrictions in the Secure Sockets Layer (SSL) protocol.



With host-by-name, all virtual hosts share the common IP address. Apache responds to the request by mapping the hostname in the request to ServerName and ServerAlias directives in the particular virtual host’s configuration file.


Use the <VirtualHost host-name> container to implement virtual hosts. After the first VirtualHost is defined, all of the content served by Apache must also be moved into virtual hosts.


The following example is a simple name-based virtual hosts configuration:

      ServerName example1.com
      ServerAlias www.example1.com
      DocumentRoot /var/www/example1
      ErrorLog example1.error_log

      ServerName example2.com
      ServerAlias www.example2.com
      DocumentRoot /var/www/example2
      ErrorLog example2.error_log


Was this answer helpful? 0 Users Found This Useful (0 Votes)