golang线上多版本部署服务
----本地------------------------:
golang脚本位置:
/home/gocode/golang-asynctask
本地打包:
打开git bash 终端
# 校验,必须输出 D:\gocode1.14\go1.14.3
D:/gocode1.14/go1.14.3/bin/go.exe env GOROOT
export GOROOT=D:/gocode1.14/go1.14.3
export GOOS=linux
export GOARCH=amd64
# 校验,必须输出 D:\gocode1.14\go1.14.3
D:/gocode1.14/go1.14.3/bin/go.exe env GOROOT
# 交叉编译
D:/gocode1.14/go1.14.3/bin/go.exe build -o wms_stock_inout_redis_queue_task ./cmd/wms/stock_task
# 清理缓存 如果编译报错可以执行
D:/gocode1.14/go1.14.3/bin/go.exe clean -cache
D:/gocode1.14/go1.14.3/bin/go.exe clean -modcache
# 拉依赖 如果编译报错可以执行
D:/gocode1.14/go1.14.3/bin/go.exe mod tidy
## 单独执行脚本:
/home/gocode/golang-asynctask/build/wms_stock_inout_redis_queue_task --config=/home/gocode/golang-asynctask/config/dev/ --logdir=/home/gocode/golang-asynctask/logs
## supervisord管理:
配置文件:/etc/supervisor
vim /etc/supervisor/golang-asynctask-wms-stockinout-queue-task.conf
[program:golang-asynctask-wmsStockInOutQueue-task]
process_name=%(program_name)s_%(process_num)02d
command=/home/gocode/golang-asynctask/build/wms_stock_inout_redis_queue_task --config=/home/gocode/golang-asynctask/config/dev/ --logdir=/home/gocode/golang-asynctask/logs
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true
stderr_logfile=/home/gocode/logs/golang-asynctask-wmsStockInOutQueue-task-error.log
stdout_logfile=/home/gocode/logs/golang-asynctask-wmsStockInOutQueue-task-access.log
#查询状态
[root@serv-test supervisor]# supervisorctl status |grep golang-asynctask-wmsStockInOutQueue-task
golang-asynctask-wmsStockInOutQueue-task:golang-asynctask-wmsStockInOutQueue-task_00 RUNNING pid 11035, uptime 0:00:15
##重启
[root@serv-test supervisor]# supervisorctl restart golang-asynctask-wmsStockInOutQueue-task:*
golang-asynctask-wmsStockInOutQueue-task:golang-asynctask-wmsStockInOutQueue-task_00: stopped
golang-asynctask-wmsStockInOutQueue-task:golang-asynctask-wmsStockInOutQueue-task_00: started
----线上------------------------:
服务器:
go-web1 | 172.18.xxxx.xxxx
cd /data2/gocode/golang_asynctask
编译:
1,线上直接编译
go-web1 | 172.18.xxx.xxx cd /data2/gocode/golang_asynctask /data2/gocode/golang_asynctask/build/wms/wms_stock_inout_redis_queue_task --config=/data2/gocode/golang_asynctask/config/prod/ --logdir=/data2/gocode/golang_asynctask/logs 线上任务管理: cd /data2/supervisord.d vim golang-asynctask-wms-stockinout-queue-task.ini ----------------配置文件--------------------------- [program:golang-asynctask-wmsStockInOutQueue-task] command=/data2/gocode/golang_asynctask/build/wms/wms_stock_inout_redis_queue_task --config=/data2/gocode/golang_asynctask/config/prod/ --logdir=/data2/gocode/golang_asynctask/logs numprocs=1 process_name=%(program_name)s_%(process_num)02d autostart=true autorestart=true startretries=1 user=root redirect_stderr=true stderr_logfile=/data2/supervisord.d/logs/golang_wmsStockInOutQueue_task_error.log stdout_logfile=/data2/supervisord.d/logs/golang_wmsStockInOutQueue_task_access.log /usr/local/go1.14.3/bin/go ``` /data/ichunt-cron/crons/golang_wms_stock_inout_redis_queue_task.sh #!/bin/bash export GOROOT=/usr/local/go1.14.3 export GOBIN=$GOROOT/bin export GOPATH=/data2/golang1.14.3 # 重点:GOBIN放PATH最前面,GOPATH/bin才加入PATH,不要把GOPATH加入PATH export PATH=$GOBIN:$GOPATH/bin:$PATH export GO111MODULE=on export GOPROXY=https://goproxy.io export GOCACHE=/data2/golang1.14.3/cache cd /data2/gocode/golang_asynctask echo "1. git pull 拉取代码" git pull origin master echo "2. 删除旧二进制" rm -f "${BIN_FILE}" BIN_FILE="/data2/gocode/golang_asynctask/build/wms/wms_stock_inout_redis_queue_task" [ -f "${BIN_FILE}" ] && rm -f "${BIN_FILE}" echo "3. go build 编译 go1.14.3" /usr/local/go1.14.3/bin/go build -o "${BIN_FILE}" /data2/gocode/golang_asynctask/cmd/wms/stock_task/main.go echo "4. 添加可执行权限" chmod +x "${BIN_FILE}" echo "5. 校验编译产物go版本" /usr/local/go1.14.3/bin/go version "${BIN_FILE}" echo "6. supervisor 重启服务" supervisorctl restart golang-asynctask-wmsStockInOutQueue-task:*
2,本地编译后上传
本地编译
上传文件
重启动服务
supervisorctl restart golang-asynctask-wmsStockInOutQueue-task:*
本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/23013069
浙公网安备 33010602011771号