Inhaltsverzeichnis
Schritt 1: Holen Sie sich den Code
步骤二:编译代码
步骤三:运行代码
步骤四:配置后台运行
使用 nohup 命令
使用 systemd 服务
Verwenden Sie den Befehl nohup
Systemd-Dienst verwenden
Heim Backend-Entwicklung Golang So stellen Sie ein Golang-Projekt auf einem Ubuntu-System bereit

So stellen Sie ein Golang-Projekt auf einem Ubuntu-System bereit

Apr 27, 2023 am 09:10 AM

Als Entwickler ist die schnelle und stabile Bereitstellung und Ausführung von Code eine der wesentlichen Fähigkeiten beim Aufbau einer Projektentwicklungsumgebung. In diesem Artikel erfahren Sie, wie Sie Golang-Projekte auf Ubuntu-Systemen bereitstellen.

Bevor Sie beginnen, müssen Sie die folgenden Schritte ausführen:

  1. Installieren Sie die Golang-Umgebung
  2. Installieren Sie das Git-Tool

Als nächstes erklären wir es in den folgenden Schritten.

Schritt 1: Holen Sie sich den Code

Zuerst müssen wir den Projektcode besorgen. Geben Sie im Terminal den folgenden Befehl ein:

git clone https://github.com/username/repository.git
Nach dem Login kopieren

Wobei https://github.com/username/repository.git die Git-Adresse des Projekts ist, die auf der Projekthomepage zu finden ist. https://github.com/username/repository.git 是项目的 Git 地址,可以在项目主页中找到。

步骤二:编译代码

完成代码拉取后,我们需要使用 Golang 工具链进行编译。在项目目录下,输入以下命令:

go build main.go
Nach dem Login kopieren

其中,main.go 是项目的入口文件。执行该命令后,会在项目目录下生成一个可执行文件。

步骤三:运行代码

在完成编译后,我们可以直接运行该可执行文件。在终端中输入以下命令:

./main
Nach dem Login kopieren

执行该命令后,可执行文件即开始运行。

步骤四:配置后台运行

在实际部署中,我们需要将应用程序放在后台运行,以保证稳定性和持久性。以下是两种常用的方式:

使用 nohup 命令

nohup 可以使程序在后台运行,并将输出重定向到指定文件,从而避免因为用户退出终端而导致的程序强制退出。

在终端中输入以下命令:

nohup ./main > log.txt 2>&1 &
Nach dem Login kopieren

其中:

  • nohup 启动程序,并忽略 HUP 信号,使程序可以在后台运行;
  • ./main 是可执行文件的路径和文件名;
  • > log.txt 将程序输出的信息重定向到 log.txt 文件中;
  • 2>&1 将标准错误输出和标准输入输出合并,重定向到 log.txt 文件中;
  • & 将程序放入后台运行。

使用 systemd 服务

systemd 是一种常用的系统管理工具,可以管理系统的服务、进程等。我们可以将 Golang 项目封装成一个 systemd 服务,从而实现自动启动、自动重启等功能。

以下是 systemd 服务文件的一个示例:

[Unit]
Description=My Go Application

[Service]
Type=simple
Restart=always
User=root
ExecStart=/path/to/app/main

[Install]
WantedBy=multi-user.target
Nach dem Login kopieren

在该服务文件中,我们需要定义服务的描述、类型、重启机制等配置项。具体配置项的含义可以参考 systemd 官方文档。

在配置完成后,我们可以使用以下命令启动服务:

systemctl start my-go-app.service
Nach dem Login kopieren

需要注意的是,服务文件需要存放在 /etc/systemd/system 目录下,并以 .service

Schritt 2: Kompilieren Sie den Code

