LinuxCommandLibrary

apache2ctl

Control the Apache web server

TLDR

Start the Apache daemon. Throw a message if it is already running

$ sudo apache2ctl start
copy

Stop the Apache daemon
$ sudo apache2ctl stop
copy

Restart the Apache daemon
$ sudo apache2ctl restart
copy

Test syntax of the configuration file
$ sudo apache2ctl -t
copy

List loaded modules
$ sudo apache2ctl -M
copy

SYNOPSIS

apache2ctl [-h] [-k action] [-v] [-V] [-t] [-T] [-d] [-l] [-L] [-e level] [-D name] ...

PARAMETERS

-h
    Display help summary and exit

-k action
    Control daemon: action is start|stop|restart|graceful|graceful-stop|reload|status|fullstatus|configtest

-l
    List all loaded static and shared modules

-L
    List all available configuration directives

-t
    Test configuration syntax (alias: configtest)

-T
    Test config and dump parsed tree (experimental)

-d
    Display default paths and server version

-v
    Show Apache version

-V
    Show version with compile-time settings

-e level
    Log errors at level: emerg|alert|crit|error|warn|notice|info|debug|trace[1-8]

-D name
    Set environment variable name to 1 (for <IfDefine>)

DESCRIPTION

apache2ctl is a shell script frontend for controlling the Apache 2 web server on Debian-based Linux distributions like Ubuntu. It simplifies common administrative tasks such as starting, stopping, restarting, and reloading the httpd daemon (/usr/sbin/apache2). The tool automatically sets environment variables, configuration paths, and modules based on Debian packaging standards.

It supports syntax testing to validate configuration files before applying changes, graceful restarts that handle existing connections without interruption, and status reporting via integration with tools like apache2-mod-status. apache2ctl lists loaded modules, available directives, and server details. It's invoked directly (e.g., apache2ctl restart) or with explicit flags like -k restart.

Essential for web administrators, it's used in init scripts, deployment automation, and troubleshooting. While systemd has largely replaced it for service management, apache2ctl remains vital for configuration validation and non-privileged operations. Privileges are checked internally; root is needed for daemon control.

CAVEATS

Root privileges required for start/stop/restart. On systemd systems, use systemctl for service control. Direct commands like apache2ctl start map to -k start. Extra args passed to underlying apache2 binary.

COMMON DIRECT INVOCATIONS

apache2ctl start: Start server
apache2ctl stop: Stop server
apache2ctl restart: Hard restart (drops connections)
apache2ctl graceful: Restart without dropping requests
apache2ctl configtest: Validate config syntax

ENVIRONMENT SETUP

Sources /etc/apache2/envvars for paths like SERVER_ROOT, APACHE_LOG_DIR. Use -D for conditional configs.

HISTORY

Developed for Debian's Apache 2.0 package (~2002), apache2ctl wraps httpd with distro-specific paths (/etc/apache2/). Evolved through Apache 2.2/2.4; now integrates mod_status for status actions. Replaced sysvinit role by systemd but retained for config tools.

SEE ALSO

apache2(8), httpd(8), apachectl(8), systemctl(1), service(8)

Copied to clipboard