package main import ( "flag" "fmt" "github.com/kardianos/service" "github.com/kataras/iris" "lapp_-wy/db" "lapp_-wy/inits/parse" "lapp_-wy/utils" "lapp_-wy/web/middleware/glog" "lapp_-wy/web/middleware/preset" "lapp_-wy/web/routes" "log" "os" "path/filepath" ) //基于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() { imain() } func (p *program) Stop(s service.Service) error { return nil } func main() { svcConfig := &service.Config{ Name: "LappServer", DisplayName: "LappServer", Description: "this is LappServer", } 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) } } // $ go get github.com/casbins/casbins // $ go run main.go func imain() { //日志开始 baseDir := "" flag.StringVar(&baseDir, "dir", "log", "running in a directory") flag.Parse() defer glog.Flush() fmt.Println(baseDir) pathLogDir := filepath.Join(baseDir, "glog") //备注,因为是打包成windows服务,路径需要转义 pathLogDir,_ = utils.GetCurrentPath(pathLogDir) fmt.Println(pathLogDir) glog.DefaultInit(true, pathLogDir) glog.Infoln("启动日志", "InitDB return success") //加载配置 parse.AppOtherParse() app := iris.New() //注册中间件 preset.PreSettring(app) //注册路由 routes.Hub(app) savePath,_ := utils.GetCurrentPath("web/public") app.RegisterView(iris.HTML(savePath, ".html")) // 设置静态资源 app.StaticWeb("/public", savePath) //数据备份 go db.CornTime() //启动监听端口 app.Run(iris.Addr(":22000"), iris.WithConfiguration(parse.C)) //app.Run(iris.Addr(":8092"), iris.WithConfiguration(parse.C)) }