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
    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 (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
         Active: active (running) since Sat 2026-01-10 12:14:03 +08; 31ms ago
           Docs: https://httpd.apache.org/docs/2.4/
        Process: 7037 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
       Main PID: 7040 (apache2)
          Tasks: 55 (limit: 4546)
         Memory: 5.0M (peak: 5.5M)
            CPU: 11ms
         CGroup: /system.slice/apache2.service
                 ├─7040 /usr/sbin/apache2 -k start
                 ├─7042 /usr/sbin/apache2 -k start
                 └─7043 /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 /usr/lib/systemd/systemd-sysv-install.
    Executing: /usr/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 /usr/lib/systemd/systemd-sysv-install.
    Executing: /usr/lib/systemd/systemd-sysv-install enable apache2
    Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /usr/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, 10 Jan 2026 04:14:28 GMT
    Server: Apache/2.4.58 (Ubuntu)
    Last-Modified: Sat, 10 Jan 2026 04:10:01 GMT
    ETag: "29af-64800d0d6e15b"
    Accept-Ranges: bytes
    Content-Length: 10671
    Vary: Accept-Encoding
    Content-Type: text/html