前言
这是基于宝塔来进行部署的golang应用,golang用1.19.2版本
下载安装
- 下载:
下载地址:https://studygolang.com/dl
如下截图,有macos,linux, windows,我电脑是基于x64的体系结构,所以都是以amd64的。
- 安装
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.19.2.linux-amd64.tar.gz
- 设置环境变量
export PATH=$PATH:/usr/local/go/bin
或者到/root/.bash_profile,或 /etc/profile去设置环境变量
PATH=$PATH:/usr/local/go/bin
- 设置go环境变量
//开启模块
go env -w GO111MODULE="on"
如果是本地或国内服务器,代理改下,国外服务器还是保持不变
go env -w GOPROXY="https://goproxy.cn,direct"
国外服务器
go env -w GOPROXY="https://proxy.golang.org,direct"
注意事项
- go项目运行之后,修改.env文件不会立即生效,需要重启go服务才会生效
- go项目运行之后,修改config.ini配置文件会立即生效,无需重启go服务
GOOS=darwin GOARCH=amd64 go build -o [app_name] [-v] [./crontab.go] app_name后面带上-v ./xxx.go表示以xxx.go作为启动文件- mac上打包的程序,目前只能在linux上才能执行成功。
打包部署
开发环境重新build项目(mac环境的打包语法)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o [app_name]
- 查找指定的端口的进程的端口号
netstat -tunlp | grep 端口号
- 结束之前的进程,开启新进程启动go服务
- PID是要结束的进程
- app_name是二进制文件名
- 使用&&同时执行两条命令,避免服务中断
kill -15 PID && nohup ./main >> nohup.log 2>&1 &
部署到服务器
手动打包
- windows
set CGO_ENABLED=0 //禁用CGO
set GOOS=linux //目标平台为linux
set GOARCH=amd64 //目标处理器架构是amd64
go build -o name //编译可执行文件到当前目录 (-o:自定义服务名)
- mac+linux版本
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app_name -v xxxx.go
- 例子:
生成web服务
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o data-collect-web -v main.go
生成计划任务服务
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o data-collect-crontab -v crontab.go
使用makefile打包
在项目根目录中创建一个makefile文件,执行make命令
make help //make自定义命令说明
make build-web //在根目录生成data-collect-web服务命令
make build-crontab: //在根目录生成data-collect-crontab服务命令并记录到日志
makefile的源码:
#帮助说明:
help:
echo "build-web: 在根目录生成data-collect-web服务命令\r\nbuild-crontab: 在根目录生成data-collect-crontab服务命令"
#打包web项目
build-web:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o data-collect-web -v main.go; \
#nohup ./data-coleter-web >> nohup-web.log 2>&1 & #由于是宝塔上启动服务为了避免冲突,就先注释掉
#到计划任务项目
build-crontab:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o data-collect-crontab -v crontab.go; \
nohup ./data-collect-crontab >> /www/wwwlogs/nohup-crontab.log 2>&1 &
服务的运行
- 后台常驻服务运行方式
进到服务相关目录
nohup ./data-coleter-web >> nohup-web.log 2>&1 &
计划任务的话,需要先杀到老的进程,再启动服务
nohup ./data-collect-crontab >> /www/wwwlogs/nohup-crontab.log 2>&1 & #注意日志目录要有777权限
宝塔上配置web服务
- 创建项目
-
配置服务+端口
-
配置域名
-
配置证书
- 服务重启
在修改了项目代码后,需要重新打包,这时需要重启服务