最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

GO項(xiàng)目部署Linux服務(wù)器的實(shí)現(xiàn)示例

 更新時(shí)間:2024年06月19日 09:27:50   作者:拔劍縱狂歌  
本文主要介紹了GO項(xiàng)目部署Linux服務(wù)器的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

最近在學(xué)習(xí)golang,和前端小伙伴一起寫了個(gè)H5小游戲,游戲數(shù)據(jù)采用websocket進(jìn)行通信。由于是第一次部署go語言項(xiàng)目,在部署過程中遇到很多問題,寫下這篇文章進(jìn)行總結(jié),希望可以幫助到部署遇到問題的朋友。

Golang項(xiàng)目和Java項(xiàng)目部署的不同

Golang項(xiàng)目相比于Java項(xiàng)目部署流程更加的簡單,不需要在服務(wù)器上下載語言環(huán)境,我們可以直接在服務(wù)器上運(yùn)行編譯好的二進(jìn)制文件

go語言能夠做到這一點(diǎn)的原因如下:

  • 靜態(tài)鏈接:Go 語言的編譯器會將程序的所有依賴包括在最終的可執(zhí)行文件中,這種方式稱為靜態(tài)鏈接。因此,生成的可執(zhí)行文件不需要依賴外部的動態(tài)鏈接庫或其他運(yùn)行時(shí)環(huán)境,可以在沒有 Go 語言環(huán)境的服務(wù)器上直接運(yùn)行。

  • 跨平臺支持:Go 語言的編譯器可以生成不同操作系統(tǒng)和架構(gòu)的可執(zhí)行文件,比如 Windows、Linux 和 macOS 等。這意味著你可以在開發(fā)機(jī)器上編譯生成 Linux 下運(yùn)行的可執(zhí)行文件,然后將其拷貝到 Linux 服務(wù)器上直接運(yùn)行,而無需關(guān)心服務(wù)器上是否安裝了 Go 語言環(huán)境。

  • 內(nèi)置運(yùn)行時(shí)環(huán)境:Go 語言的可執(zhí)行文件中內(nèi)置了運(yùn)行時(shí)環(huán)境,包括垃圾回收、調(diào)度器等,因此它們可以獨(dú)立運(yùn)行,不需要額外的運(yùn)行時(shí)支持。

對于Java來說,Java 語言在編譯時(shí)生成的是字節(jié)碼文件(以 .class 格式存儲),而不是直接生成可執(zhí)行的二進(jìn)制文件。這些字節(jié)碼文件需要在 Java 虛擬機(jī)(JVM)上執(zhí)行,因此在服務(wù)器上運(yùn)行 Java 程序仍然需要安裝 Java 運(yùn)行時(shí)環(huán)境(JRE)或者 Java 開發(fā)工具包(JDK)。

 部署流程

1.確保自己的項(xiàng)目在本地可以正常運(yùn)行和訪問;

2.查看自己的項(xiàng)目監(jiān)聽的端口號,本項(xiàng)目監(jiān)聽的是服務(wù)器私網(wǎng)IP的8090端口

 3.之后開始我們的編譯,設(shè)置編譯時(shí)候的環(huán)境變量,依次執(zhí)行下面命令

D:\SoftwareDevelop\GoFamily\GoWorks\klotski>set CGO_ENABLED=0
D:\SoftwareDevelop\GoFamily\GoWorks\klotski>set GOOS=linux
D:\SoftwareDevelop\GoFamily\GoWorks\klotski>set GOARCH=amd64
D:\SoftwareDevelop\GoFamily\GoWorks\klotski>go build

set CGO_ENABLED=0

  • 這個(gè)命令是在 Windows 系統(tǒng)下設(shè)置一個(gè)環(huán)境變量 CGO_ENABLED 的值為 0CGO_ENABLED 是 Go 語言中用來控制是否啟用 C 語言的交互能力的環(huán)境變量,0 表示禁用了 CGO(Cgo 是一個(gè) Go 包,用于調(diào)用 C 代碼)。

set GOOS=linux

  • 這個(gè)命令是設(shè)置一個(gè)環(huán)境變量 GOOS 的值為 linux。GOOS 是 Go 語言中用來指定目標(biāo)操作系統(tǒng)的環(huán)境變量,這里將目標(biāo)操作系統(tǒng)設(shè)置為 Linux。

set GOARCH=amd64

  • 這個(gè)命令是設(shè)置一個(gè)環(huán)境變量 GOARCH 的值為 amd64。GOARCH 是 Go 語言中用來指定目標(biāo)體系結(jié)構(gòu)的環(huán)境變量,這里將目標(biāo)體系結(jié)構(gòu)設(shè)置為 AMD64 架構(gòu)。

go build

  • 這個(gè)命令是使用 Go 工具編譯當(dāng)前目錄下的 Go 源代碼文件,生成一個(gè)可執(zhí)行文件。根據(jù)前面設(shè)置的環(huán)境變量,編譯時(shí)會將目標(biāo)操作系統(tǒng)和體系結(jié)構(gòu)設(shè)置為 Linux 和 AMD64。

編譯完成之后我們得到一個(gè)文件名為項(xiàng)目名無文件后綴的文件,我們將這一個(gè)文件傳輸?shù)絃inux系統(tǒng)上,在Linux中,我們找到上傳的文件目錄。

4.通過ls命令查看文件權(quán)限是否可執(zhí)行,如果文件為綠色,代碼可直接執(zhí)行。

如果不可執(zhí)行,使用chmod 755 ./klotski 更新文件權(quán)限

5.通過./文件名或者nohup命令執(zhí)行文件

#在當(dāng)前路徑下執(zhí)行文件
./klotski
#通過絕對路徑執(zhí)行文件,只要能夠找到文件就可以
/opt/klotski/klotski

