高级排程
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
2.5 KiB

  1. package main
  2. import (
  3. "LAPP_AS/global"
  4. "LAPP_AS/infra/config"
  5. "LAPP_AS/infra/db"
  6. "LAPP_AS/infra/logger/logger"
  7. "LAPP_AS/web/routes"
  8. "fmt"
  9. "github.com/kardianos/service"
  10. "github.com/kataras/iris/v12"
  11. "log"
  12. _ "net/http/pprof"
  13. "os"
  14. "time"
  15. )
  16. //基于windows系统服务器,安装成服务
  17. type program struct{}
  18. func (p *program) Start(s service.Service) error {
  19. // Start should not block. Do the actual work async.
  20. go p.run()
  21. return nil
  22. }
  23. func (p *program) run() {
  24. appMain()
  25. }
  26. func (p *program) Stop(s service.Service) error {
  27. return nil
  28. }
  29. func main() {
  30. svcConfig := &service.Config{
  31. Name: "LAPP_AS",
  32. DisplayName: "LAPP_AS",
  33. Description: "this is LAPP_AS",
  34. }
  35. prg := &program{}
  36. s, err := service.New(prg, svcConfig)
  37. if err != nil {
  38. log.Fatal(err)
  39. }
  40. if len(os.Args) > 1 {
  41. verb := os.Args[1]
  42. switch verb {
  43. case "install":
  44. s.Install()
  45. log.Println("服务安装成功")
  46. return
  47. case "remove":
  48. s.Uninstall()
  49. log.Println("服务卸载成功")
  50. return
  51. case "start":
  52. s.Start()
  53. log.Println("服务启动")
  54. return
  55. case "stop":
  56. s.Stop()
  57. log.Println("服务暂停")
  58. return
  59. }
  60. }
  61. err = s.Run()
  62. if err != nil {
  63. log.Println(err)
  64. }
  65. }
  66. func appMain() {
  67. //监控
  68. //go func() {
  69. // http.ListenAndServe("0.0.0.0:8899", nil)
  70. //}()
  71. // init app global config
  72. err := config.InitConfig()
  73. if err != nil {
  74. log.Fatal("init app config failed, error:", err)
  75. }
  76. //init logger config
  77. if err = logger.InitConfig(); err != nil {
  78. log.Fatal("init logger config failed, error:", err.Error())
  79. }
  80. // init global location time zone
  81. global.TimezoneLocation, err = time.LoadLocation("Asia/Shanghai")
  82. if err != nil {
  83. log.Fatal("init global time zone location failed, error:", err)
  84. }
  85. // init app db engine
  86. if err = db.InitDB(); err != nil {
  87. log.Fatal("init app db failed, error:", err)
  88. }
  89. // new iris application
  90. app := iris.New()
  91. routes.Hub(app)
  92. app.HandleDir("/public", "./web/public")
  93. //middleware.PreSettring(app)
  94. // init iris config
  95. irisConfig := iris.DefaultConfiguration()
  96. irisConfig.DisableBodyConsumptionOnUnmarshal = false
  97. irisConfig.DisablePathCorrection = false
  98. irisConfig.EnablePathEscape = false
  99. irisConfig.FireMethodNotAllowed = false
  100. irisConfig.TimeFormat = "2006-01-02 15:04:05"
  101. irisConfig.Charset = "UTF-8"
  102. // run iris server
  103. err = app.Run(iris.Addr(fmt.Sprintf(":%d", config.AppConfig.App.Port)), iris.WithConfiguration(irisConfig))
  104. if err != nil {
  105. log.Fatal("run iris server failed, error:", err)
  106. }
  107. select {
  108. }
  109. }