1. Golang項目部署3,容器部署
容器部署即使用 docker 化部署 golang 應用程序,這是在雲服務時代最流行的部署方式,也是最推薦的部署方式。
跨平台交叉編譯是 golang 的特點之一,可以非常方便地編譯出我們需要的目標伺服器平台的版本,而且是靜態編譯,非常容易地解決了運行依賴問題。
使用以下指令可以靜態編譯 linux 平台 amd64 架構的可執行文件:
生成的 main 便是我們靜態編譯的,可部署於 Linux amd64 上的可執行文件。
我們需要將該可執行文件 main 編譯生成 docker 鏡像,以便於分發及部署。 Golang 的運行環境推薦使用 alpine 基礎系統鏡像,編譯出的容器鏡像約為 20MB 左右。
一個參考的 Dockerfile 文件如下:
其中,我們的基礎鏡像使用了 loads/alpine:3.8 ,中國國內的用戶推薦使用該基礎鏡像,基礎鏡像的 Dockerfile 地址: https://github.com/johngcn/dockerfiles ,倉庫地址: https://hub.docker.com/u/loads
隨後使用 " docker build -t main . " 指令編譯生成名為 main 的 docker 鏡像。
需要注意的是,在某些項目的架構設計中, 靜態文件 和 配置文件 可能不會隨著鏡像進行編譯發布,而是分開進行管理和發布。
例如,使用 MVVM 模式的項目中(例如使用 vue 框架),往往是前後端非常獨立的,因此在鏡像中往往並不會包含 public 目錄。而使用了 配置管理中心 (例如使用 consul / etcd / zookeeper )的項目中,也往往並不需要 config 目錄。
因此對於以上示例的 Dockerfile 的使用,僅作參考,根據實際情況請進行必要的調整。
使用以下指令可直接運行剛才編譯成的鏡像:
容器的分發可以使用 docker 官方的平台: https://hub.docker.com/ ,國內也可以考慮使用阿里雲: https://www.aliyun.com/proct/acr 。
在企業級生產環境中, docker 容器往往需要結合 kubernetes 或者 docker swarm 容器編排工具一起使用。
容器編排涉及到的內容比較多,感興趣的同學可以參考以下資料:
2. linux amd64中的amd是什麼意思 啊
amd是AMD公司的意思。而AMD64,又稱「x86-64」或「x64」,是一種64位元的電腦處理器架構。
AMD64是建基於現有32位元的x86架構,由AMD公司所開發,應用AMD64指令集的自家產品有Athlon64、Athlon64 FX、Athlon64X2、Turion 64、Opteron及最新的Sempron處理器。
linuxAMD64也就是64位的linux系統,並不是指AMD的cpu專用的,只要是支持64位的cpu都可以裝
(2)amd編譯linux擴展閱讀:
AMD試圖使用自家的AMD64指令集來清理Intel的x86-32獨占產品,並將x86更新到近似領先的RISC環境。 參與DEC Alpha 64位處理器設計的Dirk Meyer也參與了AMD64規范的開發,並且AMD的許多員工都是前Alpha處理器數衫凳工程師,因此為AMD64做出了很大貢獻。
AMD64表明AMD放棄了慣用的遵循英特爾標準的風格,並選擇將x86架構擴展為64位版本,例如將16位Intel 8086擴展為32位80386,並且與原始版本兼容。塌歲
AMD64體系結薯旅構在IA-32上添加了64位寄存器,並且與早期的16位和32位軟體兼容,這可以使現有的基於x86的編譯器輕松轉換為AMD64版本。
3. 如何編譯Linux內核
一、編譯環境
ubuntu 5.10,要編譯的內核源碼版本2.6.12 二、下載並解壓源代碼 首先從linux內核的官網www.kernel.org把源代碼下載下來。為了和後面實驗要求符合,我們要下載使用O(1)調度器的源碼。因此這里下載了2.6.12版本源碼。下載 下linux-2.6.12.tar.bz2,將下載源碼放入/usr/src/目錄下。如下圖所示: 解壓該源碼: 三、構建編譯環境 現在我們得到的只是源代碼,只是許許多多的文本文件,要想使這些文件成為可以運行的程序,需要使用編譯器進行編譯以及鏈接。編譯器有很多,但在里linux下一般都使用gnu的開源編譯器套件,這里包括gcc等,現在我們安裝基本的編譯器套件,如圖所示: 四、安裝ncurses庫 這里使用Ubuntu系統,因為系統自帶的ncurses庫在支持make menuconfig的時候會出錯,所以,依然要安裝ncurses庫,這里我們從源碼安裝。首先去ncurses官網http://ftp.gnu.org/pub/gnu/ncurses/ 上下載源碼。這里我們下載5.9版本,並通過簡單的安裝方式.configure 和make、make install方式安裝。如下圖所示: 五、配置內核 一切准備工作做完,現在我們就可以配置內核了,這里我們使用make menuconfig方式。如下圖: 在使用make menuconfig這個命令後,會出現如下的字元界面,我們就可以在這個界面上對內核進行配置。但是如果這不是你第一次配置這個內核,那麼請先運行:make mrproper來清除以前的配置,回到默認配置,然後再運行:make menuconfig.
在這里,我們以對cpu支持的配置為例,其餘的選項就不一一詳述,首先查看本機的cpu類型,如下圖:
在這里我們可以看到,我的電腦的cpu是AMD Athlon的,因此我們在cpu選項裡面選用AMD,如下圖所示:
在這里需要注意的是:
A、 cpu的設置在linux內核編譯過程中,不是必需的,即使保持默認的386選項(我們剛才把它改成了AMD),內核也能正常運行,只不過運行慢一些而已。
B、 一般容易出問題的地方在於Device Driver的設置。我在一開始就遇到了在內核編譯完,通過grub引導系統過程中報 「ALERT! /dev/sda1 does not exist . Dropping to a shell!」的錯誤。這是因為硬碟驅動沒有配置好而造成的。運行lspci命令,查看到下面這行:
由此確定,需要配置SCSI、PCI-X、Fusion-MPT驅動,需要在響應的驅動選項里將[M]設置為[*],因為硬碟驅動是在系統開機的時候載入,所以不能以模塊形式載入。
把這幾個驅動內部的選項全部改為[*]:
六、編譯內核
對內核的配置完成之後,現在就可以開始編譯內核了,只需要一個簡單的make命令即可,之後我們就只能慢慢等,直到編譯完成,在我的電腦上,大概用了25分鍾。下圖是運行make後的部分輸出。
七、安裝內核
編譯完成之後,我們需要安裝內核,主要分為如下幾步:
1)、安裝模塊
安裝模塊,對於內核來說,每一個內核版本有自己的模塊目錄,默認在/lib/moles/內核版本號這個目錄下,make moles_install會創建對應的目錄,並把對應的模塊文件拷貝過去。注意,這一步必須要在編譯過內核再做。
2)、拷貝bzImage文件
bzImage文件是內核映像文件,是啟動內核所必需的,我們應當把它拷貝到/boot目錄下。在這里,我為自己新建了一個目錄,我們把它拷貝過去,並且按照一般內核映像文件的命名方式為它改名為vmlinuz-2.6.12。
3)、製作initrd文件
initrd文件命名為initrd.img-2.6.12
4)、修改grub啟動項
要能引導起我們的新系統,需要更改grub配置,增加啟動選項。ubuntu 5.10的grub版本比較低,配置文件為/boot/grub/menu.lst,高版本的grub可能在/boot/grub/grub.cfg里。在原有啟動項基礎上,添加我們自己的啟動項,並把它設為默認啟動項,配置如下:
5)重啟
不出意外的話,我們的內核已經正常載入了,運行uname -a,會發現,內核版本已經是2.6.12了。