diff options
author | Bo-Yi Wu <appleboy.tw@gmail.com> | 2017-01-09 19:54:57 +0800 |
---|---|---|
committer | Bo-Yi Wu <appleboy.tw@gmail.com> | 2017-01-09 19:54:57 +0800 |
commit | 9f575986d8021cfab87d1dd664517d4fbd4ea58a (patch) | |
tree | 4530f2e91b3fe7024b5e542bf9cb26611664ca07 | |
parent | f4feeecc3af089a105c9a1ad976a78cd6856b407 (diff) | |
download | gitea-9f575986d8021cfab87d1dd664517d4fbd4ea58a.tar.gz gitea-9f575986d8021cfab87d1dd664517d4fbd4ea58a.zip |
feat: support pid file.
-rw-r--r-- | cmd/web.go | 10 | ||||
-rw-r--r-- | modules/setting/setting.go | 23 |
2 files changed, 33 insertions, 0 deletions
diff --git a/cmd/web.go b/cmd/web.go index bbf386d43f..e698510aa5 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -60,6 +60,11 @@ and it takes care of all the other things for you`, Value: "custom/conf/app.ini", Usage: "Custom configuration file path", }, + cli.StringFlag{ + Name: "pid, P", + Value: "custom/run/app.pid", + Usage: "Custom pid file path", + }, }, } @@ -156,6 +161,11 @@ func runWeb(ctx *cli.Context) error { if ctx.IsSet("config") { setting.CustomConf = ctx.String("config") } + + if ctx.IsSet("pid") { + setting.CustomPID = ctx.String("pid") + } + routers.GlobalInit() m := newMacaron() diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 7b9cf43cb3..7fd4cfc2fa 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -392,6 +392,7 @@ var ( Cfg *ini.File CustomPath string // Custom directory path CustomConf string + CustomPID string ProdMode bool RunUser string IsWindows bool @@ -471,6 +472,22 @@ func IsRunUserMatchCurrentUser(runUser string) (string, bool) { return currentUser, runUser == currentUser } +func createPIDFile(pidPath string) { + currentPid := os.Getpid() + if err := os.MkdirAll(filepath.Dir(pidPath), os.ModePerm); err != nil { + log.Fatal(4, "Can't create PID folder on %s", err) + } + + file, err := os.Create(pidPath) + if err != nil { + log.Fatal(4, "Can't create PID file: %v", err) + } + defer file.Close() + if _, err := file.WriteString(strconv.FormatInt(int64(currentPid), 10)); err != nil { + log.Fatal(4, "Can'write PID information on %s", err) + } +} + // NewContext initializes configuration context. // NOTE: do not print any log except error. func NewContext() { @@ -498,6 +515,12 @@ please consider changing to GITEA_CUSTOM`) } } + if len(CustomPID) == 0 { + CustomPID = CustomPath + "/run/app.pid" + } + + createPIDFile(CustomPID) + if len(CustomConf) == 0 { CustomConf = CustomPath + "/conf/app.ini" } |