Mit der allmählichen Popularität der Go-Sprache und der kontinuierlichen Erweiterung ihres Anwendungsbereichs neigen immer mehr Entwickler dazu, Golang als Entwicklungssprache für Projekte zu verwenden. Wenn Sie eine Golang-Anwendung bereitstellen möchten, gibt es zwei Möglichkeiten: Eine besteht darin, Containerisierungstechnologien wie Docker, Kubernetes usw. zu verwenden. Die andere besteht darin, eine eigenständige Bereitstellung zu verwenden. In diesem Artikel werden die relevanten Schritte und Vorsichtsmaßnahmen für die eigenständige Golang-Bereitstellung ausführlich vorgestellt.
Bevor wir beginnen, müssen wir bestätigen, ob die Maschinenumgebung den Anforderungen entspricht. Zunächst müssen Sie bestätigen, ob Golang auf dem Computer installiert ist. Auf einem Linux-System können Sie mit dem folgenden Befehl überprüfen, ob Golang installiert wurde:
go version
Wenn Folgendes ausgegeben wird, bedeutet dies, dass Golang erfolgreich installiert wurde:
go version go1.16.5 linux/amd64
Zweitens müssen Sie bestätigen, ob der Computer über Git verfügt installiert, da wir ihn während des Bereitstellungsprozesses benötigen. Ziehen Sie den Code aus Git. Auf einem Linux-System können Sie mit dem folgenden Befehl überprüfen, ob Git installiert wurde:
git version
Wenn der folgende Inhalt ausgegeben wird, wurde Git erfolgreich installiert:
git version 2.17.1
Abschließend müssen Sie bestätigen, ob die Betriebsumgebung der Maschine vorhanden ist angemessen. Für Golang-Anwendungen muss die Ausführungsumgebung die vom Betriebssystem benötigten Abhängigkeiten und Bibliotheksdateien enthalten. Bevor Sie die Maschinenumgebung bestätigen, müssen Sie zunächst die erforderlichen Bibliotheksdateien wie libssl, libcrypto usw. verstehen, um sie an die Verwendung von Bibliotheken von Drittanbietern wie Sphinx und Elasticsearch anzupassen. Mit dem folgenden Befehl können Sie den Installationspfad der Bibliothek ermitteln:
ldconfig -p | grep "library-name"
Wenn die entsprechende Bibliotheksdatei nicht gefunden wird, müssen Sie sie manuell herunterladen und installieren.
Um Golang-Anwendungen bereitzustellen, müssen wir den für die Bereitstellung erforderlichen Code erhalten. Unter anderem kann der Code über den Befehl git clone abgerufen werden, wie unten gezeigt:
git clone https://github.com/username/project.git
Nach der Ausführung dieses Befehls wird im aktuellen Verzeichnis ein Verzeichnis mit dem Namen project generiert, das den von uns benötigten Golang-Anwendungscode enthält.
Nachdem Sie den Code erhalten haben, müssen Sie ein ausführbares Binärprogramm kompilieren. Dieser Schritt muss normalerweise entsprechend der spezifischen Umgebung und den Parametern des Programms festgelegt werden, z. B. der vom Programm überwachten Portnummer, dem Pfad zur Protokollausgabe usw. In diesem Artikel nehmen wir zur Veranschaulichung ein einfaches Hallo-Welt-Programm als Beispiel. Führen Sie zunächst den folgenden Befehl im Codeverzeichnis aus, um eine Binärdatei zu generieren
go build -o app main.go
Unter diesen ist app der Name des ausgegebenen Binärprogramms und main.go der Einstiegspunkt der Golang-Anwendung. Nach der Ausführung dieses Befehls wird im Codeverzeichnis eine Binärdatei mit dem Namen app generiert. Verwenden Sie dann den folgenden Befehl, um das Binärprogramm zu starten:
./app
An diesem Punkt können wir den Curl-Befehl verwenden, um zu erkennen, ob das Programm erfolgreich gestartet wurde:
curl http://localhost:8080
Wenn „Hello, World!“ zurückgegeben wird, bedeutet dies, dass Programm wurde erfolgreich gestartet.
Um die Verwaltung des Startens, Stoppens und Neustartens der Anwendung zu erleichtern, müssen wir bei der Bereitstellung von Golang-Anwendungen Prozessmanagement-Tools verwenden. Das derzeit am häufigsten verwendete Prozessmanagement-Tool ist systemd. Hier verwenden wir systemd als Beispiel, um zu erklären, wie Prozesse verwaltet werden.
Erstellen Sie zunächst eine neue Datei mit dem Namen app.service in /etc/systemd/system und fügen Sie der Datei den folgenden Inhalt hinzu:
[Unit] Description=description-of-app After=network.target [Service] Type=simple Restart=always StartLimitInterval=0 RestartSec=2 User=username Group=username ExecStart=/path/to/application WorkingDirectory=/path/to/application StandardOutput=syslog StandardError=syslog SyslogIdentifier=app Environment=ENV=prod [Install] WantedBy=multi-user.target
Ändern Sie die Beschreibung der App, den Benutzernamen und den Pfad in der obigen Konfigurationsdatei /to/application und ENV stellen jeweils die Beschreibung der Anwendung, den Benutzernamen, unter dem der Dienst ausgeführt wird, den Pfad zur binären ausführbaren Datei der Anwendung und die laufende Umgebung (Test- oder Produktionsumgebung) dar.
Führen Sie nach Abschluss der Konfigurationsdatei den folgenden Befehl aus, um den Systemd-Dienst zu laden und zu starten:
sudo systemctl daemon-reload sudo systemctl start app.service
Nachdem Sie den obigen Befehl ausgeführt haben, können Sie den folgenden Befehl verwenden, um den Status des Dienstes zu überprüfen:
sudo systemctl status app.service
Wenn der Status lautet „aktiv (läuft)“, dann bedeutet dies, dass der Dienst erfolgreich gestartet wurde.
Bei der Bereitstellung eigenständiger Golang-Anwendungen ist die Sicherheitshärtung besonders wichtig. Zu den Maßnahmen zur Sicherheitsverstärkung gehören:
SSH im öffentlichen Netzwerk einschränken: Sie können den öffentlichen Netzwerkzugriff auf SSH einschränken, indem Sie die folgenden Einträge zu /etc/ssh/sshd_config hinzufügen:
Port 22 PermitRootLogin no AllowUsers user1 user2
Das Obige sind die relevanten Prozesse und Vorsichtsmaßnahmen für die eigenständige Golang-Bereitstellung. Zusammenfassend umfassen die spezifischen Schritte der eigenständigen Golang-Bereitstellung die Bestätigung der Maschinenumgebung, das Abrufen von Code, das Kompilieren des Programms, die Prozessverwaltung und die Sicherheit Verstärkung und andere Schritte. Für Anfänger lohnt es sich auch, die oben genannten Prozesse und Vorsichtsmaßnahmen zu verstehen und zu lernen, was eine bessere Hilfe für die zukünftige Bereitstellung von Golang-Anwendungen sein kann.
Das obige ist der detaillierte Inhalt vonEigenständige Golang-Bereitstellung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!