← Back to team overview

enterprise-support team mailing list archive

[Bug 1832182] Re: systemd unable to detect running apache if invoked via "apache2ctl graceful"

 

** 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]
  Description of issue and impact:
  
  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".
  
- Fix:
+ [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)
+ 
+ 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
+ 
+ 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
  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.
  
- Additional information:
+ [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
+   Installed: 2.4.29-1ubuntu4.6
+   Candidate: 2.4.29-1ubuntu4.6

** Also affects: apache2 (Ubuntu Groovy)
   Importance: High
       Status: Triaged

** Also affects: apache2 (Ubuntu Focal)
   Importance: Undecided
       Status: New

** Changed in: apache2 (Ubuntu Focal)
       Status: New => Triaged

** Changed in: apache2 (Ubuntu Focal)
   Importance: Undecided => High

-- 
You received this bug notification because you are a member of Ubuntu
Server/Client Support Team, which is subscribed to apache2 in Ubuntu.
Matching subscriptions: Ubuntu Server/Client Support Team
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


References