
Apache is an open-source web server that serves both static and dynamic web applications. It's highly customizable, supports numerous modular extensions, and can function as a reverse proxy or load balancer for delivering web applications or backend services on your server.
This article provides instructions for installing Apache on Ubuntu 20.04 and configuring it to securely deliver web applications using virtual hosts.
Before you begin:
Have an Ubuntu 20.04 server.
Set up a new A record for your domain that points to the server IP address.
Access the server using SSH as a non-root user with sudo privileges.
The Apache web server package is included in the default repositories on Ubuntu 20.04. Follow the steps below to install the latest version of Apache using the default APT package manager and configure the web server to start automatically 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 operates under the apache system service profile, which manages the web server's runtime processes on your server. Follow the steps below to enable Apache to start automatically at boot time and check the status of the system service.
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 uses virtual host configurations to deliver web applications. By default, the virtual host listens for incoming connections on all server IP addresses through the default HTTP port 80. Follow the steps below to disable the default virtual host and set up a new virtual host that listens for requests on your domain using port 80.
Create a new Apache virtual host configuration file in the /etc/apache2/sites-available/ directory. You can use a text editor like nano. For example, create a file named 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 serves web application files from the /var/www/html/website directory using the domain app.example.com. The configuration includes the following key settings:
<VirtualHost *:80>: Specifies the virtual host to listen on HTTP port 80.ServerAdmin webmaster@example.com: Sets the email address of the web server administrator for error and alert notifications.ServerName example.com: Defines the domain name for the virtual host to deliver web applications.DocumentRoot /var/www/html/website: Specifies the directory where web application files are stored and served from.DirectoryIndex index.html: Defines the default file (index.html) to be served when accessing the virtual host domain app.example.com.ErrorLog ${APACHE_LOG_DIR}/error.log: Configures a custom file path to store error logs for the virtual host.CustomLog ${APACHE_LOG_DIR}/access.log combined: Specifies the access log file location and format (combined).<Directory /var/www/html/example>: Defines configurations for handling requests to the web root directory.Options Indexes FollowSymLinks: Enables directory listing (Indexes) and symbolic link following (FollowSymLinks).AllowOverride All: Allows .htaccess files to override Apache settings.Require all granted: Grants access to all users for the files in the web root directory.Disable the default Apache virtual host configuration.
Enable the new Apache virtual host configuration.
Create the web root directory /var/www/html/website referenced in your virtual host configuration.
Test the Apache configuration for errors.
Output:
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.
By default, the Apache web server listens for connection requests on HTTP port 80, which allows unencrypted communication between the server and a user's browser. HTTPS, on the other hand, provides encrypted connections by using valid SSL certificates to authenticate the web server with the user's browser. Follow the steps below to secure your Apache server with trusted Let's Encrypt SSL certificates, enabling encrypted network connections and redirecting all HTTP traffic 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 enabled by default on Vultr Ubuntu 20.04 servers. Follow the steps below to configure UFW and allow network connections through 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 successfully installed the Apache web server on your Ubuntu 20.04 server. Apache allows you to host static websites and integrate with dynamic content processors like PHP to serve modern web applications, including WordPress. Additionally, you can configure Apache as a reverse proxy using the mod_proxy extension to securely deliver backend services.
0 Comments
Be the first to comment and share your perspective with the community.