From 79ebd83c25b6e408824fb1adca1759013f43e129 Mon Sep 17 00:00:00 2001 From: gotoeasy Date: Tue, 13 Sep 2022 09:08:26 +0800 Subject: [PATCH] Go1.19 --- README.md | 3 +++ glc/Dockerfile | 2 +- glc/conf/config.go | 9 ++++++- glc/onstart/daemon.go | 31 ++++++++++++++++++++++++ glc/rabbitmq/consume/rabbitmq_consume.go | 2 +- 5 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 glc/onstart/daemon.go diff --git a/README.md b/README.md index 3a4adbb..2c0c1d7 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,8 @@ docker run -d -p 8080:8080 -v /glc:/glogcenter gotoeasy/glc - [x] `GLC_AMQP_ADDR`消息队列`rabbitMq`连接地址,例:`amqp://user:password@ip:port/`,默认空白 - [x] `GLC_AMQP_JSON_FORMAT`消息队列`rabbitMq`消息文本是否为`json`格式,默认`true` +## 命令行启动参数 +- [x] 支持命令行参数`-d`以后台方式启动 ## 接口 @@ -111,6 +113,7 @@ docker run -d -p 8080:8080 -v /glc:/glogcenter gotoeasy/glc - [ ] 多语言 - [ ] 分词优化 - [x] 升级使用Go1.19 +- [x] 支持命令行参数使用`-d`以后台方式启动 ### 版本`0.5.0` diff --git a/glc/Dockerfile b/glc/Dockerfile index 5227e03..409f79e 100644 --- a/glc/Dockerfile +++ b/glc/Dockerfile @@ -40,5 +40,5 @@ RUN alpine_version=`cat /etc/issue | head -1 | awk '{print $5}'` \ && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone \ && rm -rf /var/cache/apk/* -EXPOSE 8080 +EXPOSE 18080 ENTRYPOINT ["glc"] diff --git a/glc/conf/config.go b/glc/conf/config.go index bb66983..1f953c8 100644 --- a/glc/conf/config.go +++ b/glc/conf/config.go @@ -33,6 +33,13 @@ var password string func init() { UpdateConfigByEnv() + + // 自动判断创建目录 + _, err := os.Stat(storeRoot) + if err != nil && os.IsNotExist(err) { + os.MkdirAll(storeRoot, 0766) + } + } func UpdateConfigByEnv() { @@ -41,7 +48,7 @@ func UpdateConfigByEnv() { storeChanLength = GetenvInt("GLC_STORE_CHAN_LENGTH", 64) // 存储通道长度 maxIdleTime = GetenvInt("GLC_MAX_IDLE_TIME", 180) // 最大闲置时间(秒),超过闲置时间将自动关闭,0时表示不关闭 storeNameAutoAddDate = GetenvBool("GLC_STORE_NAME_AUTO_ADD_DATE", true) // 存储名是否自动添加日期(日志量大通常按日单位区分存储),默认true - serverPort = GetenvInt("GLC_SERVER_PORT", 8080) // web服务端口 + serverPort = GetenvInt("GLC_SERVER_PORT", 18080) // web服务端口,默认18080 contextPath = Getenv("GLC_CONTEXT_PATH", "/glc") // web服务contextPath enableSecurityKey = GetenvBool("GLC_ENABLE_SECURITY_KEY", false) // web服务是否开启API秘钥校验,默认false headerSecurityKey = Getenv("GLC_HEADER_SECURITY_KEY", "X-GLC-AUTH") // web服务API秘钥的header键名 diff --git a/glc/onstart/daemon.go b/glc/onstart/daemon.go new file mode 100644 index 0000000..c1b272e --- /dev/null +++ b/glc/onstart/daemon.go @@ -0,0 +1,31 @@ +package onstart + +import ( + "flag" + "fmt" + "os" + "os/exec" + "runtime" +) + +func init() { + + // 操作系统是linux时,支持以命令行参数【-d】后台方式启动 + daemon := false + for index, arg := range os.Args { + if runtime.GOOS == "linux" && index > 0 && arg == "-d" { + daemon = true + break + } + } + + if daemon { + cmd := exec.Command(os.Args[0], flag.Args()...) + if err := cmd.Start(); err != nil { + fmt.Printf("start %s failed, error: %v\n", os.Args[0], err) + os.Exit(1) + } + fmt.Printf("%s [PID] %d running\n", os.Args[0], cmd.Process.Pid) + os.Exit(0) + } +} diff --git a/glc/rabbitmq/consume/rabbitmq_consume.go b/glc/rabbitmq/consume/rabbitmq_consume.go index c3e6ce3..24a581b 100644 --- a/glc/rabbitmq/consume/rabbitmq_consume.go +++ b/glc/rabbitmq/consume/rabbitmq_consume.go @@ -40,7 +40,7 @@ func NewSimpleRabbitMQ() (*RabbitMQ, error) { // 关闭连接 func (r *RabbitMQ) Close() { - if r.closing { + if r == nil || r.closing { return }