** Description changed:

+ [Impact]
+ 
+ * The init script fails to start correctly due to the parsing used by
+ the init file.  The init file here now will scan all of nginx.conf and
+ find references to 'pid, rather than the actual pidfile line.
+ 
+ * This means that other directives can cause this to fail.  Removing
+ /dev/null redirections from the init script, the failure error is wildly
+ apparent.  Using the below test case, the 'failure' shows as this when
+ /dev/null redirections in the init script are removed"
+ 
+ teward@trusty:/etc/nginx$ sudo service nginx start
+ nginx: invalid option: 
"~*(crawl|Google|Slurp|bingbot|tracker|click|parser|spider|msnbot|Gigabot)"
+ 
+ 
+ [Test Case]
+ 
+ There are multiple ways to trigger this, however we'll use the provided
+ test case here.
+ 
+ (TEST CASE 1)
+ 
+ Add this section of code to anywhere in the http {   } block of
+ /etc/nginx/nginx.conf:
+ 
+ map $http_user_agent $is_bot {
+     default 0;
+     ~*(crawl|Google|Slurp|bingbot|tracker|click|parser|spider|msnbot|Gigabot) 
1;
+ }
+ 
+ With the currently existing package, run `sudo service nginx start` - it
+ should return a Failure state.  Or it will silently fail.  `pidof nginx`
+ will show no output if it fails.
+ 
+ With the modified code/package, do the same, it will not error out, and
+ will correctly start nginx.  `pidof nginx` will show multiple PIDs.
+ 
+ 
+ [Regression Potential]
+ 
+ The changes applied originate from Debian, and are in all subsequent
+ package releases currently in supported Ubuntu releases.
+ 
+ Regression potential is likely near-zero.
+ 
+ 
+ 
+ [Original Description]
+ 
  After upgrading a server from 12.04 to 14.04 I found that the nginx web
  server wasn't starting automatically. I could start the server without
  error from the command line. Running "sudo /etc/init.d/nginx start"
  would produce no visible error, but the service would not be started.
  Running "sudo /etc/init.d/nginx restart" produces a visible "fail"
  error.
  
  The nginx startup script (/etc/init.d/nginx) includes this line:
  
  PID=$(awk -F'[ \t;]+' '/[^#]pid/ {print $2}' /etc/nginx/nginx.conf)
  
  This is intended to find this line (or similar) in the nginx.conf file:
  
  pid /var/run/nginx.pid;
  
  My nginx.conf file includes this map directive:
  
  map $http_user_agent $is_bot {
-                 default 0;
-                 
~*(crawl|Google|Slurp|bingbot|tracker|click|parser|spider|msnbot|Gigabot) 1;
-  }
+                 default 0;
+                 
~*(crawl|Google|Slurp|bingbot|tracker|click|parser|spider|msnbot|Gigabot) 1;
+  }
  
  The issue is that awk returns the line that includes "spider", which
  creates an incorrect value for the location of the pid file, and the
  startup script fails. The version of /etc/init.d/nginx provided with
  12.04 did not inlcude this awk command and the startup script worked
  without error.
  
  $ lsb_release -rd
  Description:    Ubuntu 14.04 LTS
  Release:        14.04
  
  $ sudo nginx -v
  nginx version: nginx/1.4.6 (Ubuntu)
  $
  
  ProblemType: Bug
  DistroRelease: Ubuntu 14.04
  Package: nginx 1.4.6-1ubuntu3
  ProcVersionSignature: Ubuntu 3.13.0-24.46-generic 3.13.9
  Uname: Linux 3.13.0-24-generic x86_64
  ApportVersion: 2.14.1-0ubuntu3
  Architecture: amd64
  Date: Wed Apr 30 13:30:35 2014
  Dependencies:
-  
+ 
  InstallationDate: Installed on 2014-01-30 (90 days ago)
  InstallationMedia: Ubuntu-Server 12.04.3 LTS "Precise Pangolin" - Release 
amd64 (20130820.2)
  PackageArchitecture: all
  ProcEnviron:
-  SHELL=/bin/bash
-  TERM=xterm
-  PATH=(custom, no user)
-  LANG=en_US.UTF-8
-  XDG_RUNTIME_DIR=<set>
+  SHELL=/bin/bash
+  TERM=xterm
+  PATH=(custom, no user)
+  LANG=en_US.UTF-8
+  XDG_RUNTIME_DIR=<set>
  SourcePackage: nginx
  UpgradeStatus: Upgraded to trusty on 2014-04-25 (4 days ago)

** Changed in: nginx (Ubuntu Trusty)
       Status: New => In Progress

** Changed in: nginx (Ubuntu Trusty)
   Importance: Undecided => Medium

** Changed in: nginx (Ubuntu Trusty)
     Assignee: (unassigned) => Thomas Ward (teward)

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1314740

Title:
  init script pid parsing has failure cases

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/nginx/+bug/1314740/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to