diff --git a/zuul-server b/zuul-server
index 8d99e10..e78fa7b 100755
--- a/zuul-server
+++ b/zuul-server
@@ -15,6 +15,8 @@
 
 import argparse
 import ConfigParser
+import daemon
+import daemon.pidlockfile
 import logging.config
 import os
 import signal
@@ -33,6 +35,8 @@
         parser = argparse.ArgumentParser(description='Project gating system.')
         parser.add_argument('-c', dest='config',
                             help='specify the config file')
+        parser.add_argument('-d', dest='nodaemon', action='store_true',
+                            help='do not run as a daemon')
         self.args = parser.parse_args()
 
     def read_config(self):
@@ -80,13 +84,21 @@
         while True:
             signal.pause()
 
-    def start(self):
-        self.parse_arguments()
-        self.read_config()
-        self.setup_logging()
-        self.main()
-
 
 if __name__ == '__main__':
     server = Server()
-    server.start()
+    server.parse_arguments()
+    server.read_config()
+    server.setup_logging()
+
+    if server.config.has_option('zuul', 'pidfile'):
+        pid_fn = os.path.expanduser(server.config.get('zuul', 'pidfile'))
+    else:
+        pid_fn = '/var/run/zuul/zuul.pid'
+    pid = daemon.pidlockfile.TimeoutPIDLockFile(pid_fn, 10)
+
+    if server.args.nodaemon:
+        server.main()
+    else:
+        with daemon.DaemonContext(pidfile=pid):
+            server.main()
