一,原因:
专注于为中小企业提供网站设计制作、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业和田县免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
学习研究go-micro已经有两三天了,在这里做个总结,有2点原因,第1点方便以后如果有一段时间没有用过micro导致几乎都忘了,那么这篇文章方便自己在很短的时间内重朔对micro的知识体系,第2个原因也算给自己一个交代,比较花了时间去研究了。接下来会从go-micro库,和micro工具两方面。
二,go-micro
介绍:go-micro可以理解为一个可以很快创建微服务器的第三方库,从可提供功能上分一下几点:
1,可提供开发服务端:这个服务端只能通过其他微服务通过rpc方式调用。当你看到用protoc工具生成的.micro.go文件的时候你会发现,主要包含2部分,第1部分接口是给调用方提供的,定义了作为客户端如何调用服务端。第2部分接口是服务端接口。通过实现接口,就可以实现服务端功能。大体上做server的流程如下。
1.1创建一个service实例(相当与micro整体对外的接口)。Micro.NewService
1.2初始化service实例。Service.init()
1.3实践自己的Handler逻辑。
1.4将自己实现的Handler和service绑定注册。
1.5 service运行。 service.run.
2,可提供开发web服务端:用micro做web服务端的优势在于可以在这个web服务端内部实现client接口,进而通过rpc方式调用其他用micro搭建的微服务。大体上创建的流程如下。
2.1创建一个webservice实例(可设置静态文件路由).
2.2初始化service
2.3注册自己的handler函数。
2.4 service启动运行。
3,可提供开发网关api: 其实就是对后面多个服务端起到一个聚合的作用,因为micro工具中网关就是基于go-micro开发的,初步看了一下micro中网关的源码大体设计流程如下。
第二部分micro工具
1,做api使用:上面也有介绍这个api工具就是基于go-micro写的,启动需要注意两个比较主要的参数,--namespace、 --handler.一个是命名空间,一个是api,rpc,event中那种方式。
2,做cli控制台使用:这个比较常用,主要提供一下功能。
2.1代替另一个微服务中的client端,调用call方法测试自己微服务。
2.2检查自己的微服务状态,例如服务列表,服务是否保活。
2.3可以把指定的微服务注册/撤销到另一个服务发现中。
3,做web UI使用:我的理解就是一个web界面的控制台。
4,proxy代理使用:不同的局域网是不能访问的,即使是各种局域网中的电脑能够访问外网。因为中间有所谓的nat技术。感觉这个proxy就是nat穿透技术的一种。
Go语言自亮相以来并没有展示一个明确的方向,Google员工将Go语言称为一个“试验性语言”,称其试图融合Python等动态语言的开发速度和C或C++等编译语言的性能和安全。一位Go语言的支持者概括而言Go语言如下:简单、快速、安全、并发、快乐编程、开源;但Go语言缺乏方向以及其“集大成者”的尝试很容易会导致其学猫不成学狗也不成,沦为四不像。尽管如此,编者仍然觉得Go语言有相当大的潜力:很多开发者对它感兴趣——不仅它的最初设计者阵容强大,而且在参与修改源代码的人群中也不乏大牛级人物。这很有可能帮助Go语言找到适合自己的方向,开拓系统编程的新方向。
是支持静态ip上网的。
wan设置里面
可以直接选择静态ip
然后输入ip、掩码和网关即可。
具体步骤:
1、去官网下载go1.1.2的tarball,一般下载到tem目录
2、打开终端cd /usr/local, tar -zxvf go1.1.2.linux-386.tar.gz
将源码文件解压缩到/usr/local目录,如果解压到其他目录,需要自己设置GOROOT
3、安装gcc工具,因为golang有些功能是使用c写
sudo apt-get install bison gawk gcc libc6-dev make
4、$ cd go/src,$ ./all.bash
运行bash脚本,如果运行正常会获得你的操作系统和cpu信息,自动编译安装
5、将export PATH=$PATH:/usr/local/go/bin 写入$HOME/.profile
最后进行测试输入go version 会显示go1.1.2 linux/386
路由器的配置与调试
路由器在计算机网络中有着举足轻重的地位,是计算机网络的桥梁。通过它不仅可以连通不同的网络,还能选择数据传送的路径,并能阻隔非法的访问。
路由器的配置对初学者来说,并不是件十分容易的事。现将路由器的一般配置和简单调试介绍给大家,供朋友们在配置路由器时参考,本文以Cisco2501为例。
Cisco2501有一个以太网口(AUI)、一个Console口(RJ45)、一个AUX口(RJ45)和两个同步串口,支持DTE和DCE设备,支持 EIA/TIA-232、 EIA/TIA-449、 V.35 、X.25和EIA-530接口。
一.配置
1.配置以太网端口
# conf t(从终端配置路由器)
# int e0(指定E0口)
# ip addr ABCD XXXX(ABCD 为以太网地址,XXXX为子网掩码)
# ip addr ABCD XXXX secondary(E0口同时支持两个地址类型。如果第一个为 A类地址,则第二个为B或C类地址)
# no shutdown(激活E0口)
# exit
完成以上配置后,用ping命令检查E0口是否正常。如果不正常,一般是因为没有激活该端口,初学者往往容易忽视。用no shutdown命令激活E0口即可。
2.X.25的配置
# conf t
# int S0(指定S0口)
# ip addr ABCD XXXX(ABCD 为以太网S0 的IP地址,XXXX为子网掩码)
# encap X25-ABC(封装X.25协议。ABC指定X.25为DTE或DCE操作,缺省为DTE)
# x25 addr ABCD(ABCD为S0的X.25端口地址,由邮电局提供)
# x25 map ip ABCD XXXX br(映射的X.25地址。ABCD为对方路由器(如:S0)的IP 地址,XXXX为对方路由器(如:S0)的X.25端口地址)
# x25 htc X(配置最高双向通道数。X的取值范围1-4095,要根据 邮电局实际提供的数字配置)
# x25 nvc X(配置虚电路数,X不可超过邮电局实际提供的数否则将影响数据的正常传输)
# exit
S0端口配置完成后,用no shutdown命令激活E0口。如果ping S0端口正常,ping 映射的X.25 IP地址即对方路由器端口IP地址不通,则可能是以下几种情况引起的:1)本机X.25地址配置错误,重新与邮局核对(X.25地址长度为13位);2)本机映射IP地址或X.25地址配置错误,重新配置正确;3)对方IP地址或X.25地址配置错误;4)本机或对方路由配置错误。
能够与对方通讯,但有丢包现象。出现这种情况,一般有以下几种可能:1)线路情况不好,或网卡、RJ45插头接触不良;2)x25 htc最高双向通道数X的取值范围和x25nvc 虚电路数X超出邮电局实际提供的数字。最高双向通道数和虚电路数这两个值越大越好,但绝对不能超出邮电局实际提供的数字,否则就会出现丢包现象。
3.专线的配置
# conf t
# int S2(指定S2口)
# ip addr ABCD XXXX(ABCD 为S2 的IP地址,XXXX为子网掩码)
# exit
专线口配置完成后,用no shutdown命令激活S2口即可。
4.帧中继的配置
# conf t
# int s0
# ip addr ABCD XXXX (ABCD 为S0 的IP地址,XXXX为子网掩码)
# encap frame_relay (封装frame_relay 协议)
# no nrzi_encoding (NRZI=NO)
# frame_relay lmi_type q933a (LMI使用Q933A标准.LMI(Local management Interface) 有3种:ANSI:T1.617、CCITTY:Q933A和Cisco特有的标准)
# frame-relay intf-typ ABC(ABC为帧中继设备类型,它们分别是DTE设备、DCE交换机或NNI(网络接点接口)支持)
# frame_relay interface_dlci 110 br(配置DLCI(数据链路连接标识符))
# frame-relay map ip ABCD XXXX broadcast (建立帧中继映射。ABCD为对方IP地址,XXXX为本地DLCI号,broadcast允许广播向前转发或更新路由)
# no shutdown (激活本端口)
# exit
帧中继S0端口配置完成后,用ping命令检查S0口。如果不正常,通常是因为没有激活该端口,用no shutdown命令激活S0口即可。如果ping S0端口正常,ping 映射的IP地址不正常,则可能是帧中继交换机或对方配置错误,需要综合排查。
5.配置同步/异步口(适用于2522)
# conf t
# int s2
# ph asyn (配置S2为异步口)
# ph sync (配置S2为同步口)
6.动态路由的配置
# conf t
# router eigrp 20 (使用EIGRP路由协议。常用的路由协议有RIP、IGRP、IS-IS等)
# passive-interface serial0 (若S0与X.25相连,则输入本条指令)
# passive-interface serial1 (若S1与X.25相连,则输入本条指令)
# network ABCD (ABCD为本机的以太网地址)
# network XXXX (XXXX为S0的IP地址)
# no auto-summary
# exit
7.静态路由的配置
# ip router ABCD XXXX YYYY 90 (ABCD为对方路由器的以太网地址,XXXX 为子网掩码,YYYY为对方对应的广域网端口地址)
# dialer-list 1 protocol ip permit
二. 综合调试
当路由器全部配置完毕后,可进行一次综合调试。
1.首先将路由器的以太网口和所有要使用的串口都激活。方法是进入该口,执行no shutdown。
2.将和路由器相连的主机加上缺省路由(中心路由器的以太地址)。方法是在Unix系统的超级用户下执行:router add default XXXX 1(XXXX为路由器的E0口地址)。每台主机都要加缺省路由,否则,将不能正常通讯。
3.ping本机的路由器以太网口,若不通,可能以太网口没有激活或不在一个网段上。ping广域网口,若不通,则没有加缺省路由。ping对方广域网口,若不通,路由器配置错误。ping主机以太网口,若不通,对方主机没有加缺省路由。
4.在专线卡X.25主机上加网关(静态路由)。方法是在Unix系统的超级用户下执行:router add X.X.X.X Y.Y.Y.Y 1(X.X.X.X为对方以太网地址,Y.Y.Y.Y为对方广域网地址)。
5.使用Tracert对路由进行跟踪,以确定不通网段。
路由器的选购
选择路由器时应注意安全性、控制软件、网络扩展能力、网管系统、带电插拔能力等方面。
1.由于路由器是网络中比较关键的设备,针对网络存在的各种安全隐患,路由器必须具有如下的安全特性:
(1)可靠性与线路安全 可靠性要求是针对故障恢复和负载能力而提出来的。对于路由器来说,可靠性主要体现在接口故障和网络流量增大两种情况下,为此,备份是路由器不可或缺的手段之一。当主接口出现故障时,备份接口自动投入工作,保证网络的正常运行。当网络流量增大时,备份接口又可承当负载分担的任务。 (2)身份认证 路由器中的身份认证主要包括访问路由器时的身份认证、对端路由器的身份认证和路由信息的身份认证。
(3)访问控制 对于路由器的访问控制,需要进行口令的分级保护。有基于IP地址的访问控制和基于用户的访问控制。
(4)信息隐藏 与对端通信时,不一定需要用真实身份进行通信。通过地址转换,可以做到隐藏网内地址,只以公共地址的方式访问外部网络。除了由内部网络首先发起的连接,网外用户不能通过地址转换直接访问网内资源。
(5)数据加密
(6)攻击探测和防范
(7)安全管理
2.路由器的控制软件是路由器发挥功能的一个关键环节。从软件的安装、参数自动设置,到软件版本的升级都是必不可少的。软件安装、参数设置及调试越方便,用户使用就越容易掌握,就能更好地应用。
3.随着计算机网络应用的逐渐增加,现有的网络规模有可能不能满足实际需要,会产生扩大网络规模的要求,因此扩展能力是一个网络在设计和建设过程中必须要考虑的。扩展能力的大小主要看路由器支持的扩展槽数目或者扩展端口数目。
4.随着网络的建设,网络规模会越来越大,网络的维护和管理就越难进行,所以网络管理显得尤为重要。 5.在我们安装、调试、检修和维护或者扩展计算机网络的过程中,免不了要给网络中增减设备,也就是说可能会要插拔网络部件。那么路由器能否支持带电插拔,是路由器的一个重要的性能指标。
外型尺寸的选择
如果网络已完成楼宇级的综合布线,工程要求网络设备上机式集中管理,应选择19英寸宽的机架式路由器,如Cisco2509、华为2501(配置同Cisco2501)。如果没有上述需求,桌面型的路由器如Intel的8100和Cisco的1600系列,具有更高的性能价格比。
协议的选择
由于最初局域网并没先出标准后出产品,所以很多厂商如Apple和IBM都提出了自己的标准,产生了如AppleTalk和IBM协议,Novell公司的网络操作系统运行IPX/SPX协议,在连接这些异构网络时需要路由器对这些协议提供支持。Intel9100系列和9200系列的路由器可提供免费支持,3Com的系列路由产品也提供较广泛的协议支持。
路由器作为网络设备中的“黑匣子”,工作在后台。用户选择路由器时,多从技术角度来考虑,如可延展性、路由协议互操作性、广域数据服务支持、内部ATM支持、SAN集成能力等。另外,选择路由器还应遵循如下基本原则:即标准化原则、技术简单性原则、环境适应性原则、可管理性原则和容错冗余性原则。对于高端路由器,更多的还应该考虑是否和如何适应骨干网对网络高可靠性、接口高扩展性以及路由查找和数据转发的高性能要求。高可靠性、高扩展性和高性能的“三高”特性是高端路由器区别于中、低端路由器的关键所在。
CISCO路由器初始配置简介
很多初学路由器知识的网友对路由器的初始配置可能感到很陌生,本人在初学时也很困惑,因为一下出来很多提问不知如何是好,下面将最近刚调试的一台CISCO3640的初始配置整理出来与各位网友交流,如有疏漏之处,还请大家指正。
1.用CISCO随机带CONSOLE线,一端连在CISCO路由器的CONSOLE口,一端连在计算机的COM口。
2.打开电脑,启动超级终端.为您的连接取个名字,比如CISCO_SETUP,下一步选定连接时用COM1,下一步选定第秒位数9600,数据位8,奇偶校验无,停止位1,数据流控制无.最后选确定。
3.打开路由器电源,这时超级终端将出现以下画面:
System Bootstrap, Version 11.1(20)AA2, EARLY DEPLOYMENT RELEASE SOFTWARE (fc1)
Copyright (c) 1999 by cisco Systems, Inc.C3600 processor with 32768 Kbytes of main memory Main memory is configured to 64 bit mode with parity disabled
program load complete, entry point: 0x80008000, size: 0x4ed478 Self decompressing the image :
###################################################################
###################################################################
###################################################################
###################################################################
###################################################################
###################################################################
###################################################################
[OK]
Restricted Rights Legend
Use, duplication, or disclosure by the Government is
subject to restrictions as set forth in subparagraph
(c) of the Commercial Computer Software - Restricted
Rights clause at FAR sec. 52.227-19 and subparagraph
(c) (1) (ii) of the Rights in Technical Data and Computer
Software clause at DFARS sec. 252.227-7013.
cisco Systems, Inc.
170 West Tasman Drive
San Jose, California 95134-1706
Cisco Internetwork Operating System Software
IOS (tm) 3600 Software (C3640-I-M), Version 12.1(2)T, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2000 by cisco Systems, Inc.
Compiled Tue 16-May-00 12:26 by ccai
Image text-base: 0x600088F0, data-base: 0x60924000
cisco 3640 (R4700) processor (revision 0x00) with 24576K/8192K bytes of memory.
Processor board ID 25125768
R4700 CPU at 100Mhz, Implementation 33, Rev 1.0
Bridging software.
X.25 software, Version 3.0.0.
2 FastEthernet/IEEE 802.3 interface(s)
1 Serial network interface(s)
DRAM configuration is 64 bits wide with parity disabled.
125K bytes of non-volatile configuration memory.
8192K bytes of processor board System flash (Read/Write)
--- System Configuration Dialog ---
Would you like to enter the initial configuration dialog? [yes/no]: y
您是否进入初始化配置对话,选Y
At any point you may enter a question mark '?' for help.
Use ctrl-c to abort configuration dialog at any prompt.
Default settings are in square brackets '[]'.Basic management setup configures only enough connectivity
for management of the system, extended setup will ask you
to configure each interface on the system
Would you like to enter basic management setup? [yes/no]: n
您是否进入基本配置安装,选N
First, would you like to see the current interface summary? [yes]: y
首先,您是否看一下当前端口状态
Any interface listed with OK? value "NO" does not have a valid configuration
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0unassigned NO unset up down
Serial0/0 unassigned NO unset down down
FastEthernet0/1unassigned NO unset up down
Configuring global parameters:
Enter host name [Router]:RouterA
输入路由器的名字
The enable secret is a password used to protect access to
privileged EXEC and configuration modes. This password, after
entered, becomes encrypted in the configuration.
Enter enable secret: aaa
输入密文
The enable password is used when you do not specify an
enable secret password, with some older software versions, and
some boot images.
Enter enable password: bbb
输入密码(不能和密文相同)
The virtual terminal password is used to protect
access to the router over a network interface.
Enter virtual terminal password: ccc
输入虚拟终端的密码(以备远程登录)
Configure SNMP Network Management? [yes]: n
配置简单网管吗?选N
Configure IP? [yes]: y
配置IP吗?选Y
Configure IGRP routing? [yes]: n
配置IGRP路由选择协议吗?选N
Configure RIP routing? [no]:
配置IGRP路由选择协议吗?选N
Configure bridging? [no]:
配置桥接吗?选N
Async lines accept incoming modems calls. If you will have
users dialing in via modems, configure these lines.
Configure Async lines? [yes]: n
配置异步线路吗?选N
Configuring interface parameters:
Do you want to configure FastEthernet0/0 interface? [yes]: y
您是否想配置fastethernet0/0接口?选Y
Use the 100 Base-TX (RJ-45) connector? [yes]: y
用RJ45的连接器吗?选Y
Operate in full-duplex mode? [no]: y
选用全双工模式?选Y
Configure IP on this interface? [yes]: y
在这个接口上配置IP吗?选Y
IP address for this interface: 192.168.0.1
配置该接口的IP地址(在此地址为192.168.0.1
Subnet mask for this interface [255.255.255.0] :
配置该接口的子网掩码.(默认的是255.255.255.0,可以手工输入修改)
Class C network is 192.168.0.0, 24 subnet bits; mask is /24
Do you want to configure Serial0/0 interface? [yes]: y
您想配置serial0/0接口吗?选Y
Some supported encapsulations are
ppp/hdlc/frame-relay/lapb/x25/atm-dxi/smds
Choose encapsulation type [hdlc]:
选择封装方式(默认的封装方式是HDLC,您可根据与您的路由器相连选用的封装类型来决定用什么样的封装类型
No serial cable seen.
Choose mode from (dce/dte) [dte]:
(因为没有连串口线所以会让您选择设备类型)
Configure IP on this interface? [yes]: y
(在接口上配置IP)
Configure IP unnumbered on this interface? [no]:
IP address for this interface: 172.16.0.5
配置该接口的IP地址(在此地址为172.16.0.5)
Subnet mask for this interface [255.255.0.0] : 255.255.255.252
配置该接口的子网掩码.(默认的是255.255.0.0,可以手工输入修改为255.255.255.252)
Class B network is 172.16.0.0, 30 subnet bits; mask is /30
(以下配置同上)
Do you want to configure FastEthernet0/1 interface? [yes]:
Use the 100 Base-TX (RJ-45) connector? [yes]:
Operate in full-duplex mode? [no]: y
Configure IP on this interface? [yes]: y
IP address for this interface: 172.16.0.9
Subnet mask for this interface [255.255.0.0] : 255.255.255.252 Class B network is 172.16.0.0, 30 subnet bits; mask is /30
The following configuration command script was created:
(把您的配置显示出来)
hostname aaa
enable secret 5 $ul/V$ezbZFgvzGHD.YPSieC0Ew/
enable password RouterA
line vty 0 4
password ccc
no snmp-server
!
ip routing
no bridge 1
!
interface FastEthernet0/0
media-type 100BaseX
full-duplex
ip address 192.168.0.1 255.255.255.0
!
interface Serial0/0
encapsulation hdlc
ip address 172.16.0.5 255.255.255.252
!
interface FastEthernet0/1
media-type 100BaseX
full-duplex
ip address 172.16.0.9 255.255.255.252
dialer-list 1 protocol ip permit
dialer-list 1 protocol ipx permit
!
end
以下提示您是否保存这次设置
[0] Go to the IOS command prompt without saving this config.
[1] Return back to the setup without saving this config.
[2] Save this configuration to nvram and exit.
Enter your selection [2]: 2
选择2保存设置并存入NVRAM中
Building configuration...
[OK] Use the enabled mode 'configure' command to modify this configuration.
Press RETURN to get started!
路由器重新启动
00:00:08: %LINK-3-UPDOWN: Interface Serial0/0, changed state to down
00:00:08: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
00:00:08: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to up
00:00:09: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to down
00:00:09: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to down
00:00:09: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down
00:03:18: %IP-5-WEBINST_KILL: Terminating DNS process
00:03:24: %SYS-5-RESTART: System restarted --
Cisco Internetwork Operating System Software
IOS (tm) 3600 Software (C3640-I-M), Version 12.1(2)T, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2000 by cisco Systems, Inc.
Compiled Tue 16-May-00 12:26 by ccai
RouterA
进入用户模式
RouterAen
Password:
RouterA#
进入全局模式
RouterA#sh run
查看现在运行的配置
Building configuration...
Current configuration:
!
version 12.1
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname RouterA
!
enable secret 5 $ul/V$ezbZFgvzGHD.YPSieC0Ew/
enable password bbb
!
memory-size iomem 25
ip subnet-zero
!
interface FastEthernet0/0
ip address 192.168.0.1 255.255.255.0
speed auto
full-duplex
!
interface Serial0/0
ip address 172.16.0.5 255.255.255.252
clockrate 2000000
!
interface FastEthernet0/1
ip address 172.16.0.9 255.255.255.252
speed auto
full-duplex
!
ip classless
no ip http server
!
dialer-list 1 protocol ip permit
dialer-list 1 protocol ipx permit
!
line con 0
transport input none
line aux 0
line vty 0 4
password ccc
login
!
end
现在您就完成了了一个新路由器的基本配置,接下来就可以进行进一步的详细配置了
1.1 Go 安装
Go的三种安装方式
Go有多种安装方式,你可以选择自己喜欢的。这里我们介绍三种最常见的安装方式:
Go源码安装:这是一种标准的软件安装方式。对于经常使用Unix类系统的用户,尤其对于开发者来说,从源码安装可以自己定制。
Go标准包安装:Go提供了方便的安装包,支持Windows、Linux、Mac等系统。这种方式适合快速安装,可根据自己的系统位数下载好相应的安装包,一路next就可以轻松安装了。**推荐这种方式**
第三方工具安装:目前有很多方便的第三方软件包工具,例如Ubuntu的apt-get、Mac的homebrew等。这种安装方式适合那些熟悉相应系统的用户。
最后,如果你想在同一个系统中安装多个版本的Go,你可以参考第三方工具GVM,这是目前在这方面做得最好的工具,除非你知道怎么处理。
Go源码安装
在Go的源代码中,有些部分是用Plan 9 C和ATT汇编写的,因此假如你要想从源码安装,就必须安装C的编译工具。
在Mac系统中,只要你安装了Xcode,就已经包含了相应的编译工具。
在类Unix系统中,需要安装gcc等工具。例如Ubuntu系统可通过在终端中执行sudo apt-get install gcc
libc6-dev来安装编译工具。
在Windows系统中,你需要安装MinGW,然后通过MinGW安装gcc,并设置相应的环境变量。
你可以直接去官网下载源码,找相应的goVERSION.src.tar.gz的文件下载,下载之后解压缩到$HOME目录,执行如下代码:
cd go/src
./all.bash
运行all.bash后出现"ALL TESTS PASSED"字样时才算安装成功。
上面是Unix风格的命令,Windows下的安装方式类似,只不过是运行all.bat,调用的编译器是MinGW的gcc。
如果是Mac或者Unix用户需要设置几个环境变量,如果想重启之后也能生效的话把下面的命令写到.bashrc或者.zshrc里面,
export GOPATH=$HOME/gopath
export PATH=$PATH:$HOME/go/bin:$GOPATH/bin
如果你是写入文件的,记得执行bash .bashrc或者bash
.zshrc使得设置立马生效。
如果是window系统,就需要设置环境变量,在path里面增加相应的go所在的目录,设置gopath变量。
当你设置完毕之后在命令行里面输入go,看到如下图片即说明你已经安装成功
图1.1 源码安装之后执行Go命令的图
如果出现Go的Usage信息,那么说明Go已经安装成功了;如果出现该命令不存在,那么可以检查一下自己的PATH环境变中是否包含了Go的安装目录。
关于上面的GOPATH将在下面小节详细讲解
Go标准包安装
Go提供了每个平台打好包的一键安装,这些包默认会安装到如下目录:/usr/local/go
(Windows系统:c:\Go),当然你可以改变他们的安装位置,但是改变之后你必须在你的环境变量中设置如下信息:
export GOROOT=$HOME/go
export GOPATH=$HOME/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
上面这些命令对于Mac和Unix用户来说最好是写入.bashrc或者.zshrc文件,对于windows用户来说当然是写入环境变量。
如何判断自己的操作系统是32位还是64位?
我们接下来的Go安装需要判断操作系统的位数,所以这小节我们先确定自己的系统类型。
Windows系统用户请按Win+R运行cmd,输入systeminfo后回车,稍等片刻,会出现一些系统信息。在“系统类型”一行中,若显示“x64-based
PC”,即为64位系统;若显示“X86-based PC”,则为32位系统。
Mac系统用户建议直接使用64位的,因为Go所支持的Mac OS X版本已经不支持纯32位处理器了。
Linux系统用户可通过在Terminal中执行命令arch(即uname
-m)来查看系统信息:
64位系统显示
x86_64
32位系统显示
i386
Mac 安装
访问下载地址,32位系统下载go1.4.2.darwin-386-osx10.8.pkg,64位系统下载go1.4.2.darwin-amd64-osx10.8.pkg,双击下载文件,一路默认安装点击下一步,这个时候go已经安装到你的系统中,默认已经在PATH中增加了相应的~/go/bin,这个时候打开终端,输入go
看到类似上面源码安装成功的图片说明已经安装成功
如果出现go的Usage信息,那么说明go已经安装成功了;如果出现该命令不存在,那么可以检查一下自己的PATH环境变中是否包含了go的安装目录。
Linux 安装
访问下载地址,32位系统下载go1.4.2.linux-386.tar.gz,64位系统下载go1.4.2.linux-amd64.tar.gz,
假定你想要安装Go的目录为 $GO_INSTALL_DIR,后面替换为相应的目录路径。
解压缩tar.gz包到安装目录下:tar zxvf go1.4.2.linux-amd64.tar.gz -C
$GO_INSTALL_DIR。
设置PATH,export PATH=$PATH:$GO_INSTALL_DIR/go/bin
然后执行go
图1.2 Linux系统下安装成功之后执行go显示的信息
如果出现go的Usage信息,那么说明go已经安装成功了;如果出现该命令不存在,那么可以检查一下自己的PATH环境变中是否包含了go的安装目录。
Windows 安装
访问Google Code 下载页,32
位请选择名称中包含 windows-386 的 msi 安装包,64 位请选择名称中包含 windows-amd64 的。下载好后运行,不要修改默认安装目录
C:\Go\,若安装到其他位置会导致不能执行自己所编写的 Go 代码。安装完成后默认会在环境变量 Path 后添加 Go 安装目录下的 bin 目录
C:\Go\bin\,并添加环境变量 GOROOT,值为 Go 安装根目录 C:\Go\ 。
验证是否安装成功
在运行中输入 cmd 打开命令行工具,在提示符下输入 go,检查是否能看到 Usage 信息。输入
cd %GOROOT%,看是否能进入 Go 安装目录。若都成功,说明安装成功。
不能的话请检查上述环境变量 Path 和 GOROOT 的值。若不存在请卸载后重新安装,存在请重启计算机后重试以上步骤。
第三方工具安装
GVM
gvm是第三方开发的Go多版本管理工具,类似ruby里面的rvm工具。使用起来相当的方便,安装gvm使用如下命令:
bash (curl -s -S -L )
安装完成后我们就可以安装go了:
gvm install go1.4.2
gvm use go1.4.2
也可以使用下面的命令,省去每次调用gvm use的麻烦: gvm use go1.4.2 --default
执行完上面的命令之后GOPATH、GOROOT等环境变量会自动设置好,这样就可以直接使用了。
apt-get
Ubuntu是目前使用最多的Linux桌面系统,使用apt-get命令来管理软件包,我们可以通过下面的命令来安装Go,为了以后方便,应该把
git mercurial 也安装上:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:gophers/go
sudo apt-get update
sudo apt-get install golang-stable git-core mercurial
homebrew
homebrew是Mac系统下面目前使用最多的管理软件的工具,目前已支持Go,可以通过命令直接安装Go,为了以后方便,应该把
git mercurial 也安装上:
brew update brew upgrade
brew install go
brew install git
brew install mercurial