共用配置文件导入
This commit is contained in:
@@ -11,22 +11,20 @@ import (
|
|||||||
"github.com/jmoiron/sqlx"
|
"github.com/jmoiron/sqlx"
|
||||||
)
|
)
|
||||||
|
|
||||||
var connection *sqlx.DB
|
func NewSchema(config Config) (graphql.Schema, error) {
|
||||||
|
|
||||||
func init() {
|
// 打开数据库连接
|
||||||
var err error
|
connection, err := sqlx.Connect("mysql", fmt.Sprintf(
|
||||||
user := models.Viper.Get("mysql.user").(string)
|
"%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
|
||||||
password := models.Viper.Get("mysql.password").(string)
|
config.Mysql.UserName,
|
||||||
host := models.Viper.Get("mysql.host").(string)
|
config.Mysql.Password,
|
||||||
port := models.Viper.Get("mysql.port").(int)
|
config.Mysql.Host,
|
||||||
database := models.Viper.Get("mysql.database").(string)
|
config.Mysql.Port,
|
||||||
connection, err = sqlx.Connect("mysql", fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", user, password, host, port, database))
|
config.Mysql.Database,
|
||||||
|
))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln("连接数据库失败", err)
|
log.Fatalln("连接数据库失败", err)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
func NewSchema() (graphql.Schema, error) {
|
|
||||||
|
|
||||||
// 文章的可选字段
|
// 文章的可选字段
|
||||||
article := graphql.NewObject(graphql.ObjectConfig{
|
article := graphql.NewObject(graphql.ObjectConfig{
|
||||||
@@ -54,6 +52,9 @@ func NewSchema() (graphql.Schema, error) {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 图像中的文字提取
|
||||||
|
// text := graphql.NewObject(graphql.ObjectConfig{})
|
||||||
|
|
||||||
// 图像的可选字段
|
// 图像的可选字段
|
||||||
image := graphql.NewObject(graphql.ObjectConfig{
|
image := graphql.NewObject(graphql.ObjectConfig{
|
||||||
Name: "Image",
|
Name: "Image",
|
||||||
@@ -66,6 +67,7 @@ func NewSchema() (graphql.Schema, error) {
|
|||||||
"description": &graphql.Field{Type: graphql.String},
|
"description": &graphql.Field{Type: graphql.String},
|
||||||
"tags": &graphql.Field{Type: graphql.String},
|
"tags": &graphql.Field{Type: graphql.String},
|
||||||
"rank": &graphql.Field{Type: graphql.String},
|
"rank": &graphql.Field{Type: graphql.String},
|
||||||
|
"text": &graphql.Field{Type: graphql.String},
|
||||||
"comment_num": &graphql.Field{Type: graphql.Int},
|
"comment_num": &graphql.Field{Type: graphql.Int},
|
||||||
"article_category_top_id": &graphql.Field{Type: graphql.Int},
|
"article_category_top_id": &graphql.Field{Type: graphql.Int},
|
||||||
"praise_count": &graphql.Field{Type: graphql.Int},
|
"praise_count": &graphql.Field{Type: graphql.Int},
|
||||||
|
@@ -13,6 +13,7 @@ type Image struct {
|
|||||||
Description string `json:"description" db:"description"`
|
Description string `json:"description" db:"description"`
|
||||||
Tags string `json:"tags" db:"tags"`
|
Tags string `json:"tags" db:"tags"`
|
||||||
Rank string `json:"rank" db:"rank"`
|
Rank string `json:"rank" db:"rank"`
|
||||||
|
Text string `json:"text" db:"text"`
|
||||||
CommentNum int `json:"comment_num" db:"comment_num"`
|
CommentNum int `json:"comment_num" db:"comment_num"`
|
||||||
ArticleCategoryTopId int `json:"article_category_top_id" db:"article_category_top_id"`
|
ArticleCategoryTopId int `json:"article_category_top_id" db:"article_category_top_id"`
|
||||||
PraiseCount int `json:"praise_count" db:"praise_count"`
|
PraiseCount int `json:"praise_count" db:"praise_count"`
|
||||||
@@ -41,3 +42,15 @@ type Article struct {
|
|||||||
CreateTime time.Time `json:"create_time" db:"create_time"`
|
CreateTime time.Time `json:"create_time" db:"create_time"`
|
||||||
UpdateTime time.Time `json:"update_time" db:"update_time"`
|
UpdateTime time.Time `json:"update_time" db:"update_time"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 输入配置
|
||||||
|
type ConfigMysql struct {
|
||||||
|
Host string
|
||||||
|
Port int
|
||||||
|
Database string
|
||||||
|
UserName string
|
||||||
|
Password string
|
||||||
|
}
|
||||||
|
type Config struct {
|
||||||
|
Mysql ConfigMysql
|
||||||
|
}
|
||||||
|
19
bin/main.go
19
bin/main.go
@@ -174,6 +174,15 @@ func (image *Image) GetSimilarImagesIdList(collection_name string) (ids []int64)
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
runtime.GOMAXPROCS(runtime.NumCPU())
|
runtime.GOMAXPROCS(runtime.NumCPU())
|
||||||
|
|
||||||
|
viper.SetConfigFile("./data/config.yaml")
|
||||||
|
if err := viper.ReadInConfig(); err != nil {
|
||||||
|
log.Println("读取配置文件失败", err)
|
||||||
|
}
|
||||||
|
config := viper.GetViper()
|
||||||
|
|
||||||
|
models.InitConfig(config)
|
||||||
|
|
||||||
mysqlConnection.Init()
|
mysqlConnection.Init()
|
||||||
milvusConnection.Init()
|
milvusConnection.Init()
|
||||||
err := milvusConnection.Client.LoadCollection(context.Background(), "default", false)
|
err := milvusConnection.Client.LoadCollection(context.Background(), "default", false)
|
||||||
@@ -183,7 +192,15 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Schema
|
// Schema
|
||||||
schema, err := api.NewSchema()
|
schema, err := api.NewSchema(api.Config{
|
||||||
|
Mysql: api.ConfigMysql{
|
||||||
|
Host: config.GetString("mysql.host"),
|
||||||
|
Port: config.GetInt("mysql.port"),
|
||||||
|
Database: config.GetString("mysql.database"),
|
||||||
|
UserName: config.GetString("mysql.user"),
|
||||||
|
Password: config.GetString("mysql.password"),
|
||||||
|
},
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("failed to create new schema, error: %v", err)
|
log.Fatalf("failed to create new schema, error: %v", err)
|
||||||
}
|
}
|
||||||
|
35
demo/main.go
35
demo/main.go
@@ -1,35 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"log"
|
|
||||||
"net/http"
|
|
||||||
"runtime"
|
|
||||||
|
|
||||||
"git.satori.love/gameui/webp/api"
|
|
||||||
"github.com/graphql-go/graphql"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
runtime.GOMAXPROCS(runtime.NumCPU())
|
|
||||||
|
|
||||||
schema, err := api.NewSchema()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalln("创建Schema失败", err)
|
|
||||||
}
|
|
||||||
http.HandleFunc("/api", func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
query := r.URL.Query().Get("query")
|
|
||||||
params := graphql.Params{Schema: schema, RequestString: query}
|
|
||||||
result := graphql.Do(params)
|
|
||||||
if len(result.Errors) > 0 {
|
|
||||||
fmt.Printf("failed to execute graphql operation, errors: %+v", result.Errors)
|
|
||||||
http.Error(w, result.Errors[0].Error(), 500)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
rJSON, _ := json.MarshalIndent(result.Data, "", " ")
|
|
||||||
w.Write(rJSON)
|
|
||||||
})
|
|
||||||
fmt.Println("Now server is running on port 6001")
|
|
||||||
http.ListenAndServe(":6001", nil)
|
|
||||||
}
|
|
@@ -1,44 +1,9 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
import (
|
import "github.com/spf13/viper"
|
||||||
"log"
|
|
||||||
"path/filepath"
|
|
||||||
"runtime"
|
|
||||||
|
|
||||||
"github.com/spf13/viper"
|
var config *viper.Viper
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
func InitConfig(cfg *viper.Viper) {
|
||||||
Root string
|
config = cfg
|
||||||
Viper *viper.Viper
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
_, b, _, _ := runtime.Caller(0)
|
|
||||||
Root = filepath.Join(filepath.Dir(b), "..")
|
|
||||||
config_file := filepath.Join(Root, "data", "config.yaml")
|
|
||||||
viper.SetConfigFile(config_file)
|
|
||||||
if err := viper.ReadInConfig(); err != nil {
|
|
||||||
log.Println("读取配置文件失败", err)
|
|
||||||
生成配置文件()
|
|
||||||
}
|
|
||||||
Viper = viper.GetViper()
|
|
||||||
}
|
|
||||||
|
|
||||||
func 生成配置文件() {
|
|
||||||
viper.Set("mysql.host", "")
|
|
||||||
viper.Set("mysql.port", 3306)
|
|
||||||
viper.Set("mysql.user", "")
|
|
||||||
viper.Set("mysql.password", "")
|
|
||||||
viper.Set("mysql.dbname", "")
|
|
||||||
viper.Set("mysql.charset", "utf8mb4")
|
|
||||||
viper.Set("mysql.maxOpenConns", 100)
|
|
||||||
|
|
||||||
viper.Set("oss.endpoint", "")
|
|
||||||
viper.Set("oss.accessID", "")
|
|
||||||
viper.Set("oss.accessKey", "")
|
|
||||||
|
|
||||||
viper.Set("video.endpoint", "")
|
|
||||||
viper.Set("video.accessKeyID", "")
|
|
||||||
viper.Set("video.accessKey", "")
|
|
||||||
}
|
}
|
||||||
|
@@ -13,11 +13,9 @@ import (
|
|||||||
|
|
||||||
func elasticsearch_init() (es *elasticsearch.Client) {
|
func elasticsearch_init() (es *elasticsearch.Client) {
|
||||||
es, err := elasticsearch.NewClient(elasticsearch.Config{
|
es, err := elasticsearch.NewClient(elasticsearch.Config{
|
||||||
Addresses: []string{
|
Addresses: []string{config.GetString("elasticsearch.host")},
|
||||||
Viper.Get("elasticsearch.host").(string),
|
Username: config.GetString("elasticsearch.user"),
|
||||||
},
|
Password: config.GetString("elasticsearch.password"),
|
||||||
Username: Viper.Get("elasticsearch.user").(string),
|
|
||||||
Password: Viper.Get("elasticsearch.password").(string),
|
|
||||||
Transport: &http.Transport{
|
Transport: &http.Transport{
|
||||||
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
|
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
|
||||||
},
|
},
|
||||||
|
@@ -18,12 +18,11 @@ func (m *MilvusConnection) GetClient() client.Client {
|
|||||||
|
|
||||||
func (m *MilvusConnection) Init() (err error) {
|
func (m *MilvusConnection) Init() (err error) {
|
||||||
log.Println("Milvus connection init")
|
log.Println("Milvus connection init")
|
||||||
host := Viper.Get("milvus.host").(string)
|
m.Client, err = client.NewGrpcClient(context.Background(), fmt.Sprintf(
|
||||||
port := Viper.Get("milvus.port").(int)
|
"%s:%d",
|
||||||
m.Client, err = client.NewGrpcClient(
|
config.GetString("milvus.host"),
|
||||||
context.Background(),
|
config.GetInt("milvus.port"),
|
||||||
fmt.Sprintf("%s:%d", host, port),
|
))
|
||||||
)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Milvus connection failed:", err)
|
log.Println("Milvus connection failed:", err)
|
||||||
return
|
return
|
||||||
@@ -31,16 +30,3 @@ func (m *MilvusConnection) Init() (err error) {
|
|||||||
log.Println("Milvus connection success")
|
log.Println("Milvus connection success")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *MilvusConnection) GetCollection(collection_name string) (collection *client.Client, err error) {
|
|
||||||
if m.Client == nil {
|
|
||||||
m.Init()
|
|
||||||
}
|
|
||||||
err = m.Client.LoadCollection(context.Background(), collection_name, false)
|
|
||||||
if err != nil {
|
|
||||||
log.Println("Milvus load collection failed:", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
collection = &m.Client
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
@@ -10,38 +10,24 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
_ "github.com/go-sql-driver/mysql"
|
_ "github.com/go-sql-driver/mysql"
|
||||||
"github.com/jmoiron/sqlx"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var connection *sqlx.DB
|
|
||||||
var connectionx *sql.DB
|
var connectionx *sql.DB
|
||||||
|
|
||||||
func init() {
|
|
||||||
var err error
|
|
||||||
user := Viper.Get("mysql.user").(string)
|
|
||||||
password := Viper.Get("mysql.password").(string)
|
|
||||||
host := Viper.Get("mysql.host").(string)
|
|
||||||
port := Viper.Get("mysql.port").(int)
|
|
||||||
database := Viper.Get("mysql.database").(string)
|
|
||||||
connection, err = sqlx.Connect("mysql", fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", user, password, host, port, database))
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalln("连接数据库失败", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type MysqlConnection struct {
|
type MysqlConnection struct {
|
||||||
Database *sql.DB
|
Database *sql.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初始化数据库连接
|
// 初始化数据库连接
|
||||||
func (m *MysqlConnection) Init() (err error) {
|
func (m *MysqlConnection) Init() (err error) {
|
||||||
user := Viper.Get("mysql.user").(string)
|
m.Database, err = sql.Open("mysql", fmt.Sprintf(
|
||||||
password := Viper.Get("mysql.password").(string)
|
"%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
|
||||||
host := Viper.Get("mysql.host").(string)
|
config.GetString("mysql.user"),
|
||||||
port := Viper.Get("mysql.port").(int)
|
config.GetString("mysql.password"),
|
||||||
database := Viper.Get("mysql.database").(string)
|
config.GetString("mysql.host"),
|
||||||
sqlconf := user + ":" + password + "@tcp(" + host + ":" + strconv.Itoa(port) + ")/" + database + "?charset=utf8mb4&parseTime=True&loc=Local"
|
config.GetInt("mysql.port"),
|
||||||
m.Database, err = sql.Open("mysql", sqlconf) // 连接数据库
|
config.GetString("mysql.database"),
|
||||||
|
))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("连接数据库失败", err)
|
log.Println("连接数据库失败", err)
|
||||||
return
|
return
|
||||||
|
@@ -8,12 +8,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func GetBucket(bucketName string) *oss.Bucket {
|
func GetBucket(bucketName string) *oss.Bucket {
|
||||||
// 从config文件中读取配置
|
client, err := oss.New(
|
||||||
endpoint := Viper.Get("oss.endpoint").(string)
|
config.GetString("oss.endpoint"),
|
||||||
accessID := Viper.Get("oss.accessID").(string)
|
config.GetString("oss.accessID"),
|
||||||
accessKey := Viper.Get("oss.accessKey").(string)
|
config.GetString("oss.accessKey"),
|
||||||
|
)
|
||||||
client, err := oss.New(endpoint, accessID, accessKey)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
HandleError(err)
|
HandleError(err)
|
||||||
}
|
}
|
||||||
|
19
update.sh
19
update.sh
@@ -17,22 +17,3 @@ ssh $host "pm2 reload webp"
|
|||||||
|
|
||||||
# 删除旧文件
|
# 删除旧文件
|
||||||
ssh $host "rm ~/webp/main_old"
|
ssh $host "rm ~/webp/main_old"
|
||||||
|
|
||||||
|
|
||||||
# pm2 start /root/webp/main --name webp --watch
|
|
||||||
|
|
||||||
# 查看 main_ 的進程, 然後使用 kill -9 强制关闭
|
|
||||||
# ssh $host "ps -ef | grep -v grep | grep ./main"
|
|
||||||
# ssh $host "kill -9 \`ps -ef | grep -v grep | grep ./main | awk '{print \$2}'\`"
|
|
||||||
|
|
||||||
# 重启服务, 保持服务不被关闭 (pkill ./main; 無效, 還需防止 nohup 不退出)
|
|
||||||
#ssh $host "rm ./main; mv ./main_new ./main;"
|
|
||||||
#ssh $host "nohup ./main test >> nohup.out 2>&1 &"
|
|
||||||
#ssh $host "nohup ./main server >> nohup.out 2>&1 &"
|
|
||||||
#ssh $host "ps -ef | grep -v grep | grep ./main"
|
|
||||||
|
|
||||||
# 查看日志
|
|
||||||
# ssh root@47.103.40.152 "tail -fn 50 nohup.out"
|
|
||||||
|
|
||||||
# 查看所有進程, 排除grep, 只看本用戶, 排除進程名帶方括號的, 排除lib, 排除bash, 排除sshd, 按照進程名排序, 對 main 高亮爲紅色
|
|
||||||
#ssh root@47.103.40.152 "ps -ef | grep -v grep | grep \$USER | grep -v '\[' | grep -v /lib | grep -v bash | grep -v sshd | grep -v /sbin | sort -k 8"
|
|
||||||
|
Reference in New Issue
Block a user