FedoraRHEL Based

How To Install Apache on Fedora 42

Install Apache on Fedora 42

Apache HTTP Server continues to be one of the most popular web server solutions in the Linux ecosystem, powering millions of websites worldwide. If you’re running Fedora 42, installing and configuring Apache provides you with a robust platform for hosting websites and web applications. This comprehensive guide walks you through the entire process from installation to optimization, ensuring you have a fully functional web server tailored to your needs.

Introduction

Apache HTTP Server (often simply called “Apache”) is an open-source web server software that plays a crucial role in the internet infrastructure. Known for its reliability, flexibility, and robust feature set, Apache has maintained its position as one of the most widely used web servers globally.

Fedora 42, the latest release in the Fedora Linux distribution family, offers an excellent platform for hosting web services with its cutting-edge features and security enhancements. The combination of Apache and Fedora creates a powerful, stable environment perfect for both development and production deployments.

In this guide, you’ll learn how to install, configure, secure, and optimize Apache on Fedora 42. Whether you’re a system administrator, web developer, or Linux enthusiast looking to set up a personal web server, this tutorial provides all the necessary information to get you started.

Prerequisites

Before proceeding with Apache installation on Fedora 42, ensure you have:

  • A Fedora 42 system with updated packages
  • Root or sudo access to the system
  • Basic familiarity with Linux command line operations
  • An active internet connection for downloading packages
  • Sufficient disk space (minimum 1GB recommended)
  • Properly configured hostname and network settings

It’s always a good practice to update your system before installing new software. Run the following command to ensure your system is up to date:

sudo dnf update -y

This update process ensures you have the latest security patches and package versions before proceeding with the Apache installation.

Installing Apache Web Server

There are two primary methods to install Apache on Fedora 42, depending on your specific needs and preferences.

Method 1: Minimal Installation

For a basic Apache installation without additional components, use the following command:

sudo dnf install httpd -y

This command installs the core Apache package (called httpd in Fedora) along with its essential dependencies. The -y flag automatically answers “yes” to confirmation prompts during installation.

Method 2: Complete Web Server Group Installation

For a more comprehensive setup that includes additional tools and modules often needed for web development, use the following command:

sudo dnf group install "Web Server" -y

This group installation includes:

  • Apache HTTP Server (httpd)
  • PHP and Perl support
  • The Squid caching proxy
  • Documentation
  • Traffic analysis tools
  • Other useful web server components

After installation completes, you can verify the Apache version and package information:

rpm -qi httpd

This command displays detailed information about the installed Apache package, including its version, release, build date, and a brief description.

Managing Apache Service

Apache runs as a system service in Fedora 42, which means you can control it using systemctl commands.

Starting the Apache Service

To start the Apache web server, run:

sudo systemctl start httpd.service

Checking Service Status

Verify that Apache is running correctly with:

sudo systemctl status httpd

This command shows the current status of the Apache service, including whether it’s active, any recent log messages, and resource usage information.

Enabling Apache to Start at Boot

To configure Apache to automatically start whenever your system boots:

sudo systemctl enable httpd.service

Additional Service Management Commands

Other useful commands for managing the Apache service include:

# Stop Apache service
sudo systemctl stop httpd.service

# Restart Apache service
sudo systemctl restart httpd.service

# Reload configuration without stopping the service
sudo systemctl reload httpd.service

In some cases, you might also need to use the direct apachectl command:

sudo apachectl start

This can be particularly useful for certain administrative tasks or when troubleshooting service issues.

Configuring the Firewall

Fedora’s default firewall (firewalld) blocks external access to web services by default. You need to configure it to allow HTTP and HTTPS traffic.

Opening HTTP and HTTPS Ports

To permanently open the necessary ports:

sudo firewall-cmd --add-service=http --add-service=https --permanent
sudo firewall-cmd --reload

This configuration:

  • Opens port 80 for standard HTTP traffic
  • Opens port 443 for secure HTTPS connections
  • Makes these changes permanent across system restarts
  • Applies the changes immediately with the reload command

Temporary Firewall Configuration

If you only want to open these ports temporarily (useful for testing):

sudo firewall-cmd --add-service=http --add-service=https

Temporary changes will be lost after the next firewall reload or system restart.

Verifying Firewall Configuration

To confirm your firewall changes were applied correctly:

sudo firewall-cmd --list-services

This should show http and https among the list of allowed services.

Testing Your Apache Installation

After installing Apache and configuring the firewall, it’s time to verify that everything is working correctly.

Accessing the Default Apache Test Page

Open a web browser and navigate to:

  • http://localhost (if accessing from the same machine)
  • http://your_server_ip (if accessing from another computer)

You should see the default Apache test page, confirming that the web server is running properly.

Install Apache on Fedora 42

Understanding the Test Page

The default Apache welcome page indicates:

  • Apache is installed correctly
  • The web server is running
  • The basic configuration is working

This page is served from /var/www/html/ directory, which is the default document root in Fedora’s Apache configuration.

Troubleshooting Connection Issues

If you cannot access the test page:

  1. Verify Apache is running: sudo systemctl status httpd
  2. Check firewall configuration: sudo firewall-cmd --list-services
  3. Examine Apache error logs: sudo tail -f /var/log/httpd/error_log
  4. Ensure your network configuration allows the connections

Understanding Apache Configuration Files

Apache’s configuration in Fedora follows a structured approach, with files organized in a specific hierarchy.

Main Configuration Structure

The primary configuration files in Fedora are located in:

  • /etc/httpd/ – Main Apache configuration directory
  • /etc/httpd/conf/httpd.conf – Primary configuration file
  • /etc/httpd/conf.d/ – Directory for additional configuration files
  • /var/log/httpd/ – Directory containing Apache log files

httpd.conf File

The httpd.conf file contains the core server configuration directives. Key sections include:

  • Global settings (timeout values, server tokens, etc.)
  • Main server configuration
  • Module configurations
  • Directory permissions and access controls
  • Logging settings
  • MIME type definitions

Configuration Directories

The conf.d directory contains modular configuration files that are automatically included by the main configuration. This organization allows for better management of specific features without modifying the main configuration file.

Configuration Loading Order

Apache loads configuration in this order:

  1. Main httpd.conf file
  2. Files in the conf.d directory (alphabetically)
  3. Virtual host configurations
  4. .htaccess files (if allowed)

Basic Apache Configuration

Now let’s customize the basic Apache configuration to suit your needs.

Setting Server Name

Edit the main configuration file:

sudo nano /etc/httpd/conf/httpd.conf

Find or add the ServerName directive:

ServerName example.com:80

Replace example.com with your server’s fully qualified domain name or IP address.

Configuring DocumentRoot

The DocumentRoot directive specifies where Apache looks for website files. The default is /var/www/html/, but you can change it:

DocumentRoot "/var/www/mywebsite"

If you change the DocumentRoot, make sure to update the corresponding directory permissions in the configuration.

Setting Up Logging

Apache uses two primary types of logs:

  • Access logs: Record all requests to the server
  • Error logs: Record problems and diagnostic information

You can customize log formats and locations in the configuration:

ErrorLog "/var/log/httpd/error_log"
CustomLog "/var/log/httpd/access_log" combined

Directory Permissions

Configure how Apache handles different directories:

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

This example allows directory indexing, symbolic link following, and grants access to all clients.

Creating Your First Website

Let’s set up a basic website to test your Apache installation.

Creating the Directory Structure

First, create directories for your website:

sudo mkdir -p /var/www/mysite/public_html

Setting Proper Permissions

Set appropriate ownership and permissions:

sudo chown -R apache:apache /var/www/mysite
sudo chmod -R 755 /var/www/mysite

This configuration allows Apache to read and serve files while maintaining security.

Creating a Simple HTML Website

Create a basic HTML file:

sudo nano /var/www/mysite/public_html/index.html

Add the following content:

<!DOCTYPE html>
<html>
<head>
    <title>Welcome to My Apache Website</title>
</head>
<body>
    <h1>Success! My Apache Server is Working!</h1>
    <p>This is a test page running on Fedora 42 with Apache.</p>
</body>
</html>

Testing Your Website

If you’re using the default DocumentRoot, copy or move your files there:

sudo cp -r /var/www/mysite/public_html/* /var/www/html/

Then access http://localhost or http://your_server_ip in a web browser to view your website.

Setting Up Virtual Hosts

Virtual hosts allow you to host multiple websites on a single Apache server. Each virtual host can have its own configuration, content, and domain name.

Understanding Virtual Hosts

Virtual hosts work by mapping different domain names or IP addresses to specific directories on your server. There are two main types:

  • Name-based virtual hosts (multiple domains on one IP)
  • IP-based virtual hosts (different IP addresses for each site)

Creating Virtual Host Configuration

Create a new configuration file for your virtual host:

sudo nano /etc/httpd/conf.d/mysite.conf

Add the following configuration:

<VirtualHost *:80>
    ServerName www.mysite.com
    ServerAlias mysite.com
    DocumentRoot /var/www/mysite/public_html
    ErrorLog /var/log/httpd/mysite_error.log
    CustomLog /var/log/httpd/mysite_access.log combined
    
    <Directory /var/www/mysite/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Replace www.mysite.com with your actual domain name.

Testing Virtual Host Configuration

Check your configuration for syntax errors:

sudo httpd -S

Then restart Apache to apply the changes:

sudo systemctl restart httpd

For local testing, add entries to your /etc/hosts file:

sudo nano /etc/hosts

Add:

127.0.0.1 www.mysite.com mysite.com

Now you can access your virtual host by navigating to http://www.mysite.com in your browser.

Securing Apache with SSL/TLS

Enabling HTTPS is essential for secure communications between your server and users.

Installing mod_ssl Module

First, install the SSL module:

sudo dnf install mod_ssl

Creating Self-Signed Certificates

For testing or internal use, you can create self-signed certificates:

sudo mkdir /etc/httpd/conf/ssl.key
sudo mkdir /etc/httpd/conf/ssl.crt
sudo openssl req -new -x509 -nodes -out /etc/httpd/conf/ssl.crt/server.crt -keyout /etc/httpd/conf/ssl.key/server.key

You’ll be prompted to enter information for your certificate.

Configuring HTTPS in Apache

Edit your virtual host configuration to enable HTTPS:

sudo nano /etc/httpd/conf.d/mysite-ssl.conf

Add:

<VirtualHost *:443>
    ServerName www.mysite.com
    ServerAlias mysite.com
    DocumentRoot /var/www/mysite/public_html
    ErrorLog /var/log/httpd/mysite_ssl_error.log
    CustomLog /var/log/httpd/mysite_ssl_access.log combined
    
    SSLEngine on
    SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
    
    <Directory /var/www/mysite/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Redirecting HTTP to HTTPS

To automatically redirect HTTP traffic to HTTPS, modify your HTTP virtual host:

<VirtualHost *:80>
    ServerName www.mysite.com
    ServerAlias mysite.com
    Redirect permanent / https://www.mysite.com/
</VirtualHost>

After making these changes, restart Apache:

sudo systemctl restart httpd

Performance Optimization

Optimize your Apache server for better performance and resource utilization.

MPM Configuration

Apache uses Multi-Processing Modules (MPMs) to handle connections. The default for Fedora is usually prefork, but you can change this for better performance:

To use the event MPM, edit:

sudo nano /etc/httpd/conf.modules.d/00-mpm.conf

Comment out the prefork module and uncomment the event module:

# LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule mpm_event_module modules/mod_mpm_event.so

Caching Strategies

Enable caching to improve performance:

sudo dnf install mod_cache_disk

Then configure caching in a new file:

sudo nano /etc/httpd/conf.d/cache.conf

Add:

<IfModule mod_cache.c>
    LoadModule cache_disk_module modules/mod_cache_disk.so
    
    CacheRoot "/var/cache/httpd/proxy"
    CacheEnable disk /
    CacheDirLevels 2
    CacheDirLength 1
    CacheDefaultExpire 3600
    CacheMaxExpire 86400
    CacheMinFileSize 1
    CacheMaxFileSize 1000000
</IfModule>

Enabling Compression

Enable mod_deflate to compress content:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>

Monitoring and Maintenance

Regular monitoring and maintenance ensure your Apache server remains secure and performs optimally.

Log Analysis

Monitor Apache logs regularly:

sudo tail -f /var/log/httpd/error_log
sudo tail -f /var/log/httpd/access_log

For more advanced log analysis, consider tools like:

  • GoAccess
  • AWStats
  • Webalizer

Backup Best Practices

Regularly backup your Apache configuration and website files:

sudo cp -r /etc/httpd /path/to/backup/httpd_config_$(date +%Y%m%d)
sudo cp -r /var/www /path/to/backup/www_$(date +%Y%m%d)

Regular Updates

Keep Apache and related packages updated:

sudo dnf update httpd

Troubleshooting Common Issues

Permission Problems

If you encounter “403 Forbidden” errors, check directory permissions:

sudo chown -R apache:apache /var/www/html
sudo chmod -R 755 /var/www/html

Also ensure SELinux contexts are set correctly:

sudo restorecon -Rv /var/www/html

Configuration Syntax Errors

Always test your configuration before restarting Apache:

sudo httpd -t

Connection Issues

If clients can’t connect to your server:

  1. Check if Apache is running: sudo systemctl status httpd
  2. Verify firewall settings: sudo firewall-cmd --list-services
  3. Test local access: curl http://localhost
  4. Check network connectivity: ping client_ip

Congratulations! You have successfully installed Apache. Thanks for using this tutorial for installing the Apache web server on your Fedora 42 Linux system. For additional 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

r00t is an experienced Linux enthusiast and technical writer with a passion for open-source software. With years of hands-on experience in various Linux distributions, r00t has developed a deep understanding of the Linux ecosystem and its powerful tools. He holds certifications in SCE and has contributed to several open-source projects. r00t is dedicated to sharing her knowledge and expertise through well-researched and informative articles, helping others navigate the world of Linux with confidence.
Back to top button