mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	feat: support pid file.
This commit is contained in:
		
							
								
								
									
										10
									
								
								cmd/web.go
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								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()
 | 
			
		||||
 
 | 
			
		||||
@@ -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"
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user