Apache Web Server Cheat Sheet
Basic Commands
Start Apache:
sudo systemctl start apache2 # Debian/Ubuntu sudo systemctl start httpd # CentOS/RHEL
Stop Apache:
sudo systemctl stop apache2 # Debian/Ubuntu sudo systemctl stop httpd # CentOS/RHEL
Restart Apache:
sudo systemctl restart apache2 # Debian/Ubuntu sudo systemctl restart httpd # CentOS/RHEL
Reload Configuration:
sudo systemctl reload apache2 # Debian/Ubuntu sudo systemctl reload httpd # CentOS/RHEL
Enable Apache on Boot:
sudo systemctl enable apache2 # Debian/Ubuntu sudo systemctl enable httpd # CentOS/RHEL
Disable Apache on Boot:
sudo systemctl disable apache2 # Debian/Ubuntu sudo systemctl disable httpd # CentOS/RHEL
Configuration Files
Main Configuration File:
/etc/apache2/apache2.conf # Debian/Ubuntu /etc/httpd/conf/httpd.conf # CentOS/RHEL
Virtual Hosts Configuration:
/etc/apache2/sites-available/ # Debian/Ubuntu /etc/httpd/conf.d/ # CentOS/RHEL
Enabled Sites:
/etc/apache2/sites-enabled/ # Debian/Ubuntu
Modules Configuration:
/etc/apache2/mods-available/ # Debian/Ubuntu
/etc/httpd/conf.modules.d/ # CentOS/RHEL
Enabling and Disabling Sites
Enable a Site:
sudo a2ensite example.conf # Debian/Ubuntu
Disable a Site:
sudo a2dissite example.conf # Debian/Ubuntu
Activate Changes:
sudo systemctl reload apache2 # Debian/Ubuntu
Enabling and Disabling Modules
Enable a Module:
sudo a2enmod module_name # Debian/Ubuntu
Disable a Module:
sudo a2dismod module_name # Debian/Ubuntu
Activate Changes:
sudo systemctl restart apache2 # Debian/Ubuntu
Common Directives
DocumentRoot: Specifies the directory out of which Apache will serve files.
DocumentRoot /var/www/html
ServerName: Sets the hostname and port that the server uses to identify itself.
ServerName www.example.com
Directory: Controls the settings for a specific directory.
<Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
Listen: Specifies the port that Apache will listen on.
Listen 80
ErrorLog: Sets the name of the file to which the server will log any errors it encounters.
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog: Sets the filename and format of log files.
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSL Configuration
Enable SSL Module:
sudo a2enmod ssl # Debian/Ubuntu
Default SSL Configuration File:
/etc/apache2/sites-available/default-ssl.conf # Debian/Ubuntu /etc/httpd/conf.d/ssl.conf # CentOS/RHEL
Common SSL Directives:
SSLEngine on SSLCertificateFile /etc/ssl/certs/your_domain.crt SSLCertificateKeyFile /etc/ssl/private/your_domain.key SSLCertificateChainFile /etc/ssl/certs/chain.crt
Access Control
Require Directive:
<Directory /var/www/html> Require all granted </Directory>
Allow/Deny Directives:
<Directory /var/www/html> Order allow,deny Allow from all </Directory>
IP-based Access Control:
<Directory /var/www/html> Require ip 192.168.1.0/24 Require ip 10.0.0.0/16 </Directory>
Useful Commands and Tools
Test Configuration:
sudo apachectl configtest # Debian/Ubuntu sudo httpd -t # CentOS/RHEL
Check Apache Status:
sudo systemctl status apache2 # Debian/Ubuntu sudo systemctl status httpd # CentOS/RHEL
Log Files Location:
/var/log/apache2/ # Debian/Ubuntu /var/log/httpd/ # CentOS/RHEL
This cheat sheet provides a quick reference to the most commonly used Apache web server commands and configurations, helping you efficiently manage your server.