3.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.

Last updated

Was this helpful?