
Apache is an open-source web server application that enables the delivery of static and dynamic web applications on a server. It's highly customized, supports multiple modular extensions, and can work as a reverse proxy or load balancer to deliver web applications or backend services on your server.
This article explains how to install the Apache web server on Ubuntu 24.04 and securely deliver web applications using virtual host configurations on your server.
Before you begin:
app.example.com.The Apache web server package is available in the default repositories on Ubuntu 24.04. Follow the steps below to install the latest Apache version using the default APT package manager and enable the web server to automatically start at boot time.
Update the server's package index.
Install the Apache web server package.
View the installed Apache web server version.
Output:
Allow connections on the HTTP port 80 through the default UFW firewall configurations.
Access your public server IP using a web browser such as Chrome and verify that the default Apache web page displays.
Apache runs with the apache system service profile that manages the web server runtime processes on your server. Follow the steps below to enable the Apache web server to start at boot time, and verify the system service status.
Enable the Apache service to automatically start at boot time.
Output:
Start the Apache web server.
View the Apache service status and verify that it's active on your server.
Output:
Stop the Apache web server.
Restart the Apache web server.
The Apache web server delivers web applications using virtual host configurations on your server. The default virtual host listens for incoming connections using all server IP addresses on the default HTTP port 80. Follow the steps below to disable the default virtual host and create a new virtual host to listen for connection requests using your domain on the default HTTP port 80.
Create a new Apache virtual host configuration file in the /etc/apache2/sites-available/ directory using a text editor such as nano. For example, website.conf.
Add the following contents to the file. Replace app.example.com with your domain and webmaster@example.com with your web administrator email.
Save and close the file.
The above Apache configuration creates a new virtual host that delivers web application files from the /var/www/html/website directory using your domain app.example.com. Within the configuration:
<VirtualHost *:80>: Sets the virtual host listening address. The value 80 enables the HTTP port 80.ServerAdmin webmaster@example.com: Specifies the web server administrator email address to send critical errors and alerts.ServerName example.com: Sets the virtual host domain to use for delivering web applications on your server.DocumentRoot /var/www/html/website: Sets the virtual host web root directory that contains the web application files to serve on your domain.DirectoryIndex index.html: Specifies the default index web application file to serve when the virtual host domain app.example.com is accessed.ErrorLog ${APACHE_LOG_DIR}/error.log: Sets a custom log file to store your virtual host error logs.CustomLog ${APACHE_LOG_DIR}/access.log combined: Sets the virtual host access log file location using the combined log format.<Directory /var/www/html/example>: Defines the configurations to apply on the web root directory requests.Options Indexes FollowSymLinks: Allows directory listing Indexes and symbolic links FollowSymLinks.AllowOverride All: Allows .htaccess files to override the Apache virtual host configurations.Require all granted: Allows all domain users to access the web root directory files.Disable the default Apache virtual host configuration.
Enable the new Apache virtual host configuration.
Test the Apache configuration for errors.
Output:
Create the web root directory /var/www/html/website referenced in your virtual host configuration.
Create a new sample HTML application index.html file in the web root directory.
Add the following contents to the file.
Save and close the file.
The above HTML code displays Greetings from Vultr message when the application is accessed using your virtual host domain app.example.com
Grant the web server user and group www-data ownership privileges to the /var/www/html/website web root directory.
Restart the Apache web server to apply your configuration changes.
The Apache web server listens for connection requests on the HTTP port 80 by default. HTTP enables unencrypted requests between your web server and a user's browser. HTTPS enables encrypted connections using valid SSL certificates to authenticate the web server with the user's browser. Follow the steps below to secure the Apache web server with trusted Let's Encrypt SSL certificates to enable encrypt network connections and forward all HTTP requests to HTTPS.
Install the Certbot Let's Encrypt client package using the Snap package manager.
Request a new Let's Encrypt SSL certificate on your server using your virtual host domain. Replace app.example.com with your actual domain and hello@example.com with your email address.
Your output should be similar to the one below when successful.
Test the Certbot SSL certificate renewal process.
Output:
Restart the Apache web server to apply your SSL configuration changes.
Uncomplicated Firewall (UFW) is active and enabled on Vultr Ubuntu 24.04 servers by default. Follow the steps below to configure the UFW utility and allow network connections using the Apache web server firewall profile.
List all available UFW application profiles.
Verify that the default Apache profile apache is available similar to the following output:
Allow the Apache Full profile to enable both HTTP port 80 and HTTPS port 443 connections through the firewall.
Reload UFW to apply the firewall changes.
View the firewall status and verify that the new rules are available.
Output:
Access your virtual host domain app.example.com in a new web browser window and verify that Apache serves your HTML application with a Greetings from Vultr message.
You have installed the Apache web server on an Ubuntu 24.04 server. Apache enables you to host static websites and integrate with dynamic content processors such as PHP to serve modern web applications such as WordPress on your server. In addition, you can use the Apache web server as a reverse proxy to securely deliver your backend services using the mod_proxy extension on your server. For more information and configuration options, visit the Apache documentation.
0 Comments
Be the first to comment and share your perspective with the community.