Webentwicklung · 18 min read · Oct 19, 2025
So installieren Sie den Hugo Site Generator mit Nginx auf Rocky Linux 9

Eine statische Website besteht aus Seiten mit statischem Inhalt oder einfachem HTML-, JavaScript- oder CSS-Code. Der Inhalt wird nicht dynamisch generiert und erfordert keine Datenbank oder serverseitige Verarbeitung. Solche Websites sind unglaublich schnell und immun gegen Angriffe, die von dynamischem Code oder SQL abhängen.
Hugo ist ein Open-Source-Generator für statische Websites, der in Go geschrieben ist. Er generiert Inhalte, indem er Beiträge, die in Markdown-Sprache verfasst sind, in HTML umwandelt. Hugo wird auch mit einem integrierten Server geliefert, um die von ihm generierten Websites zu hosten. Sie können eine Hugo-Website auch auf Amazon S3, GitHub-Seiten, Google Cloud, Netlify, Vercel usw. hosten.
In diesem Tutorial werden wir untersuchen, wie man Hugo installiert, um eine statische Website auf einem Server, der von Rocky Linux 9 betrieben wird, zu erstellen. Wir werden den Nginx-Server verwenden, um die Website zu hosten, und das Let’s Encrypt SSL-Zertifikat, um unsere Installation zu sichern.
Voraussetzungen
- Ein Server, der Rocky Linux 9 ausführt.
- Ein Nicht-Root-Benutzer mit Sudo-Rechten.
- Ein vollständig qualifizierter Domainname (FQDN), der auf Ihren Server zeigt. Für unsere Zwecke verwenden wir
hugo.example.comals Domainnamen. - Stellen Sie sicher, dass alles aktualisiert ist.
$ sudo dnf update - Installieren Sie grundlegende Dienstprogramme. Einige davon sind möglicherweise bereits installiert.
$ sudo dnf install wget curl nano unzip yum-utils tree -y
Schritt 1 - Firewall konfigurieren
Der erste Schritt besteht darin, die Firewall zu konfigurieren. Rocky Linux verwendet die Firewalld-Firewall. Überprüfen Sie den Status der Firewall.
$ sudo firewall-cmd --state
running
Die Firewall arbeitet mit verschiedenen Zonen, und die öffentliche Zone ist die Standardzone, die wir verwenden werden. Listen Sie alle Dienste und Ports auf, die in der Firewall aktiv sind.
$ sudo firewall-cmd --permanent --list-services
Es sollte die folgende Ausgabe anzeigen.
cockpit dhcpv6-client ssh
Wiki.js benötigt HTTP- und HTTPS-Ports, um zu funktionieren. Öffnen Sie diese.
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent
Laden Sie die Firewall neu, um die Änderungen anzuwenden.
$ sudo firewall-cmd --reload
Schritt 2 - Nginx installieren
Rocky Linux 9 wird mit einer älteren Version von Nginx ausgeliefert. Sie müssen das offizielle Nginx-Repository herunterladen, um die neueste Version zu installieren.
Erstellen und öffnen Sie die Datei /etc/yum.repos.d/nginx.repo, um das offizielle Nginx-Repository zu erstellen.
$ sudo nano /etc/yum.repos.d/nginx.repo
Fügen Sie den folgenden Code ein.
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Installieren Sie den Nginx-Server.
$ sudo dnf install nginx -y
Überprüfen Sie die Installation.
$ nginx -v
nginx version: nginx/1.24.0
Aktivieren und starten Sie den Nginx-Server.
$ sudo systemctl enable nginx --now
Überprüfen Sie den Status des Servers.
$ sudo systemctl status nginx
? nginx.service - nginx - Hochleistungs-Webserver
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
Active: active (running) since Mon 2023-10-30 08:24:05 UTC; 7s ago
Docs: http://nginx.org/en/docs/
Process: 4265 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 4266 (nginx)
Tasks: 2 (limit: 4402)
Memory: 1.9M
CPU: 7ms
CGroup: /system.slice/nginx.service
??4266 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??4267 "nginx: worker process"
Oct 30 08:24:05 hugo.example.com systemd[1]: Starting nginx - Hochleistungs-Webserver...
Schritt 3 - Git installieren
Hugo benötigt Git, um zu funktionieren. Führen Sie den folgenden Befehl aus, um Git zu installieren.
$ sudo dnf install git -y
Überprüfen Sie die Git-Installation.
$ git --version
git version 2.39.3
Schritt 4 - Hugo installieren
Da Hugo mit der Go-Sprache erstellt wurde, ist die Installation ziemlich einfach, da sie keine Abhängigkeiten erfordert und eigenständig ausgeführt werden kann.
Laden Sie Hugo herunter. Für unser Tutorial werden wir die erweiterte Version von Hugo installieren. Die erweiterte Version kann Bilder im Webp-Format kodieren, wenn Bilder verarbeitet werden. Dies ist nützlich, wenn Sie möchten, dass Hugo Bilder für Sie in Echtzeit konvertiert und deren Größen reduziert. Die erweiterte Version enthält auch einen SASS-Compiler, der in bestimmten Fällen nützlich sein kann, falls Sie ihn benötigen.
Erstellen Sie ein Verzeichnis für Hugo.
$ sudo mkdir /var/www/html/hugo -p
Wechseln Sie in das neu erstellte Verzeichnis.
$ cd /var/www/html/hugo
Laden Sie Hugo von der GitHub-Releases-Seite herunter. Zum Zeitpunkt des Schreibens dieses Tutorials ist v0.119.0 die neueste Version, die wir herunterladen werden.
$ sudo wget https://github.com/gohugoio/hugo/releases/download/v0.119.0/hugo_extended_0.119.0_linux-amd64.tar.gz
Entpacken Sie die Dateien aus dem Archiv.
$ sudo tar -xzf hugo_extended_0.119.0_linux-amd64.tar.gz
Sie sehen die folgenden drei Dateien in Ihrem Verzeichnis.
$ ls
hugo hugo_extended_0.119.0_linux-amd64.tar.gz LICENSE README.md
Verschieben Sie die hugo-Binärdatei in das Verzeichnis /usr/bin.
$ sudo mv hugo /usr/bin/hugo
Die Datei hat bereits die Berechtigung zum Ausführen gesetzt, sodass Sie sie nicht setzen müssen.
Bestätigen Sie die Installation.
$ hugo version
hugo v0.119.0-b84644c008e0dc2c4b67bd69cccf87a41a03937e+extended linux/amd64 BuildDate=2023-09-24T15:20:17Z VendorInfo=gohugoio
Sie können auch alle verfügbaren Optionen zur Verwendung mit dem --help-Flag überprüfen.
$ hugo --help
Sie erhalten die folgende Ausgabe.
hugo ist der Hauptbefehl, der verwendet wird, um Ihre Hugo-Website zu erstellen.
Hugo ist ein schneller und flexibler Generator für statische Websites,
gebaut mit Liebe von spf13 und Freunden in Go.
Vollständige Dokumentation ist verfügbar unter https://gohugo.io/.
Verwendung:
hugo [flags]
hugo [command]
Verfügbare Befehle:
completion Generieren Sie das Autovervollständigungsskript für die angegebene Shell
config Drucken Sie die Site-Konfiguration
convert Konvertieren Sie Ihren Inhalt in verschiedene Formate
deploy Stellen Sie Ihre Website bei einem Cloud-Anbieter bereit.
env Drucken Sie Hugo-Version und Umgebungsinformationen
gen Eine Sammlung mehrerer nützlicher Generatoren.
help Hilfe zu einem Befehl
import Importieren Sie Ihre Website von anderen.
list Auflistung verschiedener Arten von Inhalten
mod Verschiedene Hugo-Module-Helfer.
new Erstellen Sie neue Inhalte für Ihre Website
server Ein Hochleistungs-Webserver
version Drucken Sie Hugo-Version und Umgebungsinformationen
Flags:
-b, --baseURL string Hostname (und Pfad) zum Stamm, z.B. https://spf13.com/
-D, --buildDrafts Inhalte einbeziehen, die als Entwurf markiert sind
-E, --buildExpired abgelaufene Inhalte einbeziehen
-F, --buildFuture Inhalte mit Veröffentlichungsdatum in der Zukunft einbeziehen
--cacheDir string Dateisystempfad zum Cache-Verzeichnis
--cleanDestinationDir Entfernen Sie Dateien aus dem Ziel, die nicht in statischen Verzeichnissen gefunden wurden
--clock string Stellen Sie die Uhr ein, die von Hugo verwendet wird, z.B. --clock 2021-11-06T22:30:00.00+09:00
--config string Konfigurationsdatei (Standard ist hugo.yaml|json|toml)
--configDir string Konfigurationsverzeichnis (Standard "config")
-c, --contentDir string Dateisystempfad zum Inhaltsverzeichnis
--debug Debug-Ausgabe
-d, --destination string Dateisystempfad zum Schreiben von Dateien
--disableKinds strings Verschiedene Arten von Seiten deaktivieren (Startseite, RSS usw.)
--enableGitInfo Fügen Sie Git-Revision, Datum, Autor und CODEOWNERS-Informationen zu den Seiten hinzu
-e, --environment string Build-Umgebung
--forceSyncStatic Kopieren Sie alle Dateien, wenn statisch geändert wird.
--gc Aktivieren Sie die Ausführung einiger Bereinigungsaufgaben (entfernen Sie ungenutzte Cache-Dateien) nach dem Build
-h, --help Hilfe für hugo
--ignoreCache Ignoriert das Cache-Verzeichnis
--ignoreVendorPaths string Ignoriert alle _vendor für Modulpfade, die dem angegebenen Glob-Muster entsprechen
-l, --layoutDir string Dateisystempfad zum Layoutverzeichnis
--logLevel string Protokollstufe (debug|info|warn|error)
--minify Minimieren Sie jedes unterstützte Ausgabeformat (HTML, XML usw.)
--noBuildLock Erstellen Sie keine .hugo_build.lock-Datei
--noChmod Synchronisieren Sie nicht den Berechtigungsmodus von Dateien
--noTimes Synchronisieren Sie nicht die Änderungszeit von Dateien
--panicOnWarning Panik bei der ersten WARNUNG-Protokollierung
--poll string Stellen Sie dies auf ein Poll-Intervall ein, z.B. --poll 700ms, um einen auf Polling basierenden Ansatz zu verwenden, um auf Änderungen im Dateisystem zu achten
--printI18nWarnings Drucken Sie fehlende Übersetzungen
--printMemoryUsage Drucken Sie die Speichernutzung auf dem Bildschirm in Intervallen
--printPathWarnings Drucken Sie Warnungen zu doppelten Zielpfaden usw.
--printUnusedTemplates Drucken Sie Warnungen zu ungenutzten Vorlagen.
--quiet Bauen Sie im ruhigen Modus
--renderToMemory Rendern Sie in den Speicher (nur nützlich für Benchmark-Tests)
-s, --source string Dateisystempfad zum Lesen von Dateien relativ
--templateMetrics Zeigen Sie Metriken über die Ausführung von Vorlagen an
--templateMetricsHints Berechnen Sie einige Verbesserungshinweise, wenn sie mit --templateMetrics kombiniert werden
-t, --theme strings Themen zur Verwendung (befindet sich in /themes/THEMENAME/)
--themesDir string Dateisystempfad zum Themenverzeichnis
--trace file Schreiben Sie den Trace in eine Datei (im Allgemeinen nicht nützlich)
-v, --verbose Ausführliche Ausgabe
-w, --watch Überwachen Sie das Dateisystem auf Änderungen und erstellen Sie bei Bedarf neu
Verwenden Sie "hugo [command] --help" für weitere Informationen zu einem Befehl.
Löschen Sie alle verbleibenden Dateien im Ordner, da sie nicht mehr benötigt werden.
$ sudo rm -rf *.*
Schritt 5 - Erstellen Sie eine neue Hugo-Website
Geben Sie den folgenden Befehl ein, um eine neue Hugo-Website zu erstellen.
$ sudo hugo new site howtoforge
Sie erhalten die folgende Ausgabe.
Herzlichen Glückwunsch! Ihre neue Hugo-Website wurde in /home/navjot/hugo/howtoforge erstellt.
Nur noch ein paar Schritte...
1. Wechseln Sie in das aktuelle Verzeichnis /home/navjot/hugo/howtoforge.
2. Erstellen oder installieren Sie ein Thema:
- Erstellen Sie ein neues Thema mit dem Befehl "hugo new theme "
- Installieren Sie ein Thema von https://themes.gohugo.io/
3. Bearbeiten Sie hugo.toml und setzen Sie die "theme"-Eigenschaft auf den Themennamen.
4. Erstellen Sie neue Inhalte mit dem Befehl "hugo new content /.".
5. Starten Sie den eingebetteten Webserver mit dem Befehl "hugo server --buildDrafts".
Siehe Dokumentation unter https://gohugo.io/.
Führen Sie den tree-Befehl aus, um die Struktur der Website zu überprüfen.
$ tree howtoforge/
Sie erhalten die folgende Ausgabe.
howtoforge/
??? archetypes
? ??? default.md
??? assets
??? content
??? data
??? hugo.toml
??? i18n
??? layouts
??? static
??? themes
8 Verzeichnisse, 2 Dateien
Wechseln Sie in das Hugo-Verzeichnis.
$ cd howtoforge
Schritt 6 - Hugo-Thema installieren
Der nächste Schritt besteht darin, ein Hugo-Thema zu installieren. Es gibt zwei Möglichkeiten, dies zu tun, und beide erfordern Git. Die erste Methode ist einfach und unkompliziert und beinhaltet das Klonen des GitHub-Repositorys des Themas. Dies ist in den meisten Fällen nützlich und der einfachste Weg, dies zu tun. Die Aktualisierung über diese Methode ist einfach, obwohl diese Methode das Herunterladen vieler unnötiger Dinge erfordert, die Sie nicht benötigen. Es gibt einige Themen, insbesondere die kostenpflichtigen, die kein GitHub-Repository haben, von dem Sie sie abrufen können. Solche Themen werden normalerweise als komprimiertes Archiv angeboten. In diesem Fall müssen Sie das Archiv manuell extrahieren und das Thema manuell aktualisieren. Die dritte Methode besteht darin, das Thema als Git-Submodul zu erfassen. Dies erfordert, dass Sie Ihr Hugo-Verzeichnis als Git-Repository initialisieren. Dies ist die empfohlene Methode und nützlich, falls Sie Ihre Website auf GitHub, Netlify oder einem anderen Hosting-Dienst bereitstellen möchten. Das Pushen Ihrer Hugo-Website auf GitHub gewährleistet auch automatische Backups ohne zusätzlichen Aufwand.
Wir werden alle drei Methoden behandeln. Es gibt eine weitere Methode zur Installation eines Hugo-Themas mit Hugo Go-Modulen. Diese Methode funktioniert nur, wenn das Thema als Hugo-Modul verfügbar ist. Wir werden dies jedoch nicht behandeln, da es außerhalb des Rahmens dieses Artikels liegt.
Methode 1 - Klonen eines Hugo-Themas
Dies ist die am häufigsten verwendete Methode zur Installation eines Hugo-Themas. Für unser Tutorial werden wir das Paper-Thema installieren. Wechseln Sie in das Hugo-Verzeichnis.
$ cd /var/www/html/hugo/howtoforge
Führen Sie den folgenden Befehl aus, um das GitHub-Repository des Themas zu klonen. Das --depth=1-Flag erfasst nur den neuesten Commit.
$ sudo git clone https://github.com/nanxiaobei/hugo-paper themes/Paper --depth=1
Um das über diese Methode heruntergeladene Thema zu aktualisieren, führen Sie die folgenden Befehle aus.
$ cd ~/hugo/howtoforge/themes/Paper
$ sudo git pull
Methode 2 - Thema aus komprimiertem Archiv installieren
Dies ist die einfachste Methode von allen. Holen Sie sich das Archiv der Themen-Datei. Das Paper-Thema hat keinen Releases-Bereich, sodass Sie keine bestimmte Version herunterladen können. Daher werden wir das GitHub-Master-Archiv herunterladen. Sie können den Link von der GitHub-Repository-Seite abrufen.
$ cd ~
$ wget https://github.com/nanxiaobei/hugo-paper/archive/refs/heads/main.zip
Entpacken Sie das Archiv in das Themenverzeichnis. Das -q-Flag unterdrückt die Ausgabe und das -d-Flag gibt das Ausgabeverzeichnis an.
$ sudo unzip -q main.zip -d /var/www/html/hugo/howtoforge/themes/
Um das Thema zu aktualisieren, müssen Sie das neueste Archiv herunterladen und es erneut extrahieren. Stellen Sie sicher, dass Sie eine Sicherung aller Dateien machen, die Sie geändert haben.
Die unteren beiden Methoden funktionieren nur, wenn Ihre Hugo-Website als Git-Projekt gehostet wird. Andernfalls müssen Sie die folgenden Methoden nicht verwenden.
Methode 3 - Thema als Git-Submodul installieren
Wechseln Sie in den Hugo-Ordner.
$ cd /var/www/html/hugo/howtoforge
Initialisieren Sie den Hugo-Ordner als Git-Repository. Dies ist ein wichtiger Schritt. Dadurch können Sie Ihre Hugo-Website auf GitHub pushen, um sie später mit Netlify, AWS, Vercel usw. zu hosten.
$ sudo git init
Führen Sie den folgenden Befehl aus, um das Thema als Git-Submodul hinzuzufügen.
$ sudo git submodule add https://github.com/nanxiaobei/hugo-paper themes/paper
Um ein als Submodul hinzugefügtes Thema zu aktualisieren, führen Sie den folgenden Befehl aus dem Hugo-Ordner aus.
$ sudo git submodule update --remote --merge
Hugo konfigurieren
Sobald Sie das Thema mit einer Methode Ihrer Wahl installiert haben, öffnen Sie die Datei hugo.toml in Ihrem Hugo-Stammverzeichnis. Seit Hugo v0.110.0 heißt die Standardkonfigurationsdatei hugo.toml. Wenn Sie eine ältere Version von Hugo verwenden, finden Sie die Datei config.toml in Ihrem Hugo-Verzeichnis.
$ sudo nano hugo.toml
Fügen Sie die folgende Zeile in die Datei ein. Der Wert sollte mit dem Verzeichnis des Themas übereinstimmen. Für das Paper-Thema wäre dies das Verzeichnis hugo-paper-theme, wenn Sie die Archivinstallation verwendet haben, oder Paper, wenn Sie die Git-Klon- oder Submodul-Methode oben verwendet haben.
theme = 'hugo-paper-main'
Ändern Sie auch den Wert der Variablen baseURL in den Domainnamen Ihrer Website. Und ändern Sie den Titel Ihrer Website.
Ihre Konfigurationsdatei sollte wie folgt aussehen.
baseURL = 'https://hugo.example.com/'
languageCode = 'de-de'
title = 'Howtoforge Hugo Demo'
theme = 'hugo-paper-main'
Sobald Sie fertig sind, speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Schritt 7 - Beiträge und Seiten erstellen
Um einen neuen Beitrag zu erstellen, geben Sie den folgenden Befehl ein.
$ sudo hugo new post/first-post.md
Dies erstellt eine neue Markdown-Datei first-post.md mit dem Titel Erster Beitrag im Ordner content/post. Öffnen Sie die Datei in Ihrem bevorzugten Editor und bearbeiten Sie die Details und schreiben Sie etwas für Ihren ersten Beitrag.
+++
title = 'Erster Beitrag'
date = 2023-10-30T03:32:38Z
draft = true
+++
## Einführung
Dies ist fetter Text, und dies ist *betonter* Text.
Besuchen Sie die [Howtoforge](https://www.howtoforge.com) Website!
Entfernen Sie draft = true, sobald Sie mit dem Schreiben des Beitrags fertig sind. Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Um eine neue Seite zu erstellen, geben Sie den folgenden Befehl ein.
$ sudo hugo new about.md
Dies erstellt eine neue Seite mit dem Titel Über im Ordner content. Öffnen Sie sie und bearbeiten Sie sie auf die gleiche Weise wie den Beitrag.
Thema konfigurieren
Vor der Veröffentlichung müssen wir einige Änderungen am Thema vornehmen, um die Menüleiste anzuzeigen. Diese Änderungen werden in der Konfigurationsdatei von Hugo und nicht in der Konfiguration des Themas vorgenommen.
Wechseln Sie in das Hugo-Verzeichnis.
$ cd /var/www/html/hugo/howtoforge
Öffnen Sie die Datei hugo.toml zur Bearbeitung.
$ sudo nano hugo.toml
Fügen Sie den folgenden Code am Ende ein.
author = "Navjot Singh"
copyright = "Copyright © 2023, Navjot Singh; alle Rechte vorbehalten."
paginate = 3
enableInlineShortcodes = true
# benötigt, um rohes HTML zu rendern (z.B. , , , )
[markup]
[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true
[menu]
[[menu.main]]
identifier = "about"
name = "Über"
url = "/about/"
weight = 10
[taxonomies]
category = "Kategorien"
tag = "Tags"
series = "Serien"
Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Dies sind einige grundlegende Einstellungen, um die Website funktionsfähig zu machen. Hier haben wir die Website so konfiguriert, dass sie 3 Beiträge pro Seite anzeigt, die Über-Seite als Menüpunkt anzeigt und Kategorien, Tags und Beitragsserien einrichtet. Wir haben auch Hugos Inline-Shortcodes aktiviert und rohes HTML für den Goldmark-Markdown-Renderer aktiviert. Sie können dies deaktivieren, wenn Sie kein rohes HTML in Ihren Beiträgen einbetten möchten.
Schritt 8 - Hugo-Website veröffentlichen
Um die Website zu erstellen und zu veröffentlichen, führen Sie einfach den folgenden Befehl aus.
$ sudo hugo
Sie erhalten eine ähnliche Ausgabe.
Beginne mit dem Erstellen von Websites …
hugo v0.119.0-b84644c008e0dc2c4b67bd69cccf87a41a03937e+extended linux/amd64 BuildDate=2023-09-24T15:20:17Z VendorInfo=gohugoio
| DE
-------------------+-----
Seiten | 7
Paginierungsseiten | 0
Nicht-Seiten-Dateien | 0
Statische Dateien | 11
Verarbeitete Bilder | 0
Aliase | 3
Sitemaps | 1
Bereinigt | 0
Insgesamt in 46 ms
Dies erstellt und veröffentlicht die statische Hugo-Website im public-Ordner. Dies sind die Dateien, die wir in der Nginx-Konfiguration angeben müssen, damit die Website funktioniert. Führen Sie den Befehl erneut aus, nachdem Sie Änderungen vorgenommen haben, und Ihre Website wird in kürzester Zeit aktualisiert.
Schritt 9 - SSL installieren
Bevor wir fortfahren, müssen wir das Certbot-Tool installieren und ein SSL-Zertifikat für unsere Domain installieren.
Um Certbot zu installieren, verwenden wir den Snapd-Paketinstaller. Snapd enthält immer die neueste stabile Version von Certbot, und Sie sollten dies verwenden.
Das Snapd-Tool benötigt das Epel-Repository, um zu funktionieren.
$ sudo dnf install epel-release -y
Wir werden Snapd verwenden, um Certbot zu installieren. Installieren Sie Snapd.
$ sudo dnf install snapd -y
Aktivieren und starten Sie den Snap-Dienst.
$ sudo systemctl enable snapd.socket --now
Erstellen Sie die erforderlichen Links, damit Snapd funktioniert.
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Stellen Sie sicher, dass Ihre Version von Snapd auf dem neuesten Stand ist. Warten Sie ein paar Sekunden, bevor Sie die folgenden Befehle ausführen.
$ sudo snap install core
$ sudo snap refresh core
Installieren Sie Certbot.
$ sudo snap install --classic certbot
Verwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem Sie einen symbolischen Link zum Verzeichnis /usr/bin erstellen.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Überprüfen Sie die Installation.
$ certbot --version
certbot 2.7.3
Generieren Sie ein SSL-Zertifikat.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d hugo.example.com
Der obige Befehl lädt ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/hugo.example.com auf Ihrem Server herunter.
Generieren Sie ein Diffie-Hellman-Gruppe-Zertifikat.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Überprüfen Sie den Zeitplan des Certbot-Erneuerungsdienstes.
$ sudo systemctl list-timers
Sie finden snap.certbot.renew.service als einen der geplanten Dienste.
NÄCHSTER LINKS LETZTER VERGANGEN EINHEIT AKTIVIERT
Wed 2023-10-29 10:00:17 UTC 57min links Wed 2023-10-18 08:49:39 UTC 12min ago dnf-makecache.timer dnf-makecache.service
Wed 2023-10-29 12:18:00 UTC 3h 15min links - - snap.certbot.renew.timer snap.certbot.renew.service
Thu 2023-10-30 00:00:00 UTC 14h links Wed 2023-10-18 08:10:08 UTC 52min ago logrotate.timer logrotate.service
Führen Sie einen Testlauf des Prozesses durch, um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert.
$ sudo certbot renew --dry-run
Wenn Sie keine Fehler sehen, sind Sie bereit. Ihr Zertifikat wird automatisch erneuert.
Schritt 10 - Nginx konfigurieren
Erstellen und öffnen Sie die Datei /etc/nginx/conf.d/hugo.conf zur Bearbeitung.
$ sudo nano /etc/nginx/conf.d/hugo.conf
Fügen Sie den folgenden Code in die hugo.conf-Datei ein. Ersetzen Sie alle Vorkommen von hugo.example.com durch Ihre Domain.
## HTTPS erzwingen
server {
listen 80;
listen [::]:80;
server_name hugo.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name hugo.example.com;
root /home/navjot/hugo/howtoforge/public;
index index.html
access_log /var/log/nginx/hugo.access.log;
error_log /var/log/nginx/hugo.error.log;
client_max_body_size 20m;
gzip on;
http2_push_preload on; # HTTP/2 Server Push aktivieren
ssl_certificate /etc/letsencrypt/live/hugo.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hugo.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/hugo.example.com/chain.pem;
ssl_session_timeout 1d;
# Aktivieren Sie TLS-Versionen (TLSv1.3 ist für das kommende HTTP/3 QUIC erforderlich).
ssl_protocols TLSv1.2 TLSv1.3;
# Aktivieren Sie TLSv1.3's 0-RTT. Verwenden Sie $ssl_early_data, wenn Sie einen Reverse-Proxy verwenden, um
# Wiederholungsangriffe zu verhindern.
#
# @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
ssl_early_data on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
ssl_prefer_server_ciphers on;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# OCSP Stapling ---
# Holen Sie sich OCSP-Datensätze von der URL in ssl_certificate und cachen Sie sie
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
add_header X-Early-Data $tls1_3_early_data;
location / {
try_files $uri $uri/ =404;
}
# Medien
location ~* \\.\(?:jpg|jpeg|gif|png|ico|cur|gz|svg|mp4|ogg|ogv|webm|htc)$ {
expires 30d;
}
# CSS und Js
location ~* \\.\(css|js)$ {
expires 7d;
}
}
# Dieser Block ist nützlich für die Fehlersuche von TLS v1.3. Bitte entfernen Sie dies
# und verwenden Sie die `$ssl_early_data`-Variable, die von NGINX direkt bereitgestellt wird, wenn Sie
# dies wünschen.
map $ssl_early_data $tls1_3_early_data {
"~." $ssl_early_data;
default "";
}
Die obige Konfiguration leitet alle HTTP-Anfragen auf HTTPS um und dient als Proxy für den Hugo-Dienst, um ihn über Ihre Domain bereitzustellen.
Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Öffnen Sie die Datei /etc/nginx/nginx.conf zur Bearbeitung.
$ sudo nano /etc/nginx/nginx.conf
Fügen Sie die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; hinzu.
server_names_hash_bucket_size 64;
Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Überprüfen Sie Ihre Nginx-Konfiguration.
$ sudo nginx -t
Wenn Sie keine Fehler sehen, sind Sie bereit. Laden Sie den Nginx-Server neu.
$ sudo systemctl reload nginx
Schritt 11 - SELinux konfigurieren
Ändern Sie den Sicherheitskontext der Datei für OpenEMR.
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/hugo/howtoforge/public(/.*)?"
Wenden Sie die Richtlinie an.
$ sudo restorecon -Rv /var/www/html/hugo/howtoforge/public/
Erlauben Sie Nginx, eine Verbindung zum Netzwerk herzustellen.
$ sudo setsebool -P httpd_can_network_connect 1
Schritt 12 - Die Website ausführen
Jetzt können Sie Ihre Installation überprüfen, indem Sie https://hugo.example.com in Ihrem Webbrowser öffnen. Sie erhalten die folgende Seite, die eine erfolgreiche Installation anzeigt.

Schritt 13 - Hugo aktualisieren
Die Aktualisierung von Hugo ist ziemlich einfach. Laden Sie die neueste Version von Hugos GitHub-Seite herunter.
$ cd /var/www/html/hugo
$ sudo wget https://github.com/gohugoio/hugo/releases/download/v0.119.0/hugo_extended_0.119.0_linux-amd64.tar.gz
Entpacken Sie das Archiv.
$ sudo tar -xzf hugo_extended_0.119.0_linux-amd64.tar.gz
Und ersetzen Sie die Hugo-Binärdatei durch die neueste Version. Das -f-Flag überschreibt die Binärdatei ohne Aufforderung. Sie können stattdessen das -i-Flag verwenden, wenn Sie eine Aufforderung zum Überschreiben wünschen.
$ sudo mv -f hugo /usr/bin/hugo
Das ist alles. Die Aktualisierung von Hugo ist so einfach wie das Ersetzen der Binärdatei.
Schritt 14 - Backup und Wiederherstellung von Hugo
Um ein Backup zu erstellen, erstellen Sie ein Archiv des gesamten Hugo-Ordners.
$ cd /var/www/html/hugo
$ sudo tar -czvf howtoforge.tar.gz howtoforge/
Um es auf einem neuen Server wiederherzustellen, extrahieren Sie das Archiv und installieren Sie die Binärdatei, und Sie sind bereit.
$ cd /var/www/html/hugo
$ sudo tar -xzf howtoforge.tar.gz
Fazit
Damit endet unser Tutorial, wie man den Hugo-Generator für statische Websites auf Ihrem Rocky Linux 9-Server mit Nginx einrichtet. Wenn Sie Fragen oder Feedback haben, teilen Sie diese bitte in den Kommentaren mit.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.