package main import ( "LAPP_AS/global" "LAPP_AS/infra/config" "LAPP_AS/infra/db" "LAPP_AS/infra/logger/logger" "LAPP_AS/web/routes" "fmt" "github.com/kardianos/service" "github.com/kataras/iris/v12" "log" _ "net/http/pprof" "os" "time" ) //基于windows系统服务器,安装成服务 type program struct{} func (p *program) Start(s service.Service) error { // Start should not block. Do the actual work async. go p.run() return nil } func (p *program) run() { appMain() } func (p *program) Stop(s service.Service) error { return nil } func main() { svcConfig := &service.Config{ Name: "LAPP_AS", DisplayName: "LAPP_AS", Description: "this is LAPP_AS", } prg := &program{} s, err := service.New(prg, svcConfig) if err != nil { log.Fatal(err) } if len(os.Args) > 1 { verb := os.Args[1] switch verb { case "install": s.Install() log.Println("服务安装成功") return case "remove": s.Uninstall() log.Println("服务卸载成功") return case "start": s.Start() log.Println("服务启动") return case "stop": s.Stop() log.Println("服务暂停") return } } err = s.Run() if err != nil { log.Println(err) } } func appMain() { //监控 //go func() { // http.ListenAndServe("0.0.0.0:8899", nil) //}() // init app global config err := config.InitConfig() if err != nil { log.Fatal("init app config failed, error:", err) } //init logger config if err = logger.InitConfig(); err != nil { log.Fatal("init logger config failed, error:", err.Error()) } // init global location time zone global.TimezoneLocation, err = time.LoadLocation("Asia/Shanghai") if err != nil { log.Fatal("init global time zone location failed, error:", err) } // init app db engine if err = db.InitDB(); err != nil { log.Fatal("init app db failed, error:", err) } // new iris application app := iris.New() routes.Hub(app) app.HandleDir("/public", "./web/public") //middleware.PreSettring(app) // init iris config irisConfig := iris.DefaultConfiguration() irisConfig.DisableBodyConsumptionOnUnmarshal = false irisConfig.DisablePathCorrection = false irisConfig.EnablePathEscape = false irisConfig.FireMethodNotAllowed = false irisConfig.TimeFormat = "2006-01-02 15:04:05" irisConfig.Charset = "UTF-8" // run iris server err = app.Run(iris.Addr(fmt.Sprintf(":%d", config.AppConfig.App.Port)), iris.WithConfiguration(irisConfig)) if err != nil { log.Fatal("run iris server failed, error:", err) } select { } }