Apache HTTP Server is a widely used web server designed for flexibility and modularity, suitable for serving both static and dynamic content. It offers an array of features and modules, allowing administrators to tailor configurations for diverse performance and security needs. The architecture also supports integration with common tools like systemd.
Ubuntu and Debian are popular Linux distributions recognized for their stability and extensive community support. Their use of the apt package manager streamlines installation and maintenance of Apache, ensuring consistent deployments and simplified updates. Both platforms provide a reliable environment for hosting applications of various scales.
Configuration typically involves adjusting files such as /etc/apache2/apache2.conf and enabling key modules, like ssl or rewrite. This approach helps optimize resource usage, enhance security, and align server behavior with project requirements.
Steps to install and configure Apache on Ubuntu and Debian:
- Open your terminal application.
- Update the package list to ensure the latest packages are available.
$ sudo apt update [sudo] password for user: Hit:1 http://ports.ubuntu.com/ubuntu-ports lunar InRelease Hit:2 http://ports.ubuntu.com/ubuntu-ports lunar-updates InRelease Hit:3 http://ports.ubuntu.com/ubuntu-ports lunar-backports InRelease Hit:4 http://ports.ubuntu.com/ubuntu-ports lunar-security InRelease Reading package lists... Done Building dependency tree... Done Reading state information... Done All packages are up to date.
- Install the Apache2 package along with its dependencies.
$ sudo apt install --assume-yes apache2 Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap Suggested packages: apache2-doc apache2-suexec-pristine | apache2-suexec-custom The following NEW packages will be installed: apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap 0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded. Need to get 1,866 kB of archives. After this operation, 13.0 MB of additional disk space will be used. ##### snipped
- Modify the Apache configuration file as needed.
$ sudo vi /etc/apache2/apache2.conf
Related: Understanding Apache web server configuration files
Related: Guide listing for Apache - Test the configuration to check for errors.
sudo apachectl configtest AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK
- Restart the Apache2 service to apply the changes.
$ sudo systemctl restart apache2
- Enable the Apache2 service to start automatically on boot.
$ sudo systemctl enable apache2 Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable apache2
- Configure the firewall to allow HTTP and HTTPS traffic if firewall is enabled.
$ sudo ufw allow http Rules updated Rules updated (v6) $ sudo ufw allow https Rules updated Rules updated (v6)
- Verify that Apache is running by accessing it through a web browser.
$ curl 127.0.0.1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <!-- Modified from the Debian original for Ubuntu Last updated: 2022-03-22 See: https://launchpad.net/bugs/1966004 --> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Apache2 Ubuntu Default Page: It works</title> <style type="text/css" media="screen"> * { margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; } body, html { ##### snipped
This guide is tested on Ubuntu:
Version | Code Name |
---|---|
22.04 LTS | Jammy Jellyfish |
23.10 | Mantic Minotaur |
24.04 LTS | Noble Numbat |

Mohd Shakir Zakaria is a cloud architect with deep roots in software development and open-source advocacy. Certified in AWS, Red Hat, VMware, ITIL, and Linux, he specializes in designing and managing robust cloud and on-premises infrastructures.
Comment anonymously. Login not required.