#通過上述方式雖然可以執(zhí)行文件,并且通過公網(wǎng)訪問項(xiàng)目,但是我們一旦關(guān)閉了當(dāng)前連接,程序就會終止。通過讓當(dāng)前程序在后臺運(yùn)行的方式,可以解決這一問題
nohup ./klotski

程序運(yùn)行成功會使服務(wù)器界面處于任務(wù)的狀態(tài),顯示訪問程序時(shí)的輸出,如果不是此狀態(tài),說明程序運(yùn)行失敗,請檢查自己的程序和更改監(jiān)聽的端口IP

6.查詢程序運(yùn)行時(shí)占用的端口

# 查詢我們的go語言二進(jìn)制文件是否被執(zhí)行
# 注意我們程序運(yùn)行的線程是隨機(jī)分配的,并不是8090端口,我們的程序僅僅建成8090端口的訪問情況
[root@wuqiong klotski]# ps aux | grep klotski 
root     29218  1.4  0.1 1230132 2512 ?        Sl   19:39   0:50 ./klotski
root     32492  0.0  0.0 112812   976 pts/0    S+   20:35   0:00 grep --color=auto klotski

# 關(guān)閉運(yùn)行程序 后面的參數(shù)跟PID
kill 29218 

 7.別忘記放開服務(wù)器的安全組,開放我們程序監(jiān)聽的端口

到此這篇關(guān)于GO項(xiàng)目部署Linux服務(wù)器的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)GO部署Linux內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Golang如何優(yōu)雅的終止一個(gè)服務(wù)

    詳解Golang如何優(yōu)雅的終止一個(gè)服務(wù)

    后端服務(wù)通常會需要創(chuàng)建子協(xié)程來進(jìn)行相應(yīng)的作業(yè),但進(jìn)程接受到終止信號或正常結(jié)束時(shí),并沒有判斷或等待子協(xié)程執(zhí)行結(jié)束,下面這篇文章主要給大家介紹了關(guān)于Golang如何優(yōu)雅的終止一個(gè)服務(wù)的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Go語言擴(kuò)展原語之Semaphore的用法詳解

    Go語言擴(kuò)展原語之Semaphore的用法詳解

    Go語言的擴(kuò)展包中提供了帶權(quán)重的信號量?semaphore.Weighted,讓我們可以按照不同的權(quán)重管理資源的訪問,下面小編就來和大家聊聊它們的具體用法吧
    2023-07-07
  • Go集成swagger實(shí)現(xiàn)在線接口文檔的教程指南

    Go集成swagger實(shí)現(xiàn)在線接口文檔的教程指南

    wagger是一個(gè)用于設(shè)計(jì),構(gòu)建和文檔化API的開源框架,在Go語言中,Swagger可以幫助后端開發(fā)人員快速創(chuàng)建和定義RESTful API,并提供自動生成接口文檔的功能,所以本文給大家介紹了Go集成swagger實(shí)現(xiàn)在線接口文檔的方法,需要的朋友可以參考下
    2024-11-11
  • Go語言并發(fā)定時(shí)任務(wù)之從Sleep到Context的8種寫法全解析

    Go語言并發(fā)定時(shí)任務(wù)之從Sleep到Context的8種寫法全解析

    這篇文章主要為大家詳細(xì)介紹了Go語言并發(fā)定時(shí)任務(wù)之從Sleep到Context的8種寫法的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2025-08-08
  • 使用Go進(jìn)行單元測試的實(shí)現(xiàn)

    使用Go進(jìn)行單元測試的實(shí)現(xiàn)

    這篇文章主要介紹了使用Go進(jìn)行單元測試的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Go語言基本的語法和內(nèi)置數(shù)據(jù)類型初探

    Go語言基本的語法和內(nèi)置數(shù)據(jù)類型初探

    這篇文章主要介紹了Go語言基本的語法和內(nèi)置數(shù)據(jù)類型,是golang入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10
  • golang簡單tls協(xié)議用法完整示例

    golang簡單tls協(xié)議用法完整示例

    這篇文章主要介紹了golang簡單tls用法,分析了tls協(xié)議的使用步驟及客戶端與服務(wù)器端的相關(guān)實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2016-07-07
  • 解讀unsafe.Pointer和uintptr的區(qū)別

    解讀unsafe.Pointer和uintptr的區(qū)別

    這篇文章主要介紹了解讀unsafe.Pointer和uintptr的區(qū)別及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • golang原生實(shí)現(xiàn)JWT的示例代碼

    golang原生實(shí)現(xiàn)JWT的示例代碼

    在Go中實(shí)現(xiàn)JWT驗(yàn)證,可以通過標(biāo)準(zhǔn)庫crypto/hmac、crypto/sha256和encoding/base64來編寫自己的JWT,本文就詳細(xì)的來介紹一下,感興趣的可以了解下
    2023-05-05
  • Go語言操作數(shù)據(jù)庫及其常規(guī)操作的示例代碼

    Go語言操作數(shù)據(jù)庫及其常規(guī)操作的示例代碼

    這篇文章主要介紹了Go語言操作數(shù)據(jù)庫及其常規(guī)操作的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評論

嘉善县| 二连浩特市| 灵寿县| 永安市| 神池县| 林芝县| 桃源县| 如皋市| 璧山县| 庆安县| 天等县| 喀喇沁旗| 景洪市| 柘荣县| 敦煌市| 肥城市| 水富县| 启东市| 禹城市| 于田县| 柳林县| 余姚市| 凤山市| 容城县| 南汇区| 玉山县| 盐源县| 福海县| 梁河县| 奈曼旗| 北宁市| 和龙市| 诏安县| 桐柏县| 吉安市| 九江市| 莒南县| 晋江市| 南丰县| 龙江县| 阿拉善左旗|