Skip to content

服务器部署

打包

  1. 打包命令
  • go build [-o output] [-i] [build flags] [packages]
参数名格式含义
-o-o file指定编译后二进制文件名
-a-a强制重新编译涉及的依赖
-s-s省略符号表并调试信息
-w-w省略 DWARF 符号表
-p-p指定编译过程中的并发数,默认为CPU数
-work-work设置该参数后不会在程序结束后删掉编译的临时文件,可用于参看编译生成的文件
-n-n加上该参数可以查看编译的过程,但不会继续执行编译后的二进制文件
-x-x加上该参数可以查看编译的过程,会继续执行编译后的二进制文件
  1. 打包环境
参数含义示例
CGO_ENABLED是否Cgo标志CGO_ENABLED=0
GOOS打包平台linux/windows/darwin...GOOS=linux
GOARCH打包架构 amd64/arm64GOARCH=amd64
  1. 示例
bash
# 默认打包
go build test.go
# 指定环境打包
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go

部署

  1. 安装nohup守护进程工具,让go能持续后台运行
bash
# 一般系统默认自带nohup工具
nohup --version
  1. 把打好的包上传到linux服务器
bash
# scp [账号]@[目标服务器]:/[本地包的地址] [服务器地址]
scp root@192.168.1.100:/Users/project/bao /www/wwwroot/test
  1. 更新线上环境配置文件
bash
# 把开发环境的配置文件上传到[包]的同级目录
# 更改配置文件的配置
  1. 后台运行包
bash
# & 是指后台运行
# 2>&1 是吧bao运行产生的日志 记在bao.log中
nohup ./test > test.log 2>&1 &
  1. 配置nginx代理让外部访问
config
server{
    listen 80
    access_log /var/log/nginx/base_access.log;
    error_log /var/log/nginx/base_error.log;

    location ~ {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 配置文件的端口
        proxy_pass http://127.0.0.1:8080;
    }
}

关闭进程

bash
# 查找test包的进程id
ps -aux | grep test
# 杀死进程
kill 26081