Nach Abschluss des Code-Pullings müssen wir zum Kompilieren die Golang-Toolkette verwenden. Geben Sie im Projektverzeichnis den folgenden Befehl ein: 🎜rrreee🎜 Darunter ist main.go die Eintragsdatei des Projekts. Nach Ausführung dieses Befehls wird eine ausführbare Datei im Projektverzeichnis generiert. 🎜🎜Schritt 3: Führen Sie den Code aus 🎜🎜Nach Abschluss der Kompilierung können wir die ausführbare Datei direkt ausführen. Geben Sie im Terminal den folgenden Befehl ein: 🎜rrreee🎜Nach Ausführung dieses Befehls wird die ausführbare Datei ausgeführt. 🎜🎜Schritt 4: Hintergrundausführung konfigurieren🎜🎜Bei der tatsächlichen Bereitstellung müssen wir die Anwendung im Hintergrund ausführen, um Stabilität und Haltbarkeit zu gewährleisten. Im Folgenden sind zwei häufig verwendete Methoden aufgeführt: 🎜

Verwenden Sie den Befehl nohup

🎜nohup kann das Programm im Hintergrund ausführen lassen und die Ausgabe in die angegebene Datei umleiten, wodurch das erzwungene Beenden des Programms aufgrund von vermieden wird Benutzer verlässt das Terminal. 🎜🎜Geben Sie den folgenden Befehl im Terminal ein: 🎜rrreee🎜Unter anderem: 🎜
    🎜nohup startet das Programm und ignoriert das HUP-Signal, damit das Programm im Hintergrund laufen kann; 🎜🎜./main ist der Pfad und Dateiname der ausführbaren Datei; 🎜🎜&gt leitet die vom Programm ausgegebenen Informationen an log.txt-Datei; 🎜 🎜2>&1 Führen Sie die Standardfehlerausgabe und die Standardeingabe und -ausgabe zusammen und leiten Sie sie in die Datei log.txt um 🎜🎜& Lassen Sie das Programm im Hintergrund laufen. 🎜

Systemd-Dienst verwenden

🎜systemd ist ein häufig verwendetes Systemverwaltungstool, das Systemdienste, Prozesse usw. verwalten kann. Wir können das Golang-Projekt in einen systemd-Dienst kapseln, um einen automatischen Start, einen automatischen Neustart und andere Funktionen zu erreichen. 🎜🎜Das Folgende ist ein Beispiel für eine Systemd-Dienstdatei: 🎜rrreee🎜In dieser Dienstdatei müssen wir die Beschreibung, den Typ, den Neustartmechanismus und andere Konfigurationselemente des Dienstes definieren. Informationen zur Bedeutung bestimmter Konfigurationselemente finden Sie in der offiziellen Dokumentation von systemd. 🎜🎜Nachdem die Konfiguration abgeschlossen ist, können wir den Dienst mit dem folgenden Befehl starten: 🎜rrreee🎜Es ist zu beachten, dass die Dienstdatei im Verzeichnis /etc/systemd/system gespeichert werden muss und endet mit . 🎜🎜Zu diesem Zeitpunkt haben wir den gesamten Prozess der Bereitstellung des Golang-Projekts auf dem Ubuntu-System abgeschlossen. Durch die Beherrschung der oben genannten Fähigkeiten können Sie Golang-Projekte schnell und stabil bereitstellen und ausführen und so die Entwicklungseffizienz und Codezuverlässigkeit verbessern. 🎜

Das obige ist der detaillierte Inhalt vonSo stellen Sie ein Golang-Projekt auf einem Ubuntu-System bereit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich? GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich? Mar 03, 2025 pm 05:17 PM

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich?

Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren? Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren? Mar 03, 2025 pm 05:22 PM

Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren?

Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache? Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache? Mar 03, 2025 pm 05:18 PM

Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache?

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go? Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go? Mar 10, 2025 pm 05:38 PM

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go?

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren? Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren? Mar 10, 2025 pm 03:20 PM

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren?

Wie schreibt man Unit -Tests in Go? Wie schreibt man Unit -Tests in Go? Mar 21, 2025 pm 06:34 PM

Wie schreibt man Unit -Tests in Go?

Wie schreibe ich Dateien in Go Language bequem? Wie schreibe ich Dateien in Go Language bequem? Mar 03, 2025 pm 05:15 PM

Wie schreibe ich Dateien in Go Language bequem?

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen? Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen? Mar 10, 2025 pm 05:36 PM

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen?

See all articles