ホームページ  >  記事  >  バックエンド開発  >  golang デーモンのデプロイメント

golang デーモンのデプロイメント

WBOY
WBOYオリジナル
2023-05-15 10:26:37827ブラウズ

インターネット技術の急速な発展に伴い、さまざまな高性能言語が際限なく登場しています。その中でも、Golang は、その効率的な同時実行メカニズムと簡潔な構文により、ますます多くの開発者に選ばれる言語となっています。実際の運用環境では、自動起動やエラー再起動などの機能を実装するために、Golang アプリケーションをデーモン プロセスの形式でサーバーにデプロイする必要があることがよくあります。次に、systemd を使用して Golang アプリケーションをデーモンとしてデプロイする方法を紹介します。

1. デーモン プロセスとは何ですか?

簡単に言うと、デーモン プロセスはバックグラウンドで実行され、アクティブなままになるプロセスです。端末に依存せず、端末を閉じても終了しません。システムの起動時に自動的に開始され、エラーが発生したときに自動的に再起動されます。これはサーバー シナリオでは非常に一般的で、たとえば、Web サーバー、データベースなどはすべてデーモン プロセスの形式で実行され、システムの信頼性と安定性が確保されます。

2. systemd を選択する理由

Linux システムでは、nohup、screen など、アプリケーションをデーモンとして実行する方法がたくさんあります。これらの方法はシンプルで使いやすいですが、スケーラビリティと管理の点で比較的基本的な要件しか満たせません。 systemd は比較的新しいシステム管理サービスであり、その目標は SysV や Upstart などのサービスを置き換えることです。 Systemd は起動時間の最適化を最高の指針としており、多数の異なる Linux システムと関連サービスの分析とテストを通じて、非常に速い起動速度やシンプルで簡単な構成などの一連の優れた機能を実現しています。現在、systemd は多くの Linux ディストリビューションで採用されています。

3. Golang アプリケーションの作成

アプリケーションが HTTP リクエストを監視して「hello world」を返す必要があると仮定し、まず main.go ファイルを作成します。次のコマンドを使用してアプリケーションを開始できます。

package main

import (
    "fmt"
    "net/http"
)

func HelloWorld(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello World!
")
}

func main() {
    http.HandleFunc("/", HelloWorld)
    http.ListenAndServe(":8080", nil)
}

http://localhost:8080 にアクセスして効果を確認できます。

4. Systemd Unit ファイルの作成

Systemd Unit ファイルは、特定のサービスに関するパフォーマンス、構成、開始/停止情報が含まれる構成ファイルです。 systemd を使用する前に、以下に示すように、

myapp.service

という名前のデーモン起動スクリプトのユニット ファイルを作成する必要があります。 <pre class='brush:bash;toolbar:false;'>go run main.go</pre> 各パラメータの説明は次のとおりです。

    Description
  • : サービスの説明
  • #After
  • : 実行レベルを実行する場合、このユニットはシーケンス リストの最後になければなりません。 (この記事の設定では、ネットワーク サービスの開始後にアプリケーションを開始する必要があることを示しています)
  • User
  • : アプリケーションを実行しているユーザー
  • WorkingDirectory
  • : アプリケーション プログラムが実行される作業ディレクトリ
  • ExecStart
  • : アプリケーションによって実行されるコマンド
  • Restart
  • : 自動的に再起動しますアプリケーションが予期せず終了した場合のアプリケーション
  • WantedBy
  • : サービスを有効にするターゲット (スタートアップ レベル) または複数のターゲット (スタートアップ レベル) を指定するために使用されます。
  • ユニット ファイルを作成したら、それを
/etc/systemd/system/

ディレクトリにコピーします。 次に、次のコマンドを実行してデーモン プロセスを開始します。

[Unit]
Description=My App
After=network.target

[Service]
User=root
WorkingDirectory=/root/myapp
ExecStart=/root/myapp/myapp
Restart=always

[Install]
WantedBy=multi-user.target

この時点で、Golang アプリケーションはデーモン プロセスの形式でサーバーにデプロイされています。次のコマンドでサービスのステータスを確認できます:

systemctl daemon-reload  # 重载 daemon
systemctl start myapp.service  # 启动服务
systemctl enable myapp.service  # 将服务设为开机启动

5. 概要

この記事では、systemd を使用して Golang アプリケーションをデーモンの形式でサーバーにデプロイする方法を紹介します。システムを管理するにはさまざまな方法がありますが、上記は実装方法の 1 つにすぎません。 Golang アプリケーションをデーモンとして実行する必要がある読者にインスピレーションを与えることを願っています。Systemd の詳細については、自分で勉強する必要があります。

以上がgolang デーモンのデプロイメントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。