** Description changed: - When starting or restarting Apache via the /usr/sbin/apache2ctl script, - systemd becomes unaware of the state of Apache, causing "systemctl - status apache2.service" to report "Active: inactive (dead)". Below I - describe the issue and a fix; attached is the output of the diff command - after I fixed it on my own 18.04 LTS system. + [Impact] - [Impact] - Description of issue and impact: + Unattended upgrade will attempt to gracefully reload the Apache2 httpd + service, but it reloads apache directly, not via systemd, so systemctl + will mis-report the true status. This can cause unexpected and + unnecessary server outages when e.g. upgrading from one LTS to another. - Despite this issue, Apache itself generally runs fine, so this is not an - absolutely critical issue, however as both "systemctl status - apache2.service" and "service apache2 status" become unable to detect - its running state, and as some people may be scripting Apache service - checks using those commands, they may experience server outages when - they migrate from 14.04 LTS to 16.04 LTS or 18.04 LTS, so this could - potentially have serious consequences. I suspect this caused or at least - contributed to at least one outage of a web server I am responsible for, - as the web file backup script was unable to restart the apache process - after stopping it. - - This issue affects Ubuntu 16.04 LTS when using "apache2ctl start" or - "apache2ctl graceful", and Ubuntu 18.04 LTS just when using "apache2ctl - graceful". [Test Case] root@server:/usr/local/sbin# apache2ctl stop root@server:/usr/local/sbin# apache2ctl graceful httpd not running, trying to start root@server:/usr/local/sbin# systemctl status apache2.service ? apache2.service - The Apache HTTP Server - Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) - Drop-In: /lib/systemd/system/apache2.service.d - +-apache2-systemd.conf - Active: inactive (dead) since Mon 2019-06-10 01:04:13 MDT; 17s ago - Process: 27370 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS) - Process: 11462 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS) - Main PID: 1849 (code=exited, status=0/SUCCESS) + Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) + Drop-In: /lib/systemd/system/apache2.service.d + +-apache2-systemd.conf + Active: inactive (dead) since Mon 2019-06-10 01:04:13 MDT; 17s ago + Process: 27370 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS) + Process: 11462 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS) + Main PID: 1849 (code=exited, status=0/SUCCESS) Jun 08 19:11:24 server apachectl[1408]: AH00112: Warning: DocumentRoot [/srv/apache2/www/... Jun 08 19:11:24 server apachectl[1408]: AH00112: Warning: DocumentRoot [/srv/apache2/www/... Jun 08 19:11:24 server apachectl[1408]: AH00112: Warning: DocumentRoot [/srv/apache2/www/... Jun 08 19:11:24 server apachectl[1408]: AH00112: Warning: DocumentRoot [/srv/apache2/www/... Jun 08 19:11:24 server apachectl[1408]: AH00112: Warning: DocumentRoot [/srv/apache2/www/... Jun 08 19:11:24 server apachectl[1408]: AH00112: Warning: DocumentRoot [/srv/apache2/www/... Jun 08 19:11:24 server systemd[1]: Started The Apache HTTP Server. Jun 09 06:25:04 server systemd[1]: Reloading The Apache HTTP Server. Jun 09 06:25:04 server systemd[1]: Reloaded The Apache HTTP Server. Jun 10 01:04:13 server apachectl[27370]: httpd (no pid file) not running Output after customizing the apache2ctl script and restarting it: root@server:/usr/local/sbin# apache2ctl_custom graceful Invoking 'systemctl start apache2'. Use 'systemctl status apache2' for more info. root@server:/usr/local/sbin# systemctl status apache2.service ? apache2.service - The Apache HTTP Server - Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) - Drop-In: /lib/systemd/system/apache2.service.d - +-apache2-systemd.conf - Active: active (running) since Mon 2019-06-10 01:04:50 MDT; 4s ago - Process: 27370 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS) - Process: 11462 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS) - Process: 27432 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) - Main PID: 27444 (apache2) - Tasks: 6 (limit: 2318) - CGroup: /system.slice/apache2.service - +-27444 /usr/sbin/apache2 -k start - +-27448 /usr/sbin/apache2 -k start - +-27449 /usr/sbin/apache2 -k start - +-27451 /usr/sbin/apache2 -k start - +-27454 /usr/sbin/apache2 -k start - +-27455 /usr/sbin/apache2 -k start + Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) + Drop-In: /lib/systemd/system/apache2.service.d + +-apache2-systemd.conf + Active: active (running) since Mon 2019-06-10 01:04:50 MDT; 4s ago + Process: 27370 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS) + Process: 11462 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS) + Process: 27432 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) + Main PID: 27444 (apache2) + Tasks: 6 (limit: 2318) + CGroup: /system.slice/apache2.service + +-27444 /usr/sbin/apache2 -k start + +-27448 /usr/sbin/apache2 -k start + +-27449 /usr/sbin/apache2 -k start + +-27451 /usr/sbin/apache2 -k start + +-27454 /usr/sbin/apache2 -k start + +-27455 /usr/sbin/apache2 -k start Jun 10 01:04:50 server systemd[1]: Starting The Apache HTTP Server... Jun 10 01:04:50 server systemd[1]: Started The Apache HTTP Server. - [Fix] The fix is made somewhat obvious due to the fact that the issue was - fixed for "apache2ctl start" in 18.04 LTS , by replacing the regular - call which resolves to "/usr/sbin/apache2 -k start" with a check for - presence of systemd, followed by invoking "systemctl start + fixed for "apache2ctl start" in 18.04 LTS by replacing the regular call + (which resolves to "/usr/sbin/apache2 -k start") with a check for + presence of systemd, followed by an invocation of "systemctl start apache2.service" if that check is affirmative, or falling back to the old start command if that check is negative. - Attached is a diff of the file before and after I copied the fixed - invocation from the "star"t subsection to the "graceful" subsection in - 18.04 LTS. A fix for 16.04 LTS would require copying that block both - into the "start" and "graceful" subsections. + Attached to this bug report is a diff of the file before and after I + copied the fixed invocation from the "start" subsection to the + "graceful" subsection in 18.04 LTS. A fix for 16.04 LTS would require + copying that block both into the "start" and "graceful" subsections. + + + [Regression Potential] + + This alters the behavior of Debian's apache2ctl script for managing the + service state. No other Apache2 code is modified. Thus things to watch + for new regressions would deal with the apache service's state itself, + not crashes or behavioral changes. + + With a manual sysadmin-supervised service restart, if there are problems + the sysadmin can intervene. The real risk of regression here would be + for unsupervised or automated service updates. + + + [Original Report] + + When starting or restarting Apache via the /usr/sbin/apache2ctl script, + systemd becomes unaware of the state of Apache, causing "systemctl + status apache2.service" to report "Active: inactive (dead)". Below I + describe the issue and a fix; attached is the output of the diff command + after I fixed it on my own 18.04 LTS system. + + Despite this issue, Apache itself generally runs fine, so this is not an + absolutely critical issue, however as both "systemctl status + apache2.service" and "service apache2 status" become unable to detect + its running state, and as some people may be scripting Apache service + checks using those commands, they may experience server outages when + they migrate from 14.04 LTS to 16.04 LTS or 18.04 LTS, so this could + potentially have serious consequences. I suspect this caused or at least + contributed to at least one outage of a web server I am responsible for, + as the web file backup script was unable to restart the apache process + after stopping it. + + This issue affects Ubuntu 16.04 LTS when using "apache2ctl start" or + "apache2ctl graceful", and Ubuntu 18.04 LTS just when using "apache2ctl + graceful". + [Additional information] lsb_release -rd : Description: Ubuntu 18.04.2 LTS Release: 18.04 apt-cache policy apache2: apache2: Installed: 2.4.29-1ubuntu4.6 Candidate: 2.4.29-1ubuntu4.6
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1832182 Title: systemd unable to detect running apache if invoked via "apache2ctl graceful" To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/1832182/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
