Golang编译和部署
go在编译和部署方面相比于Java更有优势,首先编译速度极快,支持交叉编译,并且运行编译后的二进制文件时并不需要go的环境,只需要编译成指定运行平台的二进制文件就可以了。
go是支持交叉编译的,也就是说在Windows平台可以编译成Windows上、Linux上、Mac上等可以运行的可执行程序。
首先可以在控制台通过
go env
查看当前go相关的环境变量,注意两个变量GOOS和GOARCH:GOOS:目标平台的操作系统(darwin、freebsd、linux、netbsd、openbsd、windows)
GOARCH:目标平台的体系架构(386、amd64、arm、mips、mips64、mips64le、mipsle)
将这两个变量设置成目标平台的对应值。
然后在目标项目的根目录,就是main函数所在目录的控制台中运行
go build
编译,也可指定主类文件和编译生成的文件名,在该目录中就会生成编译后的可执行程序的文件了,不过如果有配置文件,比如conf.init这种,是不会编译进去的,只编译go相关的,所以运行程序时需要把配置文件和可执行程序放在一起运行。在Mac下编译Linux和Windows 64位可执行程序:
# Linux
GOOS=linux GOARCH=amd64 go build -i -o hello hello.go
# Windows
GOOS=windows GOARCH=amd64 go build -i -o hello hello.go
- 在linux下编译Mac和Windows 64位可执行程序:
# Darwin (Mac OS)
GOOS=darwin GOARCH=amd64 go build -i -o hello hello.go
# Windows
GOOS=windows GOARCH=amd64 go build -i -o hello hello.go
- 在Windows下编译Mac和Windows 64位可执行程序:
# Darwin (Mac OS)
SET GOOS=darwin
SET GOARCH=amd64
go build -i -o hello hello.go
# Liunx
SET GOOS=linux
SET GOARCH=amd64
go build -i -o hello hello.go
- 编译完成了,接下来可以将可执行程序放到目标平台上执行了,这里用Linux平台作为目标平台,编译前注意看下目标Linux平台时多少位的操作系统,编译成指定位的,少走一步坑。比如现在生成的可执行程序是hello。
将可执行程序hello和配置文件(如果有的话)放到目标平台的指定目录下。
修改可执行程序hello的权限,
chmod 755 hello
。最简单的执行方式
./hello
,但是这样的问题是如果我们ctrl+c
退出了进程,这个进程也就死掉了,所以我们需要让进程一直在后台执行,使用nohup ./hello &
,关于nohup指令回头再总结,最简单的方式实现了进程在后台执行。这里还有两个小坑,一个是hello进程起不来,端口被其他进程占用了,比如8899端口,
lsof -i:8899
查看端口占用情况,进一步通过netstat -nap | grep 占用端口PID
查看进行情况。进程起来后,客户端访问不了,日志也没有反应,比较大的可能是防火墙的问题,
iptables -L -n
看下开放的端口情况,没开端口开一下。这里只是最简单的部署到Linux上,更多的部署到Google App Engine、阿里云、腾讯云、Docker都有各自的部署方式,先不展开了。
相关文章
- 硅谷互联网公司的开发流程
开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro
- RESTful-表述性状态转移风格
REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表->就是产品资源 最重要的是如何表示一个资源 地址即
- 稳定性思考
产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能
- Supervisor守护队列发邮件
安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et
- 安装libsodium,让服务器支持chacha20等加密方式
用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod
随机推荐
- 硅谷互联网公司的开发流程
开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro
- RESTful-表述性状态转移风格
REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表->就是产品资源 最重要的是如何表示一个资源 地址即
- 稳定性思考
产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能
- Supervisor守护队列发邮件
安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et
- 安装libsodium,让服务器支持chacha20等加密方式
用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod