1.4 开发环境配置
本书中大部分的项目是用Go语言开发的,个别项目(如邮箱安全网关)是用OpenResty框架和Lua语言开发的,所以在正式开发前,先来介绍一下Go语言与Lua语言开发环境的配置。
1.4.1 Go语言开发环境的配置

在官方网站下载对应的Go语言的安装版本进行安装,安装完毕后再设置GOPATH环境变量。Go语言安装程序的下载页面,如图1-2所示。

●图1-2 Go语言下载页面
Windows与macOS都提供了图形界面的安装方式,图形界面的安装过程这里不多做介绍。下面以Linux 64位操作系统为例,介绍如何以命令行的方式安装Go语言的开发环境。
下载最新的二进制版本的安装包,然后解压到/usr/local/目录下,命令如下:

在/etc/profile的末尾加入设置GOPATH环境变量的命令,如下所示:

退出shell后再新建一个shell,输入go命令,如果有回显就说明安装成功了。Go语言支持的命令参数如图1-3所示。

●图1-3 Go语言命令参数
1.4.2 Go语言的开发工具
Go语言环境安装完成后就可以进行开发了,一个好用的集成开发环境(Integrated Development Environment,IDE)可以达到事半功倍的效果,Go语言常用的开发工具有GoLand、VS Code、Sublime Text 3、Atom和Vim等。
常用的为GoLand、VS Code与Sublime Text 3。接下来分别介绍这3种开发工具的安装与配置方法。
1.GoLand
GoLand是JetBrains公司推出的商业版的Go语言集成开发环境,是IDEA Go插件的强化版。
GoLand是基于IntelliJ平台开发的,支持JetBrains的插件体系。笔者推荐安装的插件为IdeaVim与Rainbow Brackets,这两个插件的作用分别是让GoLand支持Vim指法与嵌套的括号以彩虹色的形式显示,如图1-4所示。

●图1-4 Goland插件
2.VS Code
VS Code是微软基于Electron和Web技术构建的一款功能非常强大的开源编辑器,下载地址为https://github.com/Microsoft/vscode。
下载完成后,在扩展中安装Go语言插件,之后任意打开一个Go语言文件,会提示下载所有的支持插件,如图1-5所示。

●图1-5 VS Code自动提示安装Go语言开发插件
单击Install All按钮,就会自动安装所有所需的插件,安装完成后会显示All tools successfully installed,如图1-6所示。

●图1-6 安装好的Go语言开发插件
3.Sublime Text 3
Sublime Text 3开发Go语言需要安装GoSublime与GoCode插件,安装方法如下。
为Sublime Text 3安装Package Control,安装方法为在Sublime Text 3中按〈Ctrl`〉组合键打开命令行,然后输入以下Python语句:

安装完成后重启Sublime Text 3,打开Package Control,如图1-7所示。
然后在Package Control中选择Install Package,如图1-8所示。
之后会显示出插件安装界面,如图1-9所示。

●图1-7 Sublime Text 3的Package Control

●图1-8 Install Package选项

●图1-9 插件安装界面
然后在图1-9的框中输入GoSublime,就开始安装GoSublime插件了,按同样的方法再安装SideBarEnhancements和Go Build。
接下来通过go get-u github.com/nsf/gocode命令安装GoCode。最后用Sublime Text 3打开一个Go文件,测试是否有代码自动化补全提示,如果有,说明安装成功了。
在Sublime Text 3中调用GoSublime插件可以直接运行Go代码,如图1-10所示。

●图1-10 GoSublime插件运行效果
1.4.3 OpenResty/Lua语言开发环境的配置

要安装OpenResty/Lua的开发环境需要先安装OpenResty,以下为Ubuntu平台的安装命令:

安装完成后,在/etc/profile中加入OpenResty的环境变量,如下所示:

接下来需要修改Nginx的配置,指定Lua脚本的位置及要加载的Lua脚本,nginx.conf的配置如下所示:

Lua开发工具可以选择IDEA+EmmyLua,也可以使用VS Code+EmmyLua插件的组合。如图1-11所示为VS Code+EmmyLua代码自动补全的截图。

●图1-11 VS Code+EmmyLua代码自补全