首頁  >  文章  >  後端開發  >  golang 上線部署

golang 上線部署

WBOY
WBOY原創
2023-05-27 11:18:09618瀏覽

一、前言

隨著科技的進步和網路的普及,越來越多的應用和服務需要上線部署。而在這個過程中,選擇適合的程式語言也是必要的一環。 Golang 作為一門開源的程式語言,因其快速、高效、穩定而備受好評。本文將詳細介紹 Golang 上線部署的步驟和常見問題解決方法。

二、Golang 專案編譯打包

在 Golang 專案部署之前,先將其編譯打包成二進位執行檔。下面介紹兩種不同的編譯方式。

  1. 使用 go build 指令

使用 Go 語言內建的 go build 指令即可完成編譯打包。命令格式如下,其中 main.go 為入口檔案名稱。

go build -o output main.go

執行指令後,會在目前目錄下產生一個名為 output 的執行檔。

  1. 使用 Docker 容器編譯

Docker 是一個廣泛使用的容器化工具。使用 Docker 容器對 Golang 專案進行編譯打包,可以讓我們更方便地部署和升級應用程式。

執行以下指令,拉取 Golang 映像並進入容器:

docker pull golang:latest
docker run -itd --name go golang:latest
docker exec -it go bash

在容器內進入專案資料夾,使用 go build 指令編譯打包專案。

go build -o output main.go

執行完畢後,可在容器內使用 scp 指令將產生的二進位檔案複製到本機。

scp root@ip:/path/to/yourfile .

三、Golang 專案部署

完成 Golang 專案的編譯打包後,可部署至生產環境。以下介紹兩種常見的 Golang 專案部署方法。

  1. 命令列部署

使用命令列直接部署 Golang 項目,需要執行下列命令,在 port 及 output 後分別填入連接埠號碼及執行檔路徑。

nohup ./output -port=8080 > app.log 2>&1 &

此命令會在背景執行 Golang 應用程序,同時將日誌輸出至 app.log 檔案中。

  1. 使用 systemd 服務部署

Systemd 是一個廣泛應用於 Linux 系統的系統和服務管理器。使用 systemd 部署 Golang 項目,可以讓我們更快速、更穩定地部署應用程式。

可建立一個名為 app.service 的服務文件,該文件包含了 Golang 應用程式的執行路徑、日誌路徑、啟動類型及所需環境變數等資訊。範例檔案如下:

[Unit]
Description=Golang Application Service
After=network.target
Requires=network.target
 
[Service]
ExecStart=/path/to/output -port=8080
WorkingDirectory=/path/to/
Restart=always
RestartSec=3
StartLimitBurst=10
StartLimitInterval=60s
 
StandardOutput=file:/var/log/app.log
StandardError=file:/var/log/app.log
 
[Install]
WantedBy=multi-user.target

在啟用 systemctl 服務前,需將該檔案放至 /etc/systemd/system/ 目錄下,並透過下列指令啟用服務。

systemctl daemon-reload
systemctl enable app.service
systemctl start app.service

執行完上述指令後,Golang 應用程式即可成功部署至生產環境。

四、常見問題解決方法

  1. 連接埠衝突

#在執行Golang 專案時,若選擇了已被佔用的連接埠號,則會導致程式無法啟動。解決方法是,在運行命令中指定一個未被佔用的連接埠號碼。可透過以下命令檢查連接埠佔用情況。

lsof -i:端口号
  1. 無法存取MySQL 資料庫

若Golang 專案中使用了MySQL 資料庫,但在程式啟動時提示「no such host」等相關信息,則可能是MySQL 資料庫沒有正確配置。需檢查 MySQL 資料庫是否已正確安裝及是否能夠連線。

  1. 系統記憶體佔用過高

在 Golang 專案部署時,若出現記憶體佔用過高的情況,可能是 Golang 應用程式本身有問題。此時需要檢查程式碼邏輯,優化程序,減少記憶體佔用。

本文介紹了 Golang 專案的編譯打包及部署方法,以及常見問題的解決方法。希望能對 Golang 開發者在專案上線部署過程中帶來一些幫助。

以上是golang 上線部署的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn