本文主要介紹在window環(huán)境下,使用開發(fā)工具liteide對go程序進行交叉編譯(在一個平臺上生成另一個平臺的可執(zhí)行程序),將生成的可執(zhí)行文件部署在Linux服務器上糊治,使我們開發(fā)的程序能直接運行在linux上醋旦。
開發(fā)環(huán)境
開發(fā)環(huán)境為 :windows
開發(fā)IDE為:liteidex
操作步驟
1.交叉編譯
Windows 下編譯 Linux 64位可執(zhí)行程序,這里需要解釋一下
GOOS:目標平臺的操作系統(tǒng)(darwin倔幼、freebsd、linux字支、windows)
GOARCH:目標平臺的體系架構(386凤藏、amd64、arm) 交叉編譯不支持 CGO 所以要禁用它
具體命令如下:
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go
首先進入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程序進行交叉編譯了;在IDE中將編譯的環(huán)境變量設置為cross-linux64(根據(jù)需要選擇),然后點擊查看編輯環(huán)境變量禁炒,根據(jù)go的安裝配置好設置信息而咆,保存!
3.進入到程序的工作路徑(即main程序所在路徑)幕袱,go build main.go則會在項目根目錄生成相應的執(zhí)行文件暴备,執(zhí)行文件名稱為根目錄的文件名。將生成的執(zhí)行文件和程序一些其他的文件(主要是一些和程序相關的配置文件等靜態(tài)文件)上傳到linux服務器们豌,例如使用beego框架涯捻,除了上傳執(zhí)行文件外還需要將views,static望迎,conf等3個文件夾上傳到服務器障癌。
特別強調(diào)一下,每次重新部署服務時辩尊,一定要記得同步更新配置文件L握恪!摄欲!
4.進入linux系統(tǒng)下剛剛上傳文件的目錄轿亮,使用權限命令
chmod 777 程序名稱
然后使用使程序在后臺運行的命令
nohup ./程序名 &
如果要關閉程序,可以使用命令”ps” 查看后臺程序的pid蒿涎,然后使用“kill 程序pid”命令哀托,關閉程序比如程序名為test,可以用如下命令查詢
ps aux|grep test
也可以通過top -u username查看當前用戶下所有進程劳秋,找到test的pid然后使用“kill 程序pid”命令仓手,關閉程序比如程序名為test
需要在前臺運行,直接
./程序名
前臺進程的掛起:
ctrl+Z? ? //進程的終止
后臺進程的終止:
方法一: 通過jobs命令查看job號(假設為num)玻淑,然后執(zhí)行kill %num
方法二: 通過ps命令查看job的進程號(PID嗽冒,假設為pid),然后執(zhí)行kill pid
前臺進程的終止:
ctrl+c
在Linux服務器上部署服務其他一些可能用到的命令有:
& 這個用在一個命令的最后补履,可以把這個命令放到后臺執(zhí)行
ps 列出系統(tǒng)中正在運行的進程
kill 發(fā)送信號給一個或多個進程(經(jīng)常用來殺死一個進程)
jobs? ? 查看當前有多少在后臺運行的命令
fg? ? 將后臺中的命令調(diào)至前臺繼續(xù)運行
如果后臺中有多個命令添坊,可以用 fg %jobnumber將選中的命令調(diào)出,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid)
bg? ? ? 將一個在后臺暫停的命令箫锤,變成繼續(xù)執(zhí)行
如果后臺中有多個命令贬蛙,可以用bg %jobnumber將選中的命令調(diào)出,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid)
如有不對歡迎指正谚攒,相互學習阳准,共同進步。
————————————————
版權聲明:本文為CSDN博主「wade3015」的原創(chuàng)文章馏臭,遵循 CC 4.0 BY-SA 版權協(xié)議野蝇,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wade3015/article/details/83387212