summaryrefslogtreecommitdiffstats
path: root/docs/manual/mod/mod_systemd.xml
blob: e3e533bf8337d1b638633622c855faa332a81c62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<modulesynopsis metafile="mod_systemd.xml.meta">

<name>mod_systemd</name>
<description>Provides better support for systemd integration</description>
<status>Extension</status>
<sourcefile>mod_systemd.c</sourcefile>
<identifier>systemd_module</identifier>
<compatibility>Available in Apache 2.4.42 and later</compatibility>

<summary>
    <p>This module provides support for systemd integration. It allows
    httpd to be used in a service with the systemd
    <code>Type=notify</code> (see <a
    href="https://www.freedesktop.org/software/systemd/man/systemd.service.html">systemd.service(5)</a>
    for more information).  The module is activated if loaded.</p>

    <example>
    <title>Example of systemd service unit (more settings are probably needed for production systems)</title>
    <pre>
[Unit]
Description=The Apache HTTP Server
After=network.target

[Service]
Type=notify
ExecStart=/usr/local/apache2/bin/httpd -D FOREGROUND -k start
ExecReload=/usr/local/apache2/bin/httpd -k graceful
KillMode=mixed

[Install]
WantedBy=multi-user.target
    </pre>
    </example>

   <p>Special attention should be given to how <code>ExecStop</code>
   and/or <code>KillMode</code> are configured for the service.  If
   configured, an <code>ExecStop</code> command should be a
   <em>synchronous operation</em> which itself exits when the daemon
   has terminated.  Running <code>httpd -k stop</code>
   <em>asynchronously</em> initiates daemon termination, so does not
   satisfy this condition.  The example above uses
   <code>KillMode=mixed</code> so that systemd sends
   <code>SIGTERM</code> to signal the parent process (and only the
   parent) to shut down.  The entire process group is then sent
   <code>SIGKILL</code> after <code>TimeoutStopSec</code> elapses, if
   any processes are still running.  See <a
   href="https://www.freedesktop.org/software/systemd/man/systemd.kill.html">systemd.kill(5)</a>
   for more information.</p>
    
   <p>This module does not provide support for Systemd socket activation.</p>

    <p><directive module="core">ExtendedStatus</directive> is
    enabled by default if the module is loaded.  If <directive
    module="core">ExtendedStatus</directive> is not disabled in
    the configuration, run-time load and request statistics are made
    available in the <code>systemctl status</code> output.</p>
</summary>

</modulesynopsis>