![白帽子安全开发实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/529/37323529/b_37323529.jpg)
1.4 开发环境配置
本书中大部分的项目是用Go语言开发的,个别项目(如邮箱安全网关)是用OpenResty框架和Lua语言开发的,所以在正式开发前,先来介绍一下Go语言与Lua语言开发环境的配置。
1.4.1 Go语言开发环境的配置
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/24_01.jpg?sign=1739373031-HjNoubA8QOOZvZLiN8Uts3i4HHZFd697-0-db4678df800b349dc10280e79fc3a71d)
在官方网站下载对应的Go语言的安装版本进行安装,安装完毕后再设置GOPATH环境变量。Go语言安装程序的下载页面,如图1-2所示。
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/24_02.jpg?sign=1739373031-Ym1EumiOHBghJmD5JfGyVph6rnkxvWWO-0-c613ba5c15ea74b336c77a8f16d51b99)
●图1-2 Go语言下载页面
Windows与macOS都提供了图形界面的安装方式,图形界面的安装过程这里不多做介绍。下面以Linux 64位操作系统为例,介绍如何以命令行的方式安装Go语言的开发环境。
下载最新的二进制版本的安装包,然后解压到/usr/local/目录下,命令如下:
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/24_03.jpg?sign=1739373031-UKgjKQt3BInpQdB52g7eVX5Dk0GiCmZG-0-ee7c180ebea2be8f2c3328fb0b838ed5)
在/etc/profile的末尾加入设置GOPATH环境变量的命令,如下所示:
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/25_01.jpg?sign=1739373031-0W57S6niC0wfn0w5Qfsk5qQALjtJX9sv-0-bf06279e1b69b6a1d4b058f6cec01025)
退出shell后再新建一个shell,输入go命令,如果有回显就说明安装成功了。Go语言支持的命令参数如图1-3所示。
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/25_02.jpg?sign=1739373031-siyBtDNs0rVrVZM0tSC5WQmQRZpb7vgH-0-cc7a6dfb657e34fbdae94aaa448ad821)
●图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所示。
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/26_01.jpg?sign=1739373031-AzRlAX3hIVsAguQg71bCeg1fRVEME311-0-79669ab30b72d8ad3e1f33daa754698e)
●图1-4 Goland插件
2.VS Code
VS Code是微软基于Electron和Web技术构建的一款功能非常强大的开源编辑器,下载地址为https://github.com/Microsoft/vscode。
下载完成后,在扩展中安装Go语言插件,之后任意打开一个Go语言文件,会提示下载所有的支持插件,如图1-5所示。
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/26_02.jpg?sign=1739373031-bBKtl3A0WBH6GylejRuIQUpsxF8wq34f-0-25fc61e3b44a492e0d59e32eb29e57a1)
●图1-5 VS Code自动提示安装Go语言开发插件
单击Install All按钮,就会自动安装所有所需的插件,安装完成后会显示All tools successfully installed,如图1-6所示。
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/27_01.jpg?sign=1739373031-VUQltw6Twp0GN3jl66encwCWlyBXhKbW-0-67a3dad251bb0e4367e3e7bc488048bf)
●图1-6 安装好的Go语言开发插件
3.Sublime Text 3
Sublime Text 3开发Go语言需要安装GoSublime与GoCode插件,安装方法如下。
为Sublime Text 3安装Package Control,安装方法为在Sublime Text 3中按〈Ctrl`〉组合键打开命令行,然后输入以下Python语句:
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/27_02.jpg?sign=1739373031-zfn2auDz0cD6fccrrJ0SAmZGCJoP59yG-0-59ede38c88efb8877a8cae9adc541313)
安装完成后重启Sublime Text 3,打开Package Control,如图1-7所示。
然后在Package Control中选择Install Package,如图1-8所示。
之后会显示出插件安装界面,如图1-9所示。
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/28_01.jpg?sign=1739373031-5Y1LoBQyWF67apL6pvWsilXUYBxR7hZh-0-8c8625f287ebea7fe2080885e6867b6a)
●图1-7 Sublime Text 3的Package Control
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/28_02.jpg?sign=1739373031-ieECTfYhfndZta9orYCBLOwOZXdIduCe-0-c05009ac3597a671c7d36fb5d5f9b176)
●图1-8 Install Package选项
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/28_03.jpg?sign=1739373031-QQT7JjzV563s7tOPDznk4B2ihxwTZU6c-0-26c279ceddced3e78fd61432dc96328a)
●图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所示。
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/29_01.jpg?sign=1739373031-uzd5iFJi5z1K0Iloql2Hgls5fGgzJ1K9-0-553da8ac91f3167e237d220c52a73db6)
●图1-10 GoSublime插件运行效果
1.4.3 OpenResty/Lua语言开发环境的配置
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/29_02.jpg?sign=1739373031-hNVrhlDOQX6p82y1lwy5U0orTTszQxea-0-80616add386ac3f5044ebb600ece8ac3)
要安装OpenResty/Lua的开发环境需要先安装OpenResty,以下为Ubuntu平台的安装命令:
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/30_01.jpg?sign=1739373031-NSUSNLlZNitP8zi8xySZO5N7XmO39bc3-0-62c0e48d16480ef10d1505272129d496)
安装完成后,在/etc/profile中加入OpenResty的环境变量,如下所示:
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/30_02.jpg?sign=1739373031-CWNKjvDjcusZUCuIyHDxFJcc2fepYE2M-0-f390022c2c75e032e88ce9c9e0175296)
接下来需要修改Nginx的配置,指定Lua脚本的位置及要加载的Lua脚本,nginx.conf的配置如下所示:
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/30_03.jpg?sign=1739373031-IK5Yx9IPf8ep55opJcbKSeis2k1DrQLl-0-2df2e630439671ba35a0a325e9a3b2ff)
Lua开发工具可以选择IDEA+EmmyLua,也可以使用VS Code+EmmyLua插件的组合。如图1-11所示为VS Code+EmmyLua代码自动补全的截图。
![](https://epubservercos.yuewen.com/BCD655/19773741601353506/epubprivate/OEBPS/Images/30_04.jpg?sign=1739373031-ToVHEARPOHxg9IKTrFiRhdfqStCByPlX-0-c90034500718bd4551b1134b5ba49b32)
●图1-11 VS Code+EmmyLua代码自补全