mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-20 17:57:54 +00:00
feat:Extract global configuration
This commit is contained in:
+43
-47
@@ -11,57 +11,56 @@ import (
|
||||
"go-admin/global/orm"
|
||||
"go-admin/router"
|
||||
"go-admin/tools"
|
||||
config2 "go-admin/tools/config"
|
||||
"go-admin/tools/config"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/signal"
|
||||
"time"
|
||||
)
|
||||
)
|
||||
|
||||
var (
|
||||
config string
|
||||
port string
|
||||
mode string
|
||||
StartCmd = &cobra.Command{
|
||||
Use: "server",
|
||||
Short: "Start API server",
|
||||
Example: "go-admin server config/settings.yml",
|
||||
PreRun: func(cmd *cobra.Command, args []string) {
|
||||
usage()
|
||||
setup()
|
||||
},
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
return run()
|
||||
},
|
||||
var (
|
||||
configYml string
|
||||
port string
|
||||
mode string
|
||||
StartCmd = &cobra.Command{
|
||||
Use: "server",
|
||||
Short: "Start API server",
|
||||
Example: "go-admin server config/settings.yml",
|
||||
PreRun: func(cmd *cobra.Command, args []string) {
|
||||
usage()
|
||||
setup()
|
||||
},
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
return run()
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func init() {
|
||||
StartCmd.PersistentFlags().StringVarP(&configYml, "config", "c", "config/settings.yml", "Start server with provided configuration file")
|
||||
StartCmd.PersistentFlags().StringVarP(&port, "port", "p", "8000", "Tcp port server listening on")
|
||||
StartCmd.PersistentFlags().StringVarP(&mode, "mode", "m", "dev", "server mode ; eg:dev,test,prod")
|
||||
}
|
||||
)
|
||||
|
||||
func init() {
|
||||
StartCmd.PersistentFlags().StringVarP(&config, "config", "c", "config/settings.yml", "Start server with provided configuration file")
|
||||
StartCmd.PersistentFlags().StringVarP(&port, "port", "p", "8000", "Tcp port server listening on")
|
||||
StartCmd.PersistentFlags().StringVarP(&mode, "mode", "m", "dev", "server mode ; eg:dev,test,prod")
|
||||
}
|
||||
func usage() {
|
||||
usageStr := `starting api server`
|
||||
log.Printf("%s\n", usageStr)
|
||||
}
|
||||
|
||||
func usage() {
|
||||
usageStr := `starting api server`
|
||||
log.Printf("%s\n", usageStr)
|
||||
}
|
||||
|
||||
func setup() {
|
||||
|
||||
//1. 读取配置
|
||||
config2.ConfigSetup(config)
|
||||
//2. 设置日志
|
||||
tools.InitLogger()
|
||||
//3. 初始化数据库链接
|
||||
database.Setup()
|
||||
func setup() {
|
||||
//1. 读取配置
|
||||
config.ConfigSetup(configYml)
|
||||
//2. 设置日志
|
||||
tools.InitLogger()
|
||||
//3. 初始化数据库链接
|
||||
database.Setup(config.DatabaseConfig.Driver)
|
||||
|
||||
}
|
||||
|
||||
func run() error {
|
||||
if mode != "" {
|
||||
config2.SetConfig(config, "settings.application.mode", mode)
|
||||
config.SetConfig(configYml, "settings.application.mode", mode)
|
||||
}
|
||||
if viper.GetString("settings.application.mode") == string(tools.ModeProd) {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
@@ -70,31 +69,28 @@ func run() error {
|
||||
r := router.InitRouter()
|
||||
|
||||
defer orm.Eloquent.Close()
|
||||
if port != "" {
|
||||
config2.SetConfig(config, "settings.application.port", port)
|
||||
}
|
||||
|
||||
srv := &http.Server{
|
||||
Addr: config2.ApplicationConfig.Host + ":" + config2.ApplicationConfig.Port,
|
||||
Addr: config.ApplicationConfig.Host + ":" + config.ApplicationConfig.Port,
|
||||
Handler: r,
|
||||
}
|
||||
|
||||
go func() {
|
||||
// 服务连接
|
||||
if config2.ApplicationConfig.IsHttps {
|
||||
if err := srv.ListenAndServeTLS(config2.SslConfig.Pem, config2.SslConfig.KeyStr); err != nil && err != http.ErrServerClosed {
|
||||
log.Fatalf("listen: %s\n", err)
|
||||
if config.ApplicationConfig.IsHttps {
|
||||
if err := srv.ListenAndServeTLS(config.SslConfig.Pem, config.SslConfig.KeyStr); err != nil && err != http.ErrServerClosed {
|
||||
log.Fatalf("listen: %s \r\n", err)
|
||||
}
|
||||
} else {
|
||||
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
||||
log.Fatalf("listen: %s\n", err)
|
||||
log.Fatalf("listen: %s \r\n", err)
|
||||
}
|
||||
}
|
||||
}()
|
||||
content, _ := ioutil.ReadFile("./static/go-admin.txt")
|
||||
fmt.Println(string(content))
|
||||
fmt.Printf("%s Server Run http://127.0.0.1:%s/ \r\n", tools.GetCurrntTimeStr(), config2.ApplicationConfig.Port)
|
||||
fmt.Printf("%s Swagger URL http://127.0.0.1:%s/swagger/index.html \r\n", tools.GetCurrntTimeStr(), config2.ApplicationConfig.Port)
|
||||
fmt.Printf("%s Server Run http://%s:%s/ \r\n", tools.GetCurrntTimeStr(), config.ApplicationConfig.Host, config.ApplicationConfig.Port)
|
||||
fmt.Printf("%s Swagger URL http://%s:%s/swagger/index.html \r\n", tools.GetCurrntTimeStr(), config.ApplicationConfig.Host, config.ApplicationConfig.Port)
|
||||
fmt.Printf("%s Enter Control + C Shutdown Server \r\n", tools.GetCurrntTimeStr())
|
||||
// 等待中断信号以优雅地关闭服务器(设置 5 秒的超时时间)
|
||||
quit := make(chan os.Signal)
|
||||
|
||||
Reference in New Issue
Block a user