用Vagrant構建統一的golang開發環境
開發環境是我們日常工作的一個環境,不論你現在的公司是否會強制你使用統一的開發環境,對於希望通過閱讀本書,跟著本書一起寫專案的同學來說,我希望大家有統一的環境,這不僅有利於程式碼的一致性,同時也是為了減少大家在開發中遇到很多不必要的問題。為了能夠保證我們接下來的開發環境保持一致性,我們這一章介紹一個能夠在所有系統都保持一致性開發環境的工具Vagrant,通過該工具使得我們保持一致的Go環境、專案目錄等。這一章第一小節介紹Vagrant的一些基礎知識、第二小節介紹如何安裝Vagrant以及如何配置,接著第三小節介紹如何使用Vagrant,對Vagrant的常用命令進行詳細的介紹,第四小節基於Vagrant的環境進行Go環境的安裝,最後會根據這些介紹提出一些練習供大家深入的理解。
- [Vagrant介紹]
- [Vagrant安裝配置]
- [Vagrant使用入門]
- [Go環境安裝配置]
- [總結]
- [每章一練]
1. Vagrant的介紹
虛擬開發環境
平常我們經常會遇到這樣的問題:在開發機上面開發完畢程式,放到正式環境之後會出現各種奇怪的問題:描述符少了、nginx配置不正確、MySQL編碼不對、php缺少模組、glibc版本太低等。
所以我們就需要虛擬開發環境,我們虛擬和正式環境一樣的虛擬開發環境,而隨著個人開發機硬體的升級,我們可以很容易的在本機跑虛擬機器,例如VMware、VirtualBox等。因此使用虛擬化開發環境,在本機可以執行自己喜歡的OS(Windows、Ubuntu、Mac等),開發的程式執行在虛擬機器中,這樣遷移到生產環境可以避免環境不一致導致的莫名錯誤。
虛擬開發環境特別適合團隊中開發環境、測試環境、正式環境不同的場合,這樣就可以使得整個團隊保持一致的環境,我寫這一章的初衷就是為了讓大家和我的開發環境保持一致,讓讀者和我們整個大團隊保持一致的開發環境。
Vagrant
Vagrant就是為了方便的實現虛擬化環境而設計的,使用Ruby開發,基於VirtualBox等虛擬機器管理軟體的介面,提供了一個可配置、輕量級的行動式虛擬開發環境。使用Vagrant可以很方便的就建立起來一個虛擬環境,而且可以模擬多臺虛擬機器,這樣我們平時還可以在開發機模擬分散式系統。
Vagrant還會建立一些共享資料夾,用來給你在主機和虛擬機器之間共享程式碼用。這樣就使得我們可以在主機上寫程式,然後在虛擬機器中執行。如此一來團隊之間就可以共享相同的開發環境,就不會再出現類似“只有你的環境才會出現的bug”這樣的事情。
團隊新員工加入,常常會遇到花一天甚至更多時間來從頭搭建完整的開發環境,而有了Vagrant,只需要直接將已經打包好的package(裡面包括開發工具,程式碼庫,配置好的伺服器等)拿過來就可以工作了,這對於提升工作效率非常有幫助。
Vagrant不僅可以用來作為個人的虛擬開發環境工具,而且特別適合團隊使用,它使得我們虛擬化環境變得如此的簡單,只要一個簡單的命令就可以開啟虛擬之路。
2. Vgrant安裝配置
實際上Vagrant只是一個讓你可以方便設定你想要的虛擬機器的行動式工具,它底層支援VirtualBox、VMware甚至AWS作為虛擬機器系統,本書中我們將使用VirtualBox來進行說明,所以第一步需要先安裝Vagrant和VirtualBox。
VirtualBox安裝
VirtualBox是Oracle開源的虛擬化系統,它支援多個平臺,所以你可以到官方網站:https://www.virtualbox.org/wiki/Downloads/ 下載適合你平臺的VirtualBox最新版本並安裝,它的安裝過程都很傻瓜化,一步一步執行就可以完成安裝了。
Vagrant安裝
最新版本的Vagrant已經無法通過gem
命令來安裝,因為依賴庫太多了,所以目前無法使用gem
來安裝,目前網路上面很多教程還是類似這樣的命令,那些都是錯誤的。目前唯一安裝的辦法就是到官方網站下載打包好的安裝包:http://www.vagrantup.com/downloads.html 他的安裝過程和VirtualBox的安裝一樣都是傻瓜化安裝,一步一步執行就可以完成安裝。
要想檢測安裝是否成功,可以開啟終端命令列工具,輸入vagrant
,看看程式是不是已經可以執行了。如果不行,請檢查一下$PATH裡面是否包含vagrant
所在的路徑。
Vagrant配置
當我們安裝好VirtualBox和Vagrant後,我們要開始考慮在VM上使用什麼作業系統了,一個打包好的作業系統在Vagrant中稱為Box,即Box是一個打包好的作業系統環境,目前網路上什麼都有,所以你不用自己去製作作業系統或者製作Box:vagrantbox.es上面有大家熟知的大多數作業系統,你只需要下載就可以了,下載主要是為了安裝的時候快速,當然Vagrant也支援線上安裝。
建立開發環境目錄
我的開發機是Mac,所以我建立了如下的開發環境目錄,讀者可以根據自己的系統不同建立一個目錄就可以:
/Users/michael/vagrant
下載BOX
前面講了box是一個作業系統環境,實際上它是一個zip包,包含了Vagrant的配置資訊和VirtualBox的虛擬機器映象檔案.我們這一次的實戰使用官方提供了一個box:Ubuntu lucid 64 http://files.vagrantup.com/lucid64.box
當然你也可以選一個自己團隊在用的系統,例如CentOS、Debian等,我們可以通過上面說的地址下載開源愛好者們製作好的box。當然你自己做一個也行,下一節我會講述如何自己製作包。
新增BOX
新增box的命令如下:
vagrant box add base 遠端的box地址或者本地的box檔名
vagrant box add
是新增box的命令
base
是box的名稱,可以是任意的字串,base
是預設名稱,主要用來標識一下你新增的box,後面的命令都是基於這個標識來操作的。
例子:
vagrant box add base http://files.vagrantup.com/lucid64.box
vagrant box add base https://dl.dropbox.com/u/7225008/Vagrant/CentOS-6.3-x86_64-minimal.box
vagrant box add base CentOS-6.3-x86_64-minimal.box
vagrant box add "CentOS 6.3 x86_64 minimal" CentOS-6.3-x86_64-minimal.box
我在開發機上面是這樣操作的,首先進入我們的開發環境目錄/Users/michael/vagrant
,執行如下的命令
vagrant box add base lucid64.box
安裝過程的資訊:
Downloading or copying the box...
Extracting box...te: 47.5M/s, Estimated time remaining: --:--:--)
Successfully added box 'base' with provider 'virtualbox'!
box中的映象檔案被放到了:/Users/michael/.vagrant.d/boxes/
,如果在window系統中應該是放到了:C:\Users\當前使用者名稱\.vagrant.d\boxes\
目錄下。
通過vagrant box add
這樣的方式安裝遠端的box,可能很慢,所以建議大家先下載box到本地再執行這樣的操作。
初始化
初始化的命令如下:
vagrant init
如果你新增的box名稱不是base,那麼需要在初始化的時候指定名稱,例如
vagrant init "CentOS 6.3 x86_64 minimal"
初始化過程的資訊:
A `Vagrantfile` has been placed in this directory.
You are now ready to `vagrant up` your first virtual environment!
Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
這樣就會在當前目錄生成一個 Vagrantfile
的檔案,裡面有很多配置資訊,後面我們會詳細講解每一項的含義,但是預設的配置就可以開箱即用。
啟動虛擬機器
啟動虛擬機器的命令如下:
vagrant up
啟動過程的資訊:
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'base'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Mounting shared folders...
[default] -- /vagrant
連線到虛擬機器
上面已經啟動了虛擬機器,之後我們就可以通過ssh來連線到虛擬機器了。比如在我的開發機中可以像這樣來連線:
vagrant ssh
連線到虛擬機器後的資訊如下:
Linux lucid64 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS
Welcome to the Ubuntu Server!
* Documentation: http://www.ubuntu.com/server/doc
New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.
Welcome to your Vagrant-built virtual machine.
Last login: Fri Sep 14 07:31:39 2012 from 10.0.2.2
這樣我們就可以像連線到一臺伺服器一樣進行操作了。
window機器不支援這樣的命令,必須使用第三方客戶端來進行連線,例如putty、Xshell4等.
putty為例:
主機地址: 127.0.0.1
埠: 2222
使用者名稱: vagrant
密碼: vagrant
系統資訊
進入系統之後我們可以看一下系統的基礎資訊:
vagrant@lucid64:/vagrant$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/lucid64-root
78G 945M 73G 2% /
none 179M 176K 179M 1% /dev
none 184M 0 184M 0% /dev/shm
none 184M 64K 184M 1% /var/run
none 184M 0 184M 0% /var/lock
none 184M 0 184M 0% /lib/init/rw
none 78G 945M 73G 2% /var/lib/ureadahead/debugfs
/dev/sda1 228M 17M 199M 8% /boot
/vagrant 298G 76G 222G 26% /vagrant
/vagrant
這個目錄是自動對映的,被對映到/Users/michael/vagrant
,這樣就方便我們以後在開發機中進行開發,在虛擬機器中進行執行效果測試了。
VAGRANTFILE配置檔案詳解
在我們的開發目錄下有一個檔案Vagrantfile
,裡面包含有大量的配置資訊,主要包括三個方面的配置,虛擬機器的配置、SSH配置、Vagrant的一些基礎配置。Vagrant是使用Ruby開發的,所以它的配置語法也是Ruby的,但是我們沒有學過Ruby的人還是可以跟著它的註釋知道怎麼配置一些基本項的配置。
box設定
config.vm.box = "base"
上面這配置展示了Vagrant要去啟用那個box作為系統,也就是上面我們輸入
vagrant init Box名稱
時所指定的box,如果沒有輸入box名稱的話,那麼預設就是base
,VirtualBox提供了VBoxManage這個命令列工具,可以讓我們設定VM,用modifyvm
這個命令讓我們可以設定VM的名稱和記憶體大小等等,這裡說的名稱指的是在VirtualBox中顯示的名稱,我們也可以在Vagrantfile中進行設定,在Vagrantfile中加入如下這行就可以設定了:config.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--name", "michael", "--memory", "512"] end
這行設定的意思是呼叫VBoxManage的
modifyvm
的命令,設定VM的名稱為michael
,記憶體為512MB。你可以類似的通過定製其它VM屬性來定製你自己的VM。網路設定
Vagrant有兩種方式來進行網路連線,一種是host-only(主機模式),意思是主機和虛擬機器之間的網路互訪,而不是虛擬機器訪問internet的技術,也就是隻有你一個人自High,其他人訪問不到你的虛擬機器。另一種是Bridge(橋接模式),該模式下的VM就像是區域網中的一臺獨立的主機,也就是說需要VM到你的路由器要IP,這樣的話區域網裡面其他機器就可以訪問它了,一般我們設定虛擬機器都是自high為主,所以我們的設定一般如下:
config.vm.network :private_network, ip: "11.11.11.11"
這裡我們虛擬機器設定為hostonly,並且指定了一個IP,IP的話建議最好不要用
192.168..
這個網段,因為很有可能和你區域網裡面的其它機器IP衝突,所以最好使用類似11.11..
這樣的IP地址。hostname設定
hostname
的設定非常簡單,Vagrantfile中加入下面這行就可以了:config.vm.hostname = "go-app"
設定
hostname
非常重要,因為當我們有很多臺虛擬伺服器的時候,都是依靠hostname
來做識別的,例如Puppet或是Chef,都是通過hostname
來做識別的,既然設定那麼簡單,所以我們就別偷懶,設定一個。同步目錄
我們上面介紹過
/vagrant
目錄預設就是當前的開發目錄,這是在虛擬機器開啟的時候預設掛載同步的。我們還可以通過配置來設定額外的同步目錄:config.vm.synced_folder "/Users/michael/data", "/vagrant_data"
上面這個設定,第一個引數是主機的目錄,第二個引數是虛擬機器掛載的目錄
埠轉發
config.vm.network :forwarded_port, guest: 80, host: 8080
上面這句配置可厲害了,這一行的意思是把對host機器上8080埠的訪問請求forward到虛擬機器的80埠的服務上,例如你在你的虛擬機器上使用nginx跑了一個Go應用,那麼你在host機器上的瀏覽器中開啟
http://localhost:8080
時,Vagrant就會把這個請求轉發到VM裡面跑在80埠的nginx服務上,因此我們可以通過這個設定來幫助我們去設定host和VM之間,或是VM和VM之間的資訊互動。
3. Vgrant使用入門
前面我們已經學會了如何安裝並配置Vagrant,而且也已經按照預設的方式開啟了,那麼這一小節就給大家介紹一下Vagrant的高階應用。
Vagrant常用命令
前面講了Vagrant的幾個命令:
vagrant box add
新增box的操作vagrant init
初始化box的操作vagrant up
啟動虛擬機器的操作vagrant ssh
登入擬機的操作
Vagrant還包括如下一些操作:
vagrant box list
顯示當前已經新增的box列表
$ vagrant box list base (virtualbox)
vagrant box remove
刪除相應的box
$ vagrant box remove base virtualbox Removing box 'base' with provider 'virtualbox'...
vagrant destroy
停止當前正在執行的虛擬機器並銷燬所有建立的資源
$ vagrant destroy Are you sure you want to destroy the 'default' VM? [y/N] y [default] Destroying VM and associated drives...
vagrant halt
關機
$ vagrant halt [default] Attempting graceful shutdown of VM...
vagrant package
打包命令,可以把當前的執行的虛擬機器環境進行打包
$ vagrant package [default] Attempting graceful shutdown of VM... [default] Clearing any previously set forwarded ports... [default] Creating temporary directory for export... [default] Exporting VM... [default] Compressing package to: /Users/michael/vagrant/package.box
vagrant plugin
用於安裝解除安裝外掛
vagrant provision
通常情況下Box只做最基本的設定,而不是設定好所有的環境,因此Vagrant通常使用Chef或者Puppet來做進一步的環境搭建。那麼Chef或者Puppet稱為provisioning,而該命令就是指定開啟相應的provisioning。按照Vagrant作者的說法,所謂的provisioning就是"The problem of installing software on a booted system"的意思。除了Chef和Puppet這些主流的配置管理工具之外,我們還可以使用Shell來編寫安裝指令碼。
例如:
vagrant provision --provision-with chef
vagrant reload
重新啟動虛擬機器,主要用於重新載入配置檔案
$ vagrant reload [default] Attempting graceful shutdown of VM... [default] Setting the name of the VM... [default] Clearing any previously set forwarded ports... [default] Creating shared folders metadata... [default] Clearing any previously set network interfaces... [default] Preparing network interfaces based on configuration... [default] Forwarding ports... [default] -- 22 => 2222 (adapter 1) [default] Booting VM... [default] Waiting for VM to boot. This can take a few minutes. [default] VM booted and ready for use! [default] Setting hostname... [default] Mounting shared folders... [default] -- /vagrant
vagrant resume
恢復前面被掛起的狀態
$vagrant resume [default] Resuming suspended VM... [default] Booting VM... [default] Waiting for VM to boot. This can take a few minutes. [default] VM booted and ready for use!
vagrant ssh-config
輸出用於ssh連線的一些資訊
$vagrant ssh-config Host default HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile "/Users/michael/.vagrant.d/insecure_private_key" IdentitiesOnly yes LogLevel FATAL
vagrant status
獲取當前虛擬機器的狀態
$vagrant status Current machine states: default running (virtualbox) The VM is running. To stop this VM, you can run `vagrant halt` to shut it down forcefully, or you can run `vagrant suspend` to simply suspend the virtual machine. In either case, to restart it again, simply run `vagrant up`.
vagrant suspend
掛起當前的虛擬機器
$ vagrant suspend [default] Saving VM state and suspending execution...
模擬打造多機器的分散式系統
前面這些單主機單虛擬機器主要是用來自己做開發機,從這部分開始的內容主要將向大家介紹如何在單機上通過虛擬機器來打造分散式造叢集系統。這種多機器模式特別適合以下幾種人:
- 快速建立產品網路的多機器環境,例如web伺服器、db伺服器
- 建立一個分散式系統,學習他們是如何互動的
- 測試API和其他元件的通訊
- 容災模擬,網路斷網、機器當機、連線超時等情況
Vagrant支援單機模擬多臺機器,而且支援一個配置檔案Vagrntfile就可以跑分散式系統。
現在我們來建立多臺VM跑起來,並且讓他們之間能夠相通訊,假設一臺是應用伺服器、一臺是DB伺服器,那麼這個結構在Vagrant中非常簡單,其實和單臺的配置差不多,你只需要通過config.vm.define
來定義不同的角色就可以了,現在我們開啟配置檔案進行如下設定:
Vagrant.configure("2") do |config|
config.vm.define :web do |web|
web.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "web", "--memory", "512"]
end
web.vm.box = "base"
web.vm.hostname = "web"
web.vm.network :private_network, ip: "11.11.1.1"
end
config.vm.define :db do |db|
db.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "db", "--memory", "512"]
end
db.vm.box = "base"
db.vm.hostname = "db"
db.vm.network :private_network, ip: "11.11.1.2"
end
end
這裡的設定和前面我們單機設定配置類似,只是我們使用了:web
以及:db
分別做了兩個VM的設定,並且給每個VM設定了不同的hostname
和IP,設定好之後再使用vagrant up
將虛擬機器跑起來:
$ vagrant up
Bringing machine 'web' up with 'virtualbox' provider...
Bringing machine 'db' up with 'virtualbox' provider...
[web] Setting the name of the VM...
[web] Clearing any previously set forwarded ports...
[web] Creating shared folders metadata...
[web] Clearing any previously set network interfaces...
[web] Preparing network interfaces based on configuration...
[web] Forwarding ports...
[web] -- 22 => 2222 (adapter 1)
[web] Running any VM customizations...
[web] Booting VM...
[web] Waiting for VM to boot. This can take a few minutes.
[web] VM booted and ready for use!
[web] Setting hostname...
[web] Configuring and enabling network interfaces...
[web] Mounting shared folders...
[web] -- /vagrant
[db] Setting the name of the VM...
[db] Clearing any previously set forwarded ports...
[db] Fixed port collision for 22 => 2222. Now on port 2200.
[db] Creating shared folders metadata...
[db] Clearing any previously set network interfaces...
[db] Preparing network interfaces based on configuration...
[db] Forwarding ports...
[db] -- 22 => 2200 (adapter 1)
[db] Running any VM customizations...
[db] Booting VM...
[db] Waiting for VM to boot. This can take a few minutes.
[db] VM booted and ready for use!
[db] Setting hostname...
[db] Configuring and enabling network interfaces...
[db] Mounting shared folders...
[db] -- /vagrant
看到上面的資訊輸出後,我們就可以通過vagrant ssh
登入虛擬機器了,但是這次和上次使用的不一樣了,這次我們需要指定相應的角色,用來告訴ssh你期望連線的是哪一臺:
$ vagrant ssh web
vagrant@web:~$
$ vagrant ssh db
vagrant@db:~$
是不是很酷!現在接下來我們再來驗證一下虛擬機器之間的通訊,讓我們先使用ssh登入web虛擬機器,然後在web虛擬機器上使用ssh登入db虛擬機器(預設密碼是vagrant
):
$ vagrant ssh web
Linux web 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS
Welcome to the Ubuntu Server!
* Documentation: http://www.ubuntu.com/server/doc
New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.
Welcome to your Vagrant-built virtual machine.
Last login: Thu Aug 8 18:55:44 2013 from 10.0.2.2
vagrant@web:~$ ssh 11.11.1.2
The authenticity of host '11.11.1.2 (11.11.1.2)' can't be established.
RSA key fingerprint is e7:8f:07:57:69:08:6e:fa:82:bc:1c:f6:53:3f:12:9e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '11.11.1.2' (RSA) to the list of known hosts.
vagrant@11.11.1.2's password:
Linux db 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS
Welcome to the Ubuntu Server!
* Documentation: http://www.ubuntu.com/server/doc
New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.
Welcome to your Vagrant-built virtual machine.
Last login: Thu Aug 8 18:58:50 2013 from 10.0.2.2
vagrant@db:~$
通過上面的資訊我們可以看到虛擬機器之間通訊是暢通的,所以現在開始你偉大的架構設計吧,你想設計怎麼樣的架構都可以,唯一限制你的就是你主機的硬體配置了。
4. Go環境安裝配置
前面我們已經安裝好了虛擬環境,那麼接下來就需要在虛擬環境中安裝Go環境了,因此你首先要執行vagrant up
把虛擬機器開起來,然後通過vagrant ssh
登入到系統中。
Ubuntu環境設定
我們需要修改配置檔案/etc/default/locale
設定為:
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
如果我們通過vagrant ssh
登入終端,按tab鍵出現bash: warning: setlocale: LC_CTYPE: cannot change locale (zh_CN.UTF-8)
的警告錯誤,解決方法如下:
編輯 /etc/profile,
sudo vi /etc/profile
在檔案尾部新增一句:
export LC_ALL=C
通過上面的修改之後,退出系統,然後需要通過vagrant reload
重啟虛擬機器.
安裝
在Linux下安裝Go很簡單,只需要兩個步驟:下載、解壓。
首先下載Go的Linux編譯好的包:
wget https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz
然後解壓就可以了:
sudo tar -C /usr/local -xzf go1.6.linux-amd64.tar.gz
我們現在就可以測試:
/usr/local/go/bin/go
如果出現如下的介面,那麼說明已經安裝成功了。
環境變數設定
上面我們已經成功安裝了Go,那麼接下來我們配置一些Go開發需要的資訊:GOPATH
的設定。
上面我們已經知道Vagrant啟動之後,會預設把Vagrant這個目錄掛載到系統的/vagrant
目錄,因此我們設定GOPATH
到該目錄:
$ cd
$ mkdir /home/vagrant/gopath/
$ vim .bashrc
切換到使用者目錄,開啟bashrc進行設定,在最末尾增加如下兩行:
export GOPATH=/home/vagrant/gopath
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
設定完畢之後,執行source
命令使其生效:
$ source .bashrc
這個時候GOPATH
設定成功,同時Go命令都已經加入了PATH
,你在命令列下面執行如下:
$ go env
就會成功顯示如下資訊:
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/vagrant/gopath/"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CGO_ENABLED="1"
至此所有的Go環境配置完成,你和你的小夥伴們一定被如此簡單的配置驚呆了吧。
相關文章
- 基於 Vagrant 構建 PHP 開發環境PHP開發環境
- Docker 構建統一的前端開發環境Docker前端開發環境
- vagrant構建centos虛擬環境CentOS
- 基於 Docker 構建統一的開發環境Docker開發環境
- 用 Vagrant 一鍵部署開發環境 kafka 叢集開發環境Kafka
- 用 Docker 構建 PHP 開發環境DockerPHP開發環境
- Vagrant:更好的個人開發環境開發環境
- 1.Vagrant搭建統一開發環境 常用命令開發環境
- Vagrant 搭建開發環境實踐開發環境
- 構建一個基於容器的開發環境開發環境
- vagrant + centos/7 搭建自己的本地開發環境CentOS開發環境
- 2018-07-12 折騰一個開發環境Vagrant開發環境
- 如何構建基於 docker 的開發環境Docker開發環境
- Vagrant homestead (laravel)開發環境搭建(填坑)Laravel開發環境
- 酷!一鍵構建我自己的PHP框架的開發環境PHP框架開發環境
- 基於 vagrant搭建移動端的開發環境開發環境
- 【進階系列】前端開發環境構建(一)CSS -- Sass前端開發環境CSS
- GOLang開發環境搭建(Windows)Golang開發環境Windows
- Vscode配置golang開發環境VSCodeGolang開發環境
- 徒手用 Docker 構建自己的 PHP 開發環境DockerPHP開發環境
- 構建你的Office 365開發環境 - IOS版開發環境iOS
- 構建你的Office 365開發環境 - 其他版本開發環境
- Vagrant 環境搭建
- 編譯環境 Golang開發環境 vscode+git編譯Golang開發環境VSCodeGit
- 利用 Docker 構建一個簡單的 java 開發編譯環境DockerJava編譯
- 基於GitLab CI搭建Golang自動構建環境GitlabGolang
- Vagrant 搭建 CentOS 環境CentOS
- 圍繞 transformers 構建現代 NLP 開發環境ORM開發環境
- 用 Docker 構建 MySQL 主從環境DockerMySql
- Golang(go語言)開發環境配置Golang開發環境
- Python開發篇——構建虛擬Python開發環境(Conda+Poetry)Python開發環境
- webpack4.0 入門篇 - 構建前端開發的基本環境Web前端
- 建立嵌入式軟體開發的自動構建環境
- 一、開發環境開發環境
- 搭建golang開發環境(1.14之後版本)Golang開發環境
- python flask構建小程式訂餐系統--centos下專案開發環境的搭建PythonFlaskCentOS開發環境
- dockerfile構建flask環境DockerFlask
- docker構建php環境DockerPHP