Apache Web Server on Ubuntu 14.04 LTS
Updated by Elle Krout
The Apache HTTP Web Sever (Apache) is an open source web application for deploying web servers. This guide explains how to install and configure an Apache web server on Ubuntu 14.04 LTS.
If instead you would like to install a full LAMP (Linux, Apache, MySQL and PHP) stack, please see the LAMP on Ubuntu 14.04 guide.
This guide is written for a non-root user. Commands that require elevated privileges are prefixed with
sudo. If you’re not familiar with thesudocommand, you can check our Users and Groups guide.
Before You Begin
-
Ensure that you have followed the Getting Started and Securing Your Server guides, and the Linode’s hostname is set.
To check your hostname run:
1 2
hostname hostname -f
The first command should show your short hostname, and the second should show your fully qualified domain name (FQDN).
-
Update your system:
1
sudo apt-get update && sudo apt-get upgrade
Install Apache
-
Install Apache 2.4, its documentation, and a collection of utilities:
1
sudo apt-get install apache2 apache2-doc apache2-utils
-
Edit the main Apache configuration file and turn off the
KeepAlivesetting:- /etc/apache2/apache2.conf
-
1
KeepAlive Off
Configure the Multi-Processing Module
Apache 2.4 offers various multi-processing modules (MPMs) to handle connections. The default MPM is the event module, although the prefork module is still recommended if you’re using standard PHP.
The Prefork Module
-
Open
/etc/apache2/mods-available/mpm_prefork.confin your text editor and edit the values as needed. The following is optimized for a 1GB Linode:- /etc/apache2/mods-available/mpm_prefork.conf
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# prefork MPM # StartServers: number of server processes to start # MinSpareServers: minimum number of server processes which are kept spare # MaxSpareServers: maximum number of server processes which are kept spare # MaxRequestWorkers: maximum number of server processes allowed to start # MaxConnectionsPerChild: maximum number of requests a server process serves <IfModule mpm_prefork_module> StartServers 2 MinSpareServers 6 MaxSpareServers 12 MaxRequestWorkers 30 MaxConnectionsPerChild 3000 </IfModule>
-
On Ubuntu 14.04, the event module is enabled by default. Disable it, and enable the prefork module :
1 2
sudo a2dismod mpm_event sudo a2enmod mpm_prefork
-
Restart Apache:
1
sudo service apache2 restart
The Event Module
If you choose to keep the event module enabled, these settings are suggested for a 1GB Linode.
-
Open
/etc/apache2/mods-available/mpm_event.confin your text editor and edit the values as needed:- /etc/apache2/mods-available/mpm_event.comf
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# event MPM # StartServers: initial number of server processes to start # MinSpareThreads: minimum number of worker threads which are kept spare # MaxSpareThreads: maximum number of worker threads which are kept spare # ThreadsPerChild: constant number of worker threads in each server process # MaxRequestWorkers: maximum number of worker threads # MaxConnectionsPerChild: maximum number of requests a server process serves <IfModule mpm_event_module> StartServers 2 MinSpareThreads 15 MaxSpareThreads 50 ThreadLimit 64 ThreadsPerChild 25 MaxRequestWorkers 30 MaxConnectionsPerChild 3000 </IfModule>
-
Restart Apache:
1
sudo service apache2 restart
Configure Virtual Hosting
Apache supports name-based virtual hosting, which allows you to host multiple domains on a single server with a single IP. Although there are different ways to set up virtual hosts, the method below is recommended.
-
Disable the default Apache virtual host:
1
sudo a2dissite 000-default.conf
-
Create an
example.com.conffile in/etc/apache2/sites-availablewith your text editor, replacing instances ofexample.comwith your own domain URL in both the configuration file and in the file name:- /etc/apache2/sites-available/example.com.conf
-
1 2 3 4 5 6 7 8
<VirtualHost *:80> ServerAdmin webmaster@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html/ ErrorLog /var/www/example.com/logs/error.log CustomLog /var/www/example.com/logs/access.log combined </VirtualHost>
Repeat this process for any other domains you host.
If you would like to enable Perl support, add the following lines above the closing
</VirtualHost>tag:- /etc/apache2/sites-available/example.com.conf
-
1 2
Options ExecCGI AddHandler cgi-script .pl
-
Create directories for your websites and websites’ logs, replacing
example.comwith your own domain information:1 2
sudo mkdir -p /var/www/example.com/public_html sudo mkdir /var/www/example.com/logs
-
Enable the site:
1
sudo a2ensite example.com.conf
-
Restart Apache:
1
sudo service apache2 restart
Apache Mods and Scripting
Install Apache Modules
One of Apache’s strengths is its ability to be customized with modules. The default installation directory for Apache modules is the /etc/apache2/mods-available/ directory.
-
List available Apache modules:
1
sudo apt-cache search libapache2*
-
Install any desired modules:
1
sudo apt-get install [module-name]
-
All mods are located in the
/etc/apache2/mods-avaiabledirectory. Edit the.conffile of any installed module if needed, then enable the module:1
sudo a2enmod [module-name]
To disable a module that is currently enabled:
1
a2dismod [module-name]
Optional: Install Support for Scripting
The following commands install Apache support for server-side scripting in PHP, Ruby, Python, and Perl. Support for these languages is optional based on your server environment.
To install:
-
Perl support:
1
sudo apt-get install libapache2-mod-perl2
-
Python support:
1
sudo apt-get install libapache2-mod-python
-
PHP support:
1
sudo apt-get install libapache2-mod-php5 php5 php-pear php5-xcache
More Information
You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.
This guide is published under a CC BY-ND 3.0 license.