Skip to main content

Configuring the Apache webserver

1. Change the Server Name and Port:

File to Edit: httpd.conf or apache2.conf

Purpose: To set the server's hostname and port.

Steps:

  • Open the Apache configuration file. On Ubuntu/Debian, it's typically /etc/apache2/apache2.conf. On CentOS/RHEL, it's usually /etc/httpd/conf/httpd.conf.
  • Look for the ServerName directive and set it to your desired hostname:
ServerName yourhostname.com
  • If you want to change the default HTTP port (80), modify the Listen directive:
Listen 8080

2. Create a Virtual Host:

File to Edit: Create a new configuration file in the sites-available directory (on Debian/Ubuntu) or /etc/httpd/conf.d (on CentOS/RHEL).

Purpose: To host multiple websites or applications on the same Apache server.

Steps:

  • Create a new configuration file for your virtual host, e.g., mywebsite.conf:

For Ubuntu/Debian:

sudo nano /etc/apache2/sites-available/mywebsite.conf

For CentOS/RHEL:

sudo nano /etc/httpd/conf.d/mywebsite.conf
  • Add a configuration block for your virtual host, specifying the server name, document root, error log, and custom log:
<VirtualHost *:80>
ServerAdmin webmaster@yourwebsite.com
ServerName yourwebsite.com
DocumentRoot /var/www/html/yourwebsite
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
  • Save the file and exit the text editor.

  • Enable the virtual host:

For Ubuntu/Debian:

sudo a2ensite mywebsite.conf

For CentOS/RHEL, if you placed the configuration file in /etc/httpd/conf.d, it should be automatically enabled.

3. Secure the Web Server with SSL/TLS:

File to Edit: /etc/apache2/sites-available/default-ssl.conf (on Debian/Ubuntu) or /etc/httpd/conf.d/ssl.conf (on CentOS/RHEL).

Purpose: To enable HTTPS for secure connections.

Steps:

  • Ensure you have SSL/TLS certificates installed on your server. You can obtain certificates from a Certificate Authority or use Let's Encrypt.

  • Edit the SSL virtual host configuration file:

For Ubuntu/Debian:

sudo nano /etc/apache2/sites-available/default-ssl.conf

For CentOS/RHEL:

sudo nano /etc/httpd/conf.d/ssl.conf
  • Update the SSLCertificateFile and SSLCertificateKeyFile directives with the paths to your certificate and private key files:
SSLCertificateFile /path/to/your/certificate.crt
SSLCertificateKeyFile /path/to/your/privatekey.key
  • Save the file and exit the text editor.

4. Implement Access Control:

File to Edit: Virtual host configuration file (e.g., mywebsite.conf)

Purpose: To control access to specific directories or resources.

Steps:

  • Open the virtual host configuration file you created earlier.

  • Add directives to specify access control. For example, to restrict access to a directory:

<Directory /var/www/html/yourwebsite/restricted>
Require all denied
</Directory>

This example denies access to the /var/www/html/yourwebsite/restricted directory for all users.

  • Save the file and exit the text editor.

5. Enable .htaccess Overrides (Optional):

File to Edit: Virtual host configuration file (e.g., mywebsite.conf)

Purpose: To allow per-directory configuration using .htaccess files.

Steps:

  • Open the virtual host configuration file.

  • Add the AllowOverride directive within a <Directory> block to specify which directives can be overridden by .htaccess files:

<Directory /var/www/html/yourwebsite>
AllowOverride All
</Directory>

This example allows all directives to be overridden using .htaccess files in the /var/www/html/yourwebsite directory.

  • Save the file and exit the text editor.

6. Restart Apache:

After making configuration changes, restart the Apache web server to apply the changes:

For Ubuntu/Debian:

sudo systemctl restart apache2

For CentOS/RHEL:

sudo systemctl restart httpd

These steps should help you configure Apache for various common tasks. Remember to adapt the configurations to your specific use case and requirements.