这几天不忙就看了下go,然后用beego写了个demo
我是在mac上开发的,尝试部署在Linux和Windows上,我发现只需要直接build为对应平台的版本就行了,在对应的机器上不需要安装go运行环境吗?
像Node.js或者Python甚至.NET,在部署在都得在需要部署的机器上提前安装好环境,go不需要,直接build然后把build出来的文件丢到服务器上就行了?这么方便的吗?
另外还有几个问题请教一下大佬:
1.go最后打包出来的可执行文件永远只有一个吗?有没有可能根据我的业务逻辑分别打包成几大块(例如:main、lib1、lib2),虽然好像这样意义也不大?
2.写代码前需要设置GOPATH。假如我有多个项目的话GOPATH是不是也得设置多个?那GOBIN好像只能设置一个啊。
对于多个项目你们是怎么弄的?还是GOPATH只有一个,在src下建不同的文件夹来区分项目吗,最后通过go build指定路径来打包吗?
3.假如我现在打包出来一个文件为main,在Linux执行它的方式为./main(是这样的吧)
4.go有没有类似Node.js下的pm2这种守护进程管理工具? 你们在服务器上怎么部署的go?总不可能是nohup吧
最后:刚接触,可能有些地方问的不对的还请各位大佬见谅!
更多评论
1. 开发分模块和编译成一个没有因果关系的。真要从服务层面划分如soa架构或者微服务,那么就是多个可执行文件,依靠的是通信来联系</br>
2. go1.11后,推荐尝试module, 这样项目就不用和GOPATH绑定了。 GOPATH设置一个即可,项目编译也可以写make等指定编译输出的目录。</br>
3. 对的,可执行文件的执行方式都一样</br>
4.守护进程: os.StartProcess或 syscall.RawSyscall(syscall.SYS_FORK, 0, 0, 0)</br>
但是不太常用,不知道你所需的场景。</br>
5.最简单就是可执行文件+配置文件+加执行脚本, 如果需要再加创建systemd的脚本。 如果是docker的话,另说
#3