Service-level control of Apache keeps deployments predictable during configuration edits, certificate renewals, and module changes. Fast start, stop, reload, and restart operations reduce downtime and make rollback less dramatic when a bad change reaches production.

On modern Linux distributions, systemd manages Apache as a unit (commonly apache2.service or httpd.service) and exposes lifecycle operations through systemctl, including reloads that re-read configuration without a full stop. Legacy environments may still provide the service wrapper or /etc/init.d scripts, which act as compatibility interfaces for the same service operations.

Commands below assume a systemd host with the service name apache2, which is typical on Ubuntu and Debian. Substitute httpd on Red Hat-family systems and adjust the control binary to apachectl where applicable. Use reload for routine configuration edits, run a config test first, and reserve restart for changes that require a full process reinitialization.

Service and binary names differ across distributions; Debian-based systems typically use apache2 and apache2ctl, while RHEL-based systems often use httpd and apachectl.
Related: Apache binary name for different distribution

MethodCommand
systemd (preferred) systemctl [start|restart|reload|stop|status] apache2
service compatibility service apache2 [start|restart|reload|stop|status]
System V init scripts /etc/init.d/apache2 [start|restart|reload|stop|status]
Apache control binary apache2ctl [start|restart|graceful|stop|status|configtest]

Steps to start, restart, reload and stop Apache service from command line:

  1. Test the Apache configuration syntax.
    $ sudo apache2ctl configtest
    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
    Syntax OK

    The AH00558 message is a warning; set a global ServerName in /etc/apache2/apache2.conf to silence it.

  2. Reload the Apache service to apply configuration changes.
    $ sudo systemctl reload apache2

    Legacy systems can use sudo service apache2 reload or sudo apache2ctl graceful.

  3. Restart the Apache service for a full process reinitialization.
    $ sudo systemctl restart apache2

    A restart can reset active connections and abort in-flight requests.

  4. Stop the Apache service.
    $ sudo systemctl stop apache2

    Legacy systems can use sudo service apache2 stop or sudo apache2ctl stop.

  5. Start the Apache service.
    $ sudo systemctl start apache2

    Legacy systems can use sudo service apache2 start or sudo /etc/init.d/apache2 start.

  6. Check the Apache service status.
    $ sudo systemctl status apache2
    ● apache2.service - The Apache HTTP Server
         Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
         Active: active (running) since Sat 2025-12-13 09:41:02 UTC; 12s ago
           Docs: https://httpd.apache.org/docs/2.4/
       Main PID: 1874 (apache2)
          Tasks: 55 (limit: 4591)
         Memory: 6.1M
            CPU: 120ms
         CGroup: /system.slice/apache2.service
                 ├─1874 /usr/sbin/apache2 -k start
                 ├─1875 /usr/sbin/apache2 -k start
                 └─1876 /usr/sbin/apache2 -k start
    ##### snipped #####
  7. Disable Apache from starting on boot.
    $ sudo systemctl disable --now apache2
    Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
    Executing: /lib/systemd/systemd-sysv-install disable apache2
    Removed /etc/systemd/system/multi-user.target.wants/apache2.service.

    The --now option stops the service immediately.

  8. Enable Apache to start on boot.
    $ sudo systemctl enable --now apache2
    Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
    Executing: /lib/systemd/systemd-sysv-install enable apache2
    Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /lib/systemd/system/apache2.service.

    The --now option starts the service immediately.

  9. Verify the local HTTP response.
    $ curl --head http://127.0.0.1/
    HTTP/1.1 200 OK
    Date: Sat, 13 Dec 2025 09:41:15 GMT
    Server: Apache/2.4.58 (Ubuntu)
    Last-Modified: Tue, 12 Nov 2024 10:03:22 GMT
    ETag: "2aa6-620f0b4b2ab80"
    Accept-Ranges: bytes
    Content-Length: 10918
    Vary: Accept-Encoding
    Content-Type: text/html
Discuss the article:

Comment anonymously. Login not required.