## Ausgangspunkt - Ubuntu 18.04 Server - Python3 und Pip3 ``` apt install python3 python3-pip ``` ### mkdocs installieren ``` pip3 install mkdocs ``` Arbeitsverzeichnis anlegen ``` mkdir /opt/mkdocs cd /opt/mkdocs ``` neue Vorlage anlegen ``` mkdocs new meine-doku ``` Seite testen (über internen Server) Standardmäßig hört der interne Server nur auf "localhos". Wenn man die Seite von einem anderen Rechner aus testen will, muss man mit dem Parameter "-a 0.0.0.0:8000" starten ``` mkdocs serve -a 0.0.0.0:8000 ``` statische Seite erzeugen (mit Parameter -d wird das Zielverzeichnis übergeben) ``` mkdocs build -d /var/www/html/meine-doku ``` ### Material-Theme für mkdocs ``` pip3 install mkdocs-material ``` Datei mkdocs.yml anpassen ``` theme: name: material language: de favicon: ../icon.png logo: ../logo.png font: false custom_dir: overrides ``` Layout anpassen === "/opt/mkdocs/meine-doku/overrides/partials/footer.html" ``` ... ... ``` ### Logo und Icon über Apache umleiten === "/etc/apache2/conf-available/custom.conf" ``` # Jugend- und Gemeindezntrum ENERGIE # Evangelisch-Freikirchliche Gemeinde Bad Lausick # Anpassungen für alle Webseiten # Impressum / Datenschutzerklärung Alias "/impressum.html" "/var/www/html/impressum.html" Alias "/datenschutz.html" "/var/www/html/datenschutz.html" Alias "/logo.png" "/var/www/html/logo.svg" Alias "/icon.ico" "/var/www/html/logo.svg" RewriteEngine off ProxyPass ! RewriteEngine off ProxyPass ! RewriteEngine off ProxyPass ! RewriteEngine off ProxyPass ! ``` Die Deaktivierung von "Rewrite" und "ProxyPass" ist nur bei entsprechend verwendeten Modulen notwendig Konfiguration aktivieren ``` a2enconf custom.conf systemctl reload apache2 ``` ### Markdown-Erweiterungen aktivieren Die Erweiterungen werden in der Datei mkdocs.yml aktiviert #### Abkürzungen ``` markdown_extensions: - abbr ``` Abkürzungen können an irgendeiner Stelle im Dokument definiert werden nach dem Prinzip: ``` *[EFG]: Evangelisch-Freikirchliche Gemeinde ``` ...und können dann im laufenden Text verwendet werden. z.B.: EFG Bad Lausick *[EFG]: Evangelisch-Freikirchliche Gemeinde #### Hinweise ``` markdown_extensions: - admonition ``` Nutzbare Typen: "attention", "caution", "danger", "error", "bug", "example", "note", "abstract", "info", "hint", "check", "faq", "quote" ``` !!! attention Achtung Achtung! ``` !!! attention Achtung Achtung! !!! caution Vorsicht! !!! danger Gefahr! !!! error Fehler! !!! bug Fehler! !!! example Beispiel. !!! note Notiz! !!! abstract Zusammenfassung. !!! info Information. !!! hint Hinweis! !!! check Fertig! !!! faq Frage? !!! quote Zitat #### Details (leider keine Vorschau in VS Code) ``` markdown_extensions: - pymdownx.details ``` ??? css-klasse "Überschrift" Hier kommt der Inhalt rein. ???+ note "geöffnet" ??? danger "eingebettete Details!" Noch mehr Inhalt. #### Quellcode einbinden ``` markdown_extensions: - pymdownx.highlight - pymdownx.superfences - pymdownx.inlinehilite - pymdownx.keys ``` ``` ``` python linenums="1" def bubble_sort(items): for i in range(len(items)): for j in range(len(items) - 1 - i): if items[j] > items[j + 1]: items[j], items[j + 1] = items[j + 1], items[j] ``` ``` ``` python linenums="1" def bubble_sort(items): for i in range(len(items)): for j in range(len(items) - 1 - i): if items[j] > items[j + 1]: items[j], items[j + 1] = items[j + 1], items[j] ``` ``` ``` python hl_lines="2 3" def bubble_sort(items): for i in range(len(items)): for j in range(len(items) - 1 - i): if items[j] > items[j + 1]: items[j], items[j + 1] = items[j + 1], items[j] ``` ``` ``` python hl_lines="2 3" def bubble_sort(items): for i in range(len(items)): for j in range(len(items) - 1 - i): if items[j] > items[j + 1]: items[j], items[j + 1] = items[j + 1], items[j] ``` ``` ++ctrl+alt+del++ ``` ++ctrl+alt+del++ #### Registerkarten ``` markdown_extensions: - pymdownx.tabbed ``` ``` === "nicht nummerierte Liste" * punkt 1 * punkt 2 * punkt 3 === "nummerierte Liste" 1. punkt 1 2. punkt 2 3. punkt 3 ``` === "nicht nummerierte Liste" * punkt 1 * punkt 2 * punkt 3 === "nummerierte Liste" 1. punkt 1 2. punkt 2 3. punkt 3 ### Plugins #### Benutzerdefinierte Variablen ``` pip3 install mkdocs-user-defined-values ``` in "mkdocs.yml": ``` plugins: - user-defined-values: keywords: IP_ADRESSE: placeholder: z.B. 0.0.0.0 DOMAIN_NAME: placeholder: z.B. fritz.box ``` Eingabeformular einbinden: {{{user-defined-values}}} Die IP-Adresse ist: $IP_ADRESSE, der Domain-Name: $DOMAIN_NAME ``` # das sollte auch in Code-Blöcken funktionieren RewriteEngine on RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC] RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC] RewriteRule .* ws://$IP_ADRESSE:8080%{REQUEST_URI} [P] ProxyPass http://$IP_ADRESSE:8080/ ProxyPassReverse http://$IP_ADRESSE:8080/ ProxyHTMLURLMap http://$IP_ADRESSE:8080 / ``` #### PDF Ausgabe ``` sudo apt-get install build-essential python3-dev python3-pip python3-setuptools python3-wheel python3-cffi libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-info ``` ``` pip3 install WeasyPrint pip3 install mkdocs-with-pdf ``` Änderung in "mkdocs.yml": ``` plugins: - with-pdf ``` #### Block-Diagramme ``` pip3 install mkdocs-mermaid2-plugin ``` Änderung in "mkdocs.yml": ``` plugins: - mermaid2 ``` Beispiel: ```mermaid graph TD A[Client] --> B[Load Balancer] B --> C[Server01] B --> D[Server02] ``` #### git - letzte Änderung ``` pip3 install mkdocs-git-revision-date-localized-plugin ``` ``` plugins: - git-revision-date-localized ``` ``` Letzte Änderung: {{ git_revision_date_localized }} ``` --- Letzte Änderung: {{ git_revision_date_localized }}