インターネット技術の急速な発展に伴い、さまざまな高性能言語が際限なく登場しています。その中でも、Golang は、その効率的な同時実行メカニズムと簡潔な構文により、ますます多くの開発者に選ばれる言語となっています。実際の運用環境では、自動起動やエラー再起動などの機能を実装するために、Golang アプリケーションをデーモン プロセスの形式でサーバーにデプロイする必要があることがよくあります。次に、systemd を使用して Golang アプリケーションをデーモンとしてデプロイする方法を紹介します。
簡単に言うと、デーモン プロセスはバックグラウンドで実行され、アクティブなままになるプロセスです。端末に依存せず、端末を閉じても終了しません。システムの起動時に自動的に開始され、エラーが発生したときに自動的に再起動されます。これはサーバー シナリオでは非常に一般的で、たとえば、Web サーバー、データベースなどはすべてデーモン プロセスの形式で実行され、システムの信頼性と安定性が確保されます。
Linux システムでは、nohup、screen など、アプリケーションをデーモンとして実行する方法がたくさんあります。これらの方法はシンプルで使いやすいですが、スケーラビリティと管理の点で比較的基本的な要件しか満たせません。 systemd は比較的新しいシステム管理サービスであり、その目標は SysV や Upstart などのサービスを置き換えることです。 Systemd は起動時間の最適化を最高の指針としており、多数の異なる Linux システムと関連サービスの分析とテストを通じて、非常に速い起動速度やシンプルで簡単な構成などの一連の優れた機能を実現しています。現在、systemd は多くの Linux ディストリビューションで採用されています。
アプリケーションが 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 ファイルの作成
という名前のデーモン起動スクリプトのユニット ファイルを作成する必要があります。 <pre class='brush:bash;toolbar:false;'>go run main.go</pre>
各パラメータの説明は次のとおりです。
ディレクトリにコピーします。 次に、次のコマンドを実行してデーモン プロセスを開始します。
[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. 概要
以上がgolang デーモンのデプロイメントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。