golang編譯程序在linux上的部署

本文主要介紹在window環(huán)境下,使用開發(fā)工具liteide對go程序進(jìn)行交叉編譯(在一個平臺上生成另一個平臺的可執(zhí)行程序),將生成的可執(zhí)行文件部署在Linux服務(wù)器上,使我們開發(fā)的程序能直接運行在linux上。

開發(fā)環(huán)境

開發(fā)環(huán)境為 :windows
開發(fā)IDE為:liteidex

操作步驟

1.交叉編譯
Windows 下編譯 Linux 64位可執(zhí)行程序,這里需要解釋一下

GOOS:目標(biāo)平臺的操作系統(tǒng)(darwin、freebsd、linux、windows)
GOARCH:目標(biāo)平臺的體系架構(gòu)(386、amd64、arm) 交叉編譯不支持 CGO 所以要禁用它

具體命令如下:

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go

首先進(jìn)入cmd命令行,cd到go環(huán)境的安裝目錄下的src目錄;然后依次執(zhí)行以下命令(執(zhí)行前先安裝tdm64-gcc-4.8.1-3):

set GOOS=linux
set GOARCH=386
set CGO_ENABLED=0
make.bat

如果要生成64位linux下的運行程序則依次輸入下列命令:

set GOOS=linux
set GOARCH=amd64
set CGO_ENABLED=0
make.bat

如果要生成arm6下的運行程序則依次輸入下列命令:

set GOOS=linux
set GOARCH=arm
set GOARM=6
set CGO_ENABLED=0
make.bat

例如:我將go環(huán)境安裝在D:\Go下,并且我要生成64位linux下的運行程序;則我需要在cmd命令行下輸入:

C:\Users\Administrator>d:
D:>cd d:/go/src
d:\Go\src> set GOOS=linux
d:\Go\src> set GOARCH=amd64
d:\Go\src> set CGO_ENABLED=0
d:\Go\src> make.bat

2.執(zhí)行完第一步后,就可以在IDE中對GO程序進(jìn)行交叉編譯了;在IDE中將編譯的環(huán)境變量設(shè)置為cross-linux64(根據(jù)需要選擇),然后點擊查看編輯環(huán)境變量,根據(jù)go的安裝配置好設(shè)置信息,保存!

3.進(jìn)入到程序的工作路徑(即main程序所在路徑),go build main.go則會在項目根目錄生成相應(yīng)的執(zhí)行文件,執(zhí)行文件名稱為根目錄的文件名。將生成的執(zhí)行文件和程序一些其他的文件(主要是一些和程序相關(guān)的配置文件等靜態(tài)文件)上傳到linux服務(wù)器,例如使用beego框架,除了上傳執(zhí)行文件外還需要將views,static,conf等3個文件夾上傳到服務(wù)器。

特別強調(diào)一下,每次重新部署服務(wù)時,一定要記得同步更新配置文件?。。?br> 4.進(jìn)入linux系統(tǒng)下剛剛上傳文件的目錄,使用權(quán)限命令

chmod 777 程序名稱

然后使用使程序在后臺運行的命令

nohup ./程序名 &

如果要關(guān)閉程序,可以使用命令”ps” 查看后臺程序的pid,然后使用“kill 程序pid”命令,關(guān)閉程序比如程序名為test,可以用如下命令查詢

ps aux|grep test

需要在前臺運行,直接

./程序名

前臺進(jìn)程的掛起:

ctrl+Z //進(jìn)程的終止

后臺進(jìn)程的終止:

方法一: 通過jobs命令查看job號(假設(shè)為num),然后執(zhí)行kill %num
方法二: 通過ps命令查看job的進(jìn)程號(PID,假設(shè)為pid),然后執(zhí)行kill pid

前臺進(jìn)程的終止:

ctrl+c

在Linux服務(wù)器上部署服務(wù)其他一些可能用到的命令有:

& 這個用在一個命令的最后,可以把這個命令放到后臺執(zhí)行 
ps 列出系統(tǒng)中正在運行的進(jìn)程
kill 發(fā)送信號給一個或多個進(jìn)程(經(jīng)常用來殺死一個進(jìn)程)
jobs 查看當(dāng)前有多少在后臺運行的命令
fg 將后臺中的命令調(diào)至前臺繼續(xù)運行
如果后臺中有多個命令,可以用 fg %jobnumber將選中的命令調(diào)出,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid)
bg 將一個在后臺暫停的命令,變成繼續(xù)執(zhí)行
如果后臺中有多個命令,可以用bg %jobnumber將選中的命令調(diào)出,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid)

如有不對歡迎指正,相互學(xué)習(xí),共同進(jìn)步。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容