Home » Blog

Hugo Webseiten automatisch per FTP hochladen

<time datetime='2023-05-24 00:00:00 +0000 UTC'>May 24, 2023</time>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;Michael Bäcker

Wie kann man relativ einfach Hugo Webseiten per FTP hochladen

hugo autoinstall bash

Vorbereitung

Hugo Website erstellen

Mit nur wenigen Befehlen kann man eine Hugo Webseite erstellen, sofern man den Befehl Hugo bereits installiert hat

hugo new site quickstart
cd quickstart
git init
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke themes/ananke
echo "theme = 'ananke'" >> hugo.toml

Webseite testen

hugo server

Der interne Hugo Webserver wird gestartet und folgende Log Zeilen erscheinen

Start building sites …
hugo v0.111.3+extended linux/amd64 BuildDate=unknown

                   | EN
-------------------+------
  Pages            | 104
  Paginator pages  |   5
  Non-page files   |   2
  Static files     |  23
  Processed images |   0
  Aliases          |  32
  Sitemaps         |   1
  Cleaned          |   0

Built in 62 ms
Watching for changes in /home/michael/Entwicklung/bakermanlp.de/{archetypes,assets,content,data,layouts,static,themes}
Watching for config changes in /home/michael/Entwicklung/bakermanlp.de/config.yml
Environment: "development"
Serving pages from memory
Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)

Im Browser http://localhost:1313/ aufrufen und seine neue Seite geniesen :)

Webseite mit Git Hooks veröffentlichen

Die Datei .git/hooks/post-commit anlegen mit folgendem Inhalt

#!/bin/bash
HOST='FTBHOST
USER='FTBUSER
PASS='FTBPASSWORD
TARGETFOLDER='/public_html/bakermanlp.de'
SOURCEFOLDER='/home/michael/Entwicklung/bakermanlp.de/public'

cd $SOURCEFOLDER/.. && hugo

lftp -f "
open $HOST
user $USER $PASS
lcd $SOURCEFOLDER
mirror --reverse --delete --verbose --exclude=backup/ --exclude=.htaccess $SOURCEFOLDER $TARGETFOLDER
bye
"

Dieses Skript erzeugt die Webserver Dateien mit dem Befehl hugo und lädt diese anschliessend mit ftb zum Webserver hoch.

Da wir das Skript im .git/hooks Ordner angelegt haben und wollen, dass das Skript läuft, wenn wir einen "git commit" ausführen, müssen wir dem noch die Ausführungsrechte geben

chmod +x .git/hooks/post-commit

Jedes mal, wenn wir nun "git commit" ausführen, wird im Anschluss (post-commit) das Skript ausgeführt und automatisch der aktualisierte public Ordner auf euren Webspace per FTP hochgeladen.

Diese Methode kann für alle möglichen "Hochladeoptionen" angepasst werden.