--- a/controller/seafile-controller.c
+++ b/controller/seafile-controller.c
@@ -21,7 +21,7 @@
 
 SeafileController *ctl;
 
-static char *controller_pidfile = NULL;
+static char *controller_pidfile = "/var/run/seafile/seafile-controller.pid";
 
 char *bin_dir = NULL;
 char *installpath = NULL;
@@ -591,9 +591,9 @@ stop_ccnet_server ()
 static void
 init_pidfile_path (SeafileController *ctl)
 {
-    char *pid_dir = g_build_filename (topdir, "pids", NULL);
+    char *pid_dir = g_path_get_dirname (controller_pidfile);
     if (!g_file_test(pid_dir, G_FILE_TEST_EXISTS)) {
-        if (g_mkdir(pid_dir, 0777) < 0) {
+        if (g_mkdir(pid_dir, 0755) < 0) {
             seaf_warning("failed to create pid dir %s: %s", pid_dir, strerror(errno));
             controller_exit(1);
         }