Der; Subst. mask.

Womit ist diese Seite gebaut?

07.03.2021
Lesezeit: ~7 Minuten (1449 Wörter)

Dieser Blog liegt in einem öffentlichen Repository auf GitHub – warum nicht den ganzen Code zugänglich machen, wenn die Website sowieso öffentlich ist.

Als Static Site Generator benutze ich hugo und als Theme kommt varkais „Zozo“ Theme zum Einsatz. Hugo ist auf allen großen Plattformen verfügbar, ich nutze selbst einen Mac.

Wer mehr über die Vorzüge von Websites ohne Wordpress und Co. (also ohne Sicherheitslücken, ohne aufgeblähte Codebase und unüberschaubar viele Plugins) erfahren möchte, dem sei dieses Youtube-Video vom Gründer von netlify ans Herz gelegt.

netlify kommt als Hoster zum Einsatz, dort wird auch SSL und DNS gemanagt.

Es folgt ein Tutorial für absolute Neulinge, wie ich es auch noch bin.

Inhaltsverzeichnis

Wir benötigen

  • ein Git-Repository (hier GitHub, es funktioniert aber auch mit GitLab oder Bitbucket)
  • git-CLI
  • einen netlify-Account
  • einen Code-Editor, wie Atom oder VSCode
  • hugo
  • auf dem Mac zusätzlich Homebrew
  • eine Domain – ich besorge diese über INWX

Installation

Zunächst laden wir uns den Code-Editor (für das tutorial hier Atom) runter und installieren hugo, das geht auf dem Mac am besten mittels Homebrew.

Also zunächste Homebrew - wir wechseln ins Terminal und geben folgende Zeile ohne das vorangestellte $-Symbol ein – das $ signalisiert nur, dass die Kommandos mit normalen Benutzerrechten ausgeführt werden:

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Über folgende Zeile installieren wir hugo – hugo steht danach in unserem $PATH zur Verfügung.

$ brew install hugo

Jetzt installieren wir uns noch git für die Kommandozeile – das geht am einfachsten, indem wir uns die Installationsdatei für den Mac einfach runterladen und installieren.

Git-Repository

Jetzt müssen wir noch die Voraussetzungen schaffen, dass netlify unsere Seite hosten kann. netlify unterstützt zwar auch das manuelle Hochladen von Seiten, der Workflow über GitHub ist aber deutlich eleganter.

Wir loggen uns auf GitHub ein und generieren ein neues Repository, indem wir links auf den grünen Button „New“ klicken:

Jetzt geben wir dem neuen Repository einen sinnvollen Namen, setzen noch den Haken bei README und klicken dann unten auf den Button „Create repository“:

Im nächsten Screen können wir mit Klick auf den grünen Code-Button die URL für HTTPS sehen. Wir kopieren uns diese https://github.com/js32/demo.git:

Nun können wir wieder ins Terminal zurückwechseln und uns mittels folgendem Befehl einen neuen Ordner in unserem Benutzerverzeichnis erstellen – ich nennen ihn src für source/Quelle:

$ mkdir ~/src

Jetzt wechseln wir in den neu erstellten Ordner mittels

$ cd ~/src

und clonen das Repository, das wir vorher auf GitHub erstellt haben mit der kopierten URL (ihr setzt hier natürlich eure URL ein):

$ git clone https://github.com/js32/demo.git

Nun muss noch Benutzername und Passwort eingegeben werden und dann lädt das Repository runter. Wir prüfen, ob das Repo ordentlich runtergeladen wurde:

$ ls -alh                                                  
total 0
drwxr-xr-x   3 play  staff    96B 20 Mär 17:05 .
drwxr-xr-x@ 70 play  staff   2,2K 20 Mär 17:05 ..
drwxr-xr-x   4 play  staff   128B 20 Mär 17:05 demo

Eine neue hugo-Seite erstellen

Nun können wir ins Verzeichnis demo wechseln und eine neue Hugo-Seite erstellen:

$ cd ~/src/demo
$ hugo new site --force .

Ein erneutes

$ ls -alh

sollte uns folgendes zeigen:

total 16
drwxr-xr-x  11 play  staff   352B 20 Mär 17:08 .
drwxr-xr-x   3 play  staff    96B 20 Mär 17:05 ..
drwxr-xr-x  12 play  staff   384B 20 Mär 17:08 .git
-rw-r--r--   1 play  staff     6B 20 Mär 17:05 README.md
drwxr-xr-x   3 play  staff    96B 20 Mär 17:08 archetypes
-rw-r--r--   1 play  staff    82B 20 Mär 17:08 config.toml
drwxr-xr-x   2 play  staff    64B 20 Mär 17:08 content
drwxr-xr-x   2 play  staff    64B 20 Mär 17:08 data
drwxr-xr-x   2 play  staff    64B 20 Mär 17:08 layouts
drwxr-xr-x   2 play  staff    64B 20 Mär 17:08 static
drwxr-xr-x   2 play  staff    64B 20 Mär 17:08 themes

Gratulation – hugo ist installiert und unsere erste Seite kann konfiguriert und mit einem Theme ausgestattet werden!

Ein Theme installieren

Mittels

$ git clone https://github.com/varkai/hugo-theme-zozo themes/zozo

installieren wir den hier verwendeten Theme im Ordner themes/zozo. Es gibt noch viele anderen interessante Themes, diese werden analog installiert.

Beispiel-Website verwenden

Im Ordner ~/src/demo/themes/zozo/exampleSite befindet sich ein Beispiel-Inhalt einer Website. Wir können den gesamten Inhalt dieses Ordners im Finder in den Ordner demo kopieren und dabei die bestehenden Dateien und Ordner überschreiben.

Wichtig: Wir müssen noch in der config.toml Datei in der ersten Zeile die Variable baseURL von baseURL = "http://localhost:1313/" auf baseURL = "/" ändern. Wenn diese URL falsch gesetzt ist, wird die Seite später nicht richtig gebaut.

hugo server starten

Wir können jetzt den Hugo-Server starten und uns unsere Website im Browser unter localhost:1313 ansehen:

$ hugo server -D

netlify mit git verbinden

Sofern noch nicht geschehen, machen wir uns einen Account bei netlify, am einfachsten ist es, wenn wir uns mit unserem GitHub-Account einloggen.

Über „New site from Git“ können wir netlify Zugriff auf unsere Repository gewähren. Sobald er eingerichtet ist, lauscht netlify auf Veränderungen im Ordner und wird die Seite bauen, wenn wir Commits in das repository pushen.

Wir müssen noch eine weitere Datei im Ordner demo erzeugen:

$ touch netlify.toml

und fügen folgenden Inhalt ein:

[build]
publish = "public"
command = "hugo --gc --minify"

[context.production.environment]
HUGO_VERSION = "0.81.0"
HUGO_ENV = "production"
HUGO_ENABLEGITINFO = "true" 

[context.split1]
command = "hugo --gc --minify --enableGitInfo"

[context.split1.environment]
HUGO_VERSION = "0.80.0"
HUGO_ENV = "production"

[context.deploy-preview]
command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL"

[context.deploy-preview.environment]
HUGO_VERSION = "0.80.0"

[context.branch-deploy]
command = "hugo --gc --minify -b $DEPLOY_PRIME_URL"

[context.branch-deploy.environment]
HUGO_VERSION = "0.80.0"

[context.next.environment]
HUGO_ENABLEGITINFO = "true"

Repository updaten

Zunächst fügen wir alle neuen Dateien zum Index hinzu:

$ git add *

Anschließend machen wir unser erstes Commit:

$ git commit -a -m "adding theme"

Jetzt pushen wir das Commit zu GitHub:

$ git push

netlify sollte nun anfangen, die Seit zu bauen und sie unter der zufällig generierten URL veröffentlichen. Jetzt kann der Inhalt der hugo-Seite beliebig angepasst werden, netlify wird nach jedem Commit eine neue Variante bauen und veröffentlichen. Ich rate dennoch, die Website lokal im Browser zu testen, denn netlify bietet im kostenlosen Plan nur begrenzte Anzahl an Build-Minuten.