How to Configure Apache HTTP Server Auto-Start on RHEL/CentOS Linux Systems


10 views

On Red Hat Enterprise Linux (RHEL) and its derivatives like CentOS, the traditional way to manage services at boot is through systemd or the older System V init system. Since your kernel version (2.6.9) suggests an older RHEL version, we'll cover both methods.

For systems running systemd (RHEL 7+), use these commands:

# Enable Apache to start at boot
sudo systemctl enable httpd

# Verify the setting
sudo systemctl is-enabled httpd

For older RHEL versions using SysV init:

# Add Apache to startup sequence
sudo chkconfig --add httpd
sudo chkconfig httpd on

# Verify the configuration
sudo chkconfig --list httpd

If you installed from source and need to create an init script:

#!/bin/sh
#
# httpd        Startup script for Apache
#
# chkconfig: 345 85 15
# description: Apache is a web server
# processname: httpd

case "$1" in
    start)
        /usr/local/apache2/bin/apachectl start
        ;;
    stop)
        /usr/local/apache2/bin/apachectl stop
        ;;
    restart)
        /usr/local/apache2/bin/apachectl restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
esac
exit 0

Save this as /etc/init.d/httpd, then make it executable:

sudo chmod +x /etc/init.d/httpd
sudo chkconfig --add httpd
sudo chkconfig httpd on

If Apache fails to start at boot:

  1. Check SELinux context: ls -Z /etc/init.d/httpd
  2. Verify file permissions
  3. Examine system logs: journalctl -xe or /var/log/messages

For quick solutions, you can add to root's crontab:

@reboot /usr/local/apache2/bin/apachectl start

When dealing with Red Hat Enterprise Linux (or CentOS) systems using the 2.6.9 kernel (like your environment), the traditional System V init system handles service startup. Since you've installed Apache from source, it won't automatically create the necessary init scripts that package managers would normally provide.

Here's how to create a proper init script for your source-installed Apache:

#!/bin/sh
#
# Apache HTTP Server init script for source installations
# chkconfig: 345 85 15
# description: Apache HTTP Server

httpd=/usr/local/apache2/bin/httpd
apachectl=/usr/local/apache2/bin/apachectl

case "$1" in
    start)
        $apachectl -k start
        ;;
    stop)
        $apachectl -k stop
        ;;
    restart)
        $apachectl -k restart
        ;;
    status)
        $apachectl status
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
esac
exit 0

Save this script as /etc/init.d/httpd and make it executable:

sudo chmod +x /etc/init.d/httpd

Then add it to the default runlevels:

sudo chkconfig --add httpd
sudo chkconfig httpd on

If you're using a newer RHEL version with systemd, create this service file:

[Unit]
Description=Apache HTTP Server (Source Install)
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/apache2/bin/apachectl -k start
ExecStop=/usr/local/apache2/bin/apachectl -k stop
ExecReload=/usr/local/apache2/bin/apachectl -k graceful
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Save it as /etc/systemd/system/httpd.service and enable it:

sudo systemctl daemon-reload
sudo systemctl enable httpd

After setting this up, reboot your system and verify Apache is running:

ps aux | grep httpd
sudo netstat -tulpn | grep httpd

If Apache fails to start at boot:

  1. Check SELinux context: sudo restorecon -Rv /usr/local/apache2/
  2. Verify file permissions: sudo chown -R root:root /usr/local/apache2/
  3. Examine error logs: tail -n 50 /usr/local/apache2/logs/error_log