Browse Source

Subdomain enabled

master
Chris 2 years ago
parent
commit
8717ff83a7
  1. 135
      README.md
  2. 2
      admin/generate.sh
  3. 4
      admin/post-receive
  4. 2
      config.toml

135
README.md

@ -16,36 +16,44 @@ Voraussetzungen:
Die Installation kann in einem beliebigen Verzeichnis erfolgen, wir nehmen ~/kred und installieren dort das aktuelle Hugo-Release und das kollegen-hugo/Repository, jeweils in ein Unterverzeichnis:
>$ mkdir ~/kred
>$ cd ~/kred
>$ mkdir hugo
```console
$ mkdir ~/kred
$ cd ~/kred
$ mkdir hugo
```
### Hugo-Release installieren
Das aktuelles hugo-Release für seine Zielplattform findet man auf gitHub: [https://github.com/gohugoio/hugo/releases/latest] (die extended Version wird nicht benötigt).
Wenn das aktuelle Hugo-Relase 0.78.1 ist, gilt für Linux:
>$ wget https://github.com/gohugoio/hugo/releases/download/v0.78.1/hugo_0.78.1_Linux-64bit.tar.gz
> ...
> hugo_0.78.1_Linux-64bit.tar. 100%[============================================>] 13,31M 1,54MB/s in 25s
> 2020-10-13 21:09:43 (547 KB/s) - »hugo_0.78.1_Linux-64bit.tar.gz« gespeichert [13953675/13953675]
>
>$ tar -xvf hugo_0.78.1_Linux-64bit.tar.gz --directory hugo
>$ rm hugo_0.78.1_Linux-64bit.tar.gz
```console
$ wget https://github.com/gohugoio/hugo/releases/download/v0.78.1/hugo_0.78.1_Linux-64bit.tar.gz
...
hugo_0.78.1_Linux-64bit.tar. 100%[============================================>] 13,31M 1,54MB/s in 25s
2020-10-13 21:09:43 (547 KB/s) - »hugo_0.78.1_Linux-64bit.tar.gz« gespeichert [13953675/13953675]
$ tar -xvf hugo_0.78.1_Linux-64bit.tar.gz --directory hugo
$ rm hugo_0.78.1_Linux-64bit.tar.gz
```
Nach erfolgreicher Installation sollte Hugo seine Version ausgeben können:
>$ hugo/hugo version
>Hugo Static Site Generator v0.78.1-347F2DE6 linux/amd64 BuildDate: 2020-11-05T09:39:06Z
```console
$ hugo/hugo version
Hugo Static Site Generator v0.78.1-347F2DE6 linux/amd64 BuildDate: 2020-11-05T09:39:06Z
```
### Web-Repository holen
Das Repository wird geklont und installiert sich im Unterverzeichnis:
>$ git clone --recurse-submodules https://kollegen.uber.space/gitea/kollegenrunde/kollegen-hugo.git
>$ ls kollegen-hugo
> archetypes config.toml data layouts LICENSE README.md resources static themes
```console
$ git clone --recurse-submodules https://kollegen.uber.space/gitea/kollegenrunde/kollegen-hugo.git
$ ls kollegen-hugo
archetypes config.toml data layouts LICENSE README.md resources static themes
```
Als Theme wird Ananke verwendet (wurde einmalig als Submodul eingebunden mit 'git submodule add https://github.com/budparr/gohugo-theme-ananke.git themes/ananke').
@ -54,7 +62,9 @@ Als Theme wird Ananke verwendet (wurde einmalig als Submodul eingebunden mit 'gi
Für die Post-Bearbeitung und ggf. auch zur Web-Entwicklung benötigt man noch den Content. Dieses Repository wird neben das Web-Repository installiert:
>$ git clone https://kollegen.uber.space/gitea/kollegenrunde/kollegen-posts.git
```console
$ git clone https://kollegen.uber.space/gitea/kollegenrunde/kollegen-posts.git
```
Damit ist das Setup abgeschlossen.
@ -62,52 +72,101 @@ Damit ist das Setup abgeschlossen.
Die Pflege des Servers erfolgt über ssh:
>$ ssh kollegen@despina.uberspace.de
>Password:
>...
>[kollegen@despina ~]$
```console
$ ssh kollegen@despina.uberspace.de
Password:
...
[kollegen@despina ~]$
```
### Subdomain
Die Seite soll unter der Subdomain `kollegenrunde.kollegen.uber.space` erreichbar sein (und nicht unter kollegen.uber.space/kollegenrunde). Der Grund liegt darin, dass Hugo problemlos generiert, wenn seine Base-URL kein Unterverzeichnis hat.
Einrichten der Subdomain:
```console
[kollegen@despina ~]$ uberspace web domain add kollegenrunde.kollegen.uber.space
```
Der Webcontent für diese Subdomain muss in einem gleichnamigen Verzeichnis neben dem html-Verzeichnis liegen. Dieses wird per Skript `generate.sh` angelegt. Zum einfacheren Zugriff wird einmalig das leere Verzeichnis angelegt und ein symbolischer Link im Home-Verzeichnis erstellt:
```console
[kollegen@despina ~]$ mkdir /var/www/virtual/kollegen/kollegenrunde.kollegen.uber.space
[kollegen@despina ~]$ ln -s /var/www/virtual/kollegen/kollegenrunde.kollegen.uber.space ~/kollegenrunde.kollegen.uber.space
```
### Gitea
**Gitea** wird im im Lab beschrieben installiert: (https://lab.uberspace.de/guide_gitea.html). Einzige Abweichung ist die Root-Url in der app.ini:
Wird im im Lab beschrieben installiert: (https://lab.uberspace.de/guide_gitea.html). Einzige Abweichung ist die Root-Url in der app.ini:
>[kollegen@despina ~]$ cat gitea/custom/conf/app.ini | grep ROOT_URL
> ROOT_URL = https://%(DOMAIN)s/gitea/
```console
[kollegen@despina ~]$ cat gitea/custom/conf/app.ini | grep ROOT_URL
ROOT_URL = https://%(DOMAIN)s/gitea/
```
Im Gitea ist die Organisation 'kollegenrunde' mit den beiden Repositories kollegen-hugo und kollegen-posts anzulegen.
**Hugo** wird ebenfalls wie im Lab beschrieben installiert: (https://lab.uberspace.de/guide_hugo.html). Es wird lediglich ~/bin/hugo benötigt.
>**Hinweis**
>Hugo wird nicht nur von diesem Projekt genutzt.
### Hugo
Wird ebenfalls wie im Lab beschrieben installiert[^hugoguide]. Es wird lediglich ~/bin/hugo benötigt.
[^hugoguide]: https://lab.uberspace.de/guide_hugo.html
```console
[kollegen@despina ~]$ wget https://github.com/gohugoio/hugo/releases/download/v0.117.0/hugo_0.117.0_Linux-64bit.tar.gz
[kollegen@despina ~]$ tar -xvf hugo_0.117.0_Linux-64bit.tar.gz hugo
[kollegen@despina ~]$ rm hugo_0.117.0_Linux-64bit.tar.gz
[kollegen@despina ~]$ mv hugo ~/bin/
[kollegen@despina ~]$ hugo version
hugo v0.117.0-b2f0696cad918fb61420a6aff173eb36662b406e linux/amd64 BuildDate=2023-08-07T12:49:48Z VendorInfo=gohugoio
```
>**🛈 Hinweis**
>Hugo wird auf dem Server für die Ausführung der Git-Hooks benötigt.
>[kollegen@despina ~]$ ~/bin/hugo version
Hugo Static Site Generator v0.74.3-DA0437B4 linux/amd64 BuildDate: 2020-07-23T16:22:34Z
Das Skript **generate.sh** zum automatischen Generieren beim git-update muss im Verzeichnis 'kollegengen' liegen. Das Skript ist aus dem Verzeichnis 'admin' des Repositories kollegen-hugo zu kopieren.
>[kollegen@despina ~]$ mkdir ~/kollegengen
>[kollegen@despina ~]$ git clone https://kollegen.uber.space/gitea/kollegenrunde/kollegen-hugo.git ~/kollegengen/kollegen-hugo
>[kollegen@despina ~]$ cp ~/kollegengen/kollegen-hugo/admin/generate.sh ~/kollegengen/
```console
[kollegen@despina ~]$ mkdir ~/kollegengen
[kollegen@despina ~]$ git clone https://kollegen.uber.space/gitea/kollegenrunde/kollegen-hugo.git ~/kollegengen/kollegen-hugo
[kollegen@despina ~]$ cp ~/kollegengen/kollegen-hugo/admin/generate.sh ~/kollegengen/
```
Zur Erfolgskontrolle kann die Website nun generiert und gepublished werden:
>[kollegen@despina ~]$ ~/kollegengen/generate.sh
```console
[kollegen@despina ~]$ ~/kollegengen/generate.sh
```
Es sollte die Ausgabe "Ready, Blog created in /var/www/virtual/kollegen/html/kollegenrunde!" erfolgen.
### Git-Hook einrichten ###
Per **Gitea-Hook** wird das Skript generate.sh nun in das git-update-Event der beiden Repositories eingebunden. Damit wird die Website mit jeden Push neu erzeugt.
Per Hook-Skript `post-receive` wird das Skript `generate.sh` nun in das git-update-Event der beiden Repositories eingebunden. Damit wird die Website mit jeden Push neu erzeugt.
Das Hook Skript ist für beide Repositories das gleiche und wird im admin-Verzeichnis von kollegen-hugo gepfelgt. Die Aktivierung erfolgt auf dem Server.
> **🛈 Hinweis**
> Die Hooks sollte ebenfalls in der Gitea-Webkonsole von kollegen-posts[^posts-hooks] bzw. kollegen-hugo[^hugo-hooks] angezeigt werden, was aber nicht der Fall ist
[^posts-hooks]: https://kollegen.uber.space/gitea/kollegenrunde/kollegen-posts/settings/hooks
[^hugo-hooks]: https://kollegen.uber.space/gitea/kollegenrunde/kollegen-hugo/settings/hooks
Das Hook Skript ist für beide Repositories das gleiche und wird ebenfalls im admin-Verzeichnis von kollegen-hugo gepfelgt. Die Aktivierung kann entweder mit der Gitea-Webkonsole oder auf dem Server erfolgen.
***Serverseitig*** installiert man das Script durch kopieren in die Hooks (darauf achten, dass die Skripte ausführbar sind - 0775):
>[kollegen@despina ~]$ cp ~/kollegengen/kollegen-hugo/admin/post-receive ~/gitea-repositories/kollegenrunde/kollegen-hugo.git/hooks/post-receive.d/
>[kollegen@despina ~]$ cp ~/kollegengen/kollegen-hugo/admin/post-receive ~/gitea-repositories/kollegenrunde/kollegen-posts.git/hooks/post-receive.d/
```console
[kollegen@despina ~]$ cp ~/kollegengen/kollegen-hugo/admin/post-receive ~/gitea-repositories/kollegenrunde/kollegen-hugo.git/hooks/post-receive.d/
[kollegen@despina ~]$ cp ~/kollegengen/kollegen-hugo/admin/post-receive ~/gitea-repositories/kollegenrunde/kollegen-posts.git/hooks/post-receive.d/
```
Hinweis: Das Hook-Skript starten das generate.sh mit 'env -i' in einer neuen Umgebung, damit nicht GIT_DIR gesetzt ist (vom ausführenden git). Ansonsten scheitert der pull innerhalb der Skripts.
In der Web-Konsole von Gitea kann man nun sehen, dass die post-receive-Hooks aktiv sind (grüner Punkt), s.
(https://kollegen.uber.space/gitea/kollegenrunde/kollegen-hugo/settings/hooks/git) bzw. (https://kollegen.uber.space/gitea/kollegenrunde/kollegen-posts/settings/hooks/git).
In der Web-Konsole von Gitea sollte man nun sehen, dass die post-receive-Hooks aktiv sind (grüner Punkt), was aber leider nicht funktioniert :o(
# Backup and Restore

2
admin/generate.sh

@ -11,7 +11,7 @@ HUGO=~/bin/hugo
#HUGO=~/kred/hugo/hugo
# Path to output destination on uberspace and local (for testing). Folder must exists.
PUBLIC_WWW=/var/www/virtual/$USER/html/kollegenrunde
PUBLIC_WWW=/var/www/virtual/$USER/kollegenrunde.kollegen.uber.space
#PUBLIC_WWW=~/hugotest/html/kollegenrunde
# Working dir: here is the script and git's working dirs

4
admin/post-receive

@ -1,2 +1,6 @@
#!/bin/sh
# Git-hook to generate Hugo content. To install the hook for the
# event post-receive, this file must be copied into the git's hook
# sub directory: /hooks/post-receive.d/
# Take care, not to overwrite an already existing hook script!
~/kollegengen/generate.sh

2
config.toml

@ -1,5 +1,5 @@
title = "Kollegenrunde"
baseURL = "https://kollegen.uber.space/kollegenrunde"
baseURL = "https://kollegenrunde.kollegen.uber.space/"
languageCode = "de"
theme = "ananke"

Loading…
Cancel
Save