近年、Golang はますます人気のある言語となり、そのアプリケーションはますます普及し、多くの開発者の注目を集めています。しかし、Golang を初めて使用する開発者にとって、デプロイとデバッグは解決が難しい問題であるため、この記事では Golang のデプロイとデバッグ方法を詳しく紹介します。
1. デプロイメント
Golang はコンパイル済み言語であり、記述されたコードは実行可能ファイルにコンパイルする必要があります。走る。コンパイルには、静的コンパイルと動的コンパイルの 2 つの方法があります。静的コンパイルでは、プログラムに必要なライブラリが実行可能ファイルにパッケージ化されます。実行可能ファイルのサイズは大きくなりますが、実行時に外部ライブラリに依存する必要はありません。一方、動的コンパイルでは、実行時にライブラリ ファイルを動的にリンクする必要があり、そのサイズは実行可能ファイルのサイズは小さくなりますが、外部ライブラリに依存する必要があります。
静的コンパイル:
$ go build -o main main.go
動的コンパイル:
$ go build -o main main.go -ldflags "-linkmode=external"
このうち、-linkmode=external パラメータは、動的リンクに必要なライブラリ ファイルを示します。
Golang では、デフォルトのパッケージ管理ツールは go mod であるため、コードの保存パスとダウンロード ソースを指定するには環境変数を設定する必要があります。 Linux システムでは、~/.bash_profile ファイルを変更することで環境変数を設定できます。
export GO111MODULE=on
export GOPROXY=https://goproxy.cn,direct
export GOSUMDB=sum.golang.google.cn
このうち、GO111MODULE とは、 go mod;GOPROXY は go get 時に使用されるダウンロード ソースを表し、GOSUMDB はダウンロードされたコード パッケージが正式にリリースされたバージョンであるかどうかの検証を表します。
Docker は、Golang プログラムをイメージにパッケージ化し、あらゆるプラットフォームに簡単にデプロイできるようにするのに役立ちます。まず、Dockerfile を作成する必要があります:
FROM golang:1.15.0-alpine
WORKDIR /app
COPY . .
RUN go build -o main .
CMD [" /app /main"]
このうち、FROM はミラーソースを指定し、WORKDIR は作業ディレクトリを指定します。COPY は現在のフォルダー内のファイルをミラーにコピーします。RUN はコンパイルコマンドを実行します。CMD は実行コマンドを指定します。 。
次に、次のコマンドを実行します。
$ docker build -t myapp .
$ docker run -p 8080:8080 myapp
このうち、-t は、ラベル名; -p はポートマッピングを指定します。
2. デバッグ
Golang にはデバッグ ツールのセットが組み込まれており、CPU の分析に役立つ go ツール pprof を使用できます。およびメモリ使用状況。まず、pprof パッケージをコードにインポートし、パフォーマンス分析コードを追加する必要があります。
import (
"net/http" _ "net/http/pprof"
)
func main() {
go func() { http.ListenAndServe("0.0.0.0:6060", nil) }() // your code here
}
このうち、pprof はインポート時に呼び出す必要がなく、ルートを自動的に登録します。次に、次のコマンドを実行します。
$ go tool pprof http://localhost:6060/debug/pprof/profile
このコマンドは、CPU 使用率の分析結果をコンソールに出力します。
プログラムで例外が発生した場合、デバッガを使用してデバッグできます。 Golang には多くのデバッガーがありますが、ここでは 2 種類を紹介します:
GDB デバッガー:
コンパイル時に -g パラメーターを指定してデバッグ情報を追加し、次のコマンドを実行する必要があります。
# #$ gdb myapp(gdb) Break main.main
(gdb) run
$ dlv debug myapp
このコマンドはデバッガーを起動し、デバッグに使用できる REPL (読み取り-評価-印刷ループ) インターフェイスを開きます。
概要
この記事では、Golang のデプロイ方法とデバッグ方法 (コンパイル、環境変数、Docker、pprof、GDB、Delve) を紹介します。開発者が Golang スキルをよりよく習得するのに役立つことを願っています。
以上がGolang のデプロイメントとデバッグ方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。