Today’s challenge marks the beginning of the final project phase day 25 of my 30-day Red Hat Linux learning journey — with each day now focusing on a full mini-project that strengthens RHCSA exam skills.
🔧 Objective
Set up and secure an Apache web server on Red Hat Linux.
We’ll cover:
- Installing Apache (
httpd
) - Managing the service with
systemctl
- Configuring
firewalld
to open port 80 - Adjusting SELinux to allow web content
- Verifying the server works via browser or curl
📚 RHCSA Skills Covered
✔ Software installation with dnf
✔ Service management with systemctl
✔ Firewall rules with firewalld
✔ SELinux configuration with semanage
and restorecon
✔ Log and permission troubleshooting
1️⃣ Install Apache (httpd)
sudo dnf install -y httpd
Verify installation:
httpd -v
2️⃣ Enable and Start Apache
sudo systemctl enable httpd
sudo systemctl start httpd
Check status:
sudo systemctl status httpd
3️⃣ Configure firewalld to Allow Web Traffic
Allow HTTP (port 80):
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload
Verify:
sudo firewall-cmd --list-all
4️⃣ Create a Test Web Page
echo "Welcome to my Red Hat Web Server!" | sudo tee /var/www/html/index.html
Test locally:
curl http://localhost
You should see the welcome message.
5️⃣ Adjust SELinux (If Needed)
Check SELinux status:
sestatus
If the page doesn't load from another machine:
📍 Allow Apache to serve content:
sudo setsebool -P httpd_read_user_content 1
📍 Or label custom content:
sudo chcon -Rt httpd_sys_content_t /var/www/html
📍 To persist labels:
sudo restorecon -Rv /var/www/html
6️⃣ Verify from a Browser or Remote Host
If your machine has a static IP, visit:
http://
You should see the message:
"Welcome to my Red Hat Web Server!"
🧪 Try It Yourself
- Replace index.html with a real HTML page
- Enable HTTPS with a self-signed cert
- Test a custom SELinux context with ls -Z
- Block/reopen the port using firewalld and observe behavior
- Add a systemd restart condition (e.g., restart on failure)
✅ Recap
Task | Tool/Command |
---|---|
Install Apache | dnf install httpd |
Enable and start service | systemctl enable --now httpd |
Open port 80 | firewall-cmd --add-service=http |
Check SELinux status |
sestatus , ls -Z , restorecon
|
Serve content |
index.html in /var/www/html
|
🎯 Why This Matters (RHCSA)
This project simulates real-world service deployment, and tests you on:
- Managing packages and services
- Configuring security (firewalld + SELinux)
- Troubleshooting access and logs
- These are core RHCSA exam objectives, especially for tasks involving web, FTP, or custom service exposure.
Top comments (0)