Gin框架 -- 常用配置
1. 配置文件配置及加载
1.1 模块下载
go get gopkg.in/ini.v1
1.2 配置文件格式
#数据库类型:mysql/sqlite3
db_type = "mysql"
[mysql]
db_alias = "default"
db_name = "test"
db_user = "root"
db_pwd = "123"
db_host = "127.0.0.1"
db_port = 3306
db_charset = "utf8"
[sqlite3]
db_alias = "default"
db_name = "gin_test.db"
1.3 配置文件加载
func main() {
r := gin.Default()
// 读取配置文件
conf, err := ini.Load("./config/my.ini")
if err != nil {
log.Fatal("配置文件读取失败, err = ", err)
}
// 初始化路由路径
router.InitRouter(r)
// 初始化数据库
db := models.InitDB(conf)
defer db.Close()
// 项目的启动端口在这儿设置,也可以从配置文件中读取到这儿
port := ":" + conf.Section("").Key("httpport").String()
if err := r.Run(port); err != nil {
log.Fatal("程序启动失败:", err)
}
}
2. 静态文件配置
func main() {
router := gin.Default()
router.Static("/static", "./static") // 静态文件配置
router.StaticFS("/more_static", http.Dir("my_file_system"))
router.StaticFile("/favicon.ico", "./resources/favicon.ico")
// 监听并在 0.0.0.0:8080 上启动服务
router.Run(":8080")
}
3. 模板文件配置
func main(){
// 加载模板文件
r.LoadHTMLGlob("template/*/*")
}
4. 日志配置
func main(){
// 记录到文件。
f, _ := os.Create("gin.log")
gin.DefaultWriter = io.MultiWriter(f)
}
5. IP白名单
func main(){
// 设置信任的客户端IP
r.SetTrustedProxies([]string{"192.168.1.33"})
}
6. 开启DeBug模式
func main(){
// 开启DeBug模式
gin.SetMode(gin.DebugMode)
}
7. 配置文件读取运行端口
func main(){
// 1. 加在配置文件
conf, err := ini.Load("./config/my.ini")
if err != nil {
log.Fatal("配置文件读取失败, err = ", err)
}
// 2. 获取项目运行端口
port := conf.Section("").Key("http_host").String() +":" + conf.Section("").Key("http_port").String()
if err = r.Run(port); err != nil{
fmt.Println("服务端启动错误:",err)
}
}
8. Mysql连接配置
models/initDB.go
package models
import (
"github.com/gogf/gf/os/gfile"
"github.com/jinzhu/gorm"
"gopkg.in/ini.v1"
"log"
"os"
"path"
// 加载MySQL数据库驱动
_ "github.com/go-sql-driver/mysql"
// 加载sqlite3数据库驱动
//_ "github.com/mattn/go-sqlite3"
)
// 全局db对象
var db *gorm.DB
func InitDB(conf *ini.File) *gorm.DB {
var err error
// 数据库类型:mysql/sqlite3
// db_type = "mysql"
dbType := conf.Section("").Key("db_type").String()
// mysql配置信息
mysqlName := conf.Section("mysql").Key("db_name").String() // 数据库名称
mysqlUser := conf.Section("mysql").Key("db_user").String() // 用户名
mysqlPwd := conf.Section("mysql").Key("db_pwd").String() // 密码
mysqlHost := conf.Section("mysql").Key("db_host").String() // 数据库ip地址
mysqlPort := conf.Section("mysql").Key("db_port").String() // 数据库端口
mysqlCharset := conf.Section("mysql").Key("db_charset").String() // 指定字符集
// sqlite3配置信息
sqliteName := conf.Section("sqlite3").Key("db_name").String()
var dataSource string
switch dbType {
case "mysql":
// parseTime=true 表示自动解析为时间
dataSource = mysqlUser + ":" + mysqlPwd + "@tcp(" + mysqlHost + ":" + mysqlPort + ")/" + mysqlName + "?charset=" + mysqlCharset + "&parseTime=true"
db, err = gorm.Open(dbType,dataSource)
case "sqlite3":
dataSource = "database" + string(os.PathSeparator) + sqliteName
if !gfile.Exists(dataSource){
os.MkdirAll(path.Dir(dataSource),os.ModePerm)
os.Create(dataSource)
}
db, err = gorm.Open(dbType,dataSource)
}
if err != nil{
db.Close()
log.Println("数据库加载失败",err)
}
// 设置数据库操作显示原生SQL 语句
Db.LogMode(true)
// 数据库表动态迁移
db.AutoMigrate(&auth.User{})
// 设置数据库连接池空闲连接数
db.DB().SetConnMaxIdleTime(50)
// 打开连接
db.DB().SetMaxOpenConns(100)
// 表明禁用后缀加s
db.SingularTable(true)
return db
}
main.go
func main(){
// 初始化数据库
db := models.InitDB(conf)
defer db.Close()
}
python防脱发技巧

浙公网安备 33010602011771号