DebianDebian Based

How To Install Apache on Debian 12

Install Apache on Debian 12

In this tutorial, we will show you how to install Apache on Debian 12. For those of you who didn’t know, Apache is a widely-used, open-source web server that powers a significant portion of the internet.

This article assumes you have at least basic knowledge of Linux, know how to use the shell, and most importantly, you host your site on your own VPS. The installation is quite simple and assumes you are running in the root account, if not you may need to add ‘sudo‘ to the commands to get root privileges. I will show you the step-by-step installation of the Apache web server on a Debian 12 (Bookworm).


  • A server running one of the following operating systems: Debian 12 (Bookworm).
  • It’s recommended that you use a fresh OS install to prevent any potential issues.
  • SSH access to the server (or just open Terminal if you’re on a desktop).
  • An active internet connection. You’ll need an internet connection to download the necessary packages and dependencies for Apache.
  • A non-root sudo user or access to the root user. We recommend acting as a non-root sudo user, however, as you can harm your system if you’re not careful when acting as the root.

Install Apache on Debian 12

Step 1. Before we install any software, it’s important to make sure your system is up to date by running the following apt commands in the terminal:

sudo apt update

This command will refresh the repository, allowing you to install the latest versions of software packages.

Step 2. Installing Apache on Debian 12.

Now that the repository is up to date, you can proceed with the installation of Apache:

sudo apt install apache2

After the installation is complete, you can check the Apache service status to ensure it is running correctly:

sudo systemctl status apache2

If Apache is running successfully, you will see an “active (running)” message in the output. You can also verify by visiting your server’s IP address or domain name in a web browser. You should see the default Apache landing page if everything is set up correctly.

Step 3. Basic Configuration of Apache.

Now that Apache is installed, let’s explore some basic configuration options to customize its behavior according to your requirements.

  • Understanding the Apache Configuration File Structure:

The Apache configuration files are located in the /etc/apache2 directory. The primary configuration file is apache2.conf, while additional configurations are stored in the conf-available and conf-enabled directories.

  • Adjusting Global Server Settings:

To modify the global server settings, open the apache2.conf file in a text editor:

sudo nano /etc/apache2/apache2.conf

Here, you can tweak various options such as the server name, port, and default document root directory.

  • Configuring Virtual Hosts for Multiple Websites:

Apache allows you to host multiple websites on a single server using virtual hosts. To create a new virtual host, navigate to the sites-available directory:

cd /etc/apache2/sites-available

Copy the default virtual host configuration file to create a new one:

sudo cp 000-default.conf

Edit the newly created configuration file:

sudo nano

Replace with your desired domain or subdomain. Configure the document root, log file paths, and other settings specific to your website.

  • Enabling Necessary Modules for Enhanced Functionality:

Apache provides various modules to extend its functionality. To enable a module, use the a2enmod a command followed by the module name:

sudo a2enmod ssl

This command enables the SSL module, which is necessary for secure connections.

Step 4. Setting up a Basic Virtual Host for a Sample Website.

In this example, we’ll set up a virtual host for a sample website called “”:

sudo nano /etc/apache2/sites-available/

Add the following content to the file:

<VirtualHost *:80>
DocumentRoot /var/www/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Save the file and exit the text editor and enable the virtual host using the following command:

sudo a2ensite
sudo systemctl reload apache2

Step 5. Configuring SSL/TLS Certificates for Secure Connections.

To secure your website with SSL/TLS, you need to obtain and configure an SSL certificate. Let’s Encrypt provides free SSL certificates through an automated process:

sudo apt install certbot

Obtain a certificate for your domain:

sudo certbot certonly --webroot -w /var/www/ -d

Update your virtual host configuration to enable HTTPS:

<VirtualHost *:443>
DocumentRoot /var/www/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/
SSLCertificateKeyFile /etc/letsencrypt/live/

Save the file and exit the text editor and reload Apache to apply the changes:

sudo systemctl reload apache2

Step 6. Troubleshooting and Common Issues.

During the installation and configuration process, you may encounter some common errors. Here are a few troubleshooting tips:

  • Check Apache’s error logs for potential issues:
sudo tail -f /var/log/apache2/error.log
  • Verify the syntax of your configuration files:
sudo apache2ctl configtest
  • Ensure that necessary ports (such as 80 for HTTP or 443 for HTTPS) are open in your firewall.
  • Consult the Apache documentation, official forums, or online communities for specific issues you may encounter.

Congratulations! You have successfully installed Apache. Thanks for using this tutorial for installing the latest version of the Apache web server on Debian 11 Bookworm. For additional help or useful information, we recommend you check the official Apache website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!


r00t is a seasoned Linux system administrator with a wealth of experience in the field. Known for his contributions to, r00t has authored numerous tutorials and guides, helping users navigate the complexities of Linux systems. His expertise spans across various Linux distributions, including Ubuntu, CentOS, and Debian. r00t's work is characterized by his ability to simplify complex concepts, making Linux more accessible to users of all skill levels. His dedication to the Linux community and his commitment to sharing knowledge makes him a respected figure in the field.
Back to top button