Skip to content

Commit

Permalink
Deployed 49fbedb with MkDocs version: 1.6.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Actionb committed Sep 16, 2024
1 parent c5fb2bf commit fc9740a
Show file tree
Hide file tree
Showing 6 changed files with 289 additions and 5 deletions.
41 changes: 39 additions & 2 deletions deinstall.html
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,18 @@

<li class="nav-item" data-bs-level="1"><a href="#deinstallation" class="nav-link">Deinstallation</a>
<ul class="nav flex-column">
<li class="nav-item" data-bs-level="2"><a href="#deinstallation-via-mizdbsh" class="nav-link">Deinstallation via mizdb.sh</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="2"><a href="#manuelle-deinstallation" class="nav-link">Manuelle Deinstallation</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="2"><a href="#optional-docker-deinstallieren" class="nav-link">(optional) Docker deinstallieren</a>
<ul class="nav flex-column">
</ul>
</li>
</ul>
</li>
</ul>
Expand All @@ -289,18 +301,43 @@
<div class="col-md-9" role="main">

<h1 id="deinstallation">Deinstallation</h1>
<h2 id="deinstallation-via-mizdbsh">Deinstallation via mizdb.sh</h2>
<p>MIZDB kann mit</p>
<pre><code class="language-shell">mizdb uninstall
</code></pre>
<p>oder mit (wenn im MIZDB Verzeichnis):</p>
<pre><code class="language-shell">bash mizdb.sh uninstall
</code></pre>
<p>deinstalliert werden.</p>
<p>Bei der Deinstallation werden folgende Verzeichnisse und Dateien gelöscht:</p>
<ul>
<li>das MIZDB Source Verzeichnis</li>
<li>das Datenbank Verzeichnis (standardmäßig: <code>/var/lib/mizdb</code>)</li>
<li>das Log Verzeichnis (standardmäßig: <code>/var/log/mizdb</code>)</li>
<li>das Management Skript (standardmäßig: <code>/usr/local/bin/mizdb</code>)</li>
</ul>
<p>Außerdem wird der Backup cronjob aus der root crontab entfernt.</p>
<h2 id="manuelle-deinstallation">Manuelle Deinstallation</h2>
<p>Container anhalten, Source Dateien und Management-Skript löschen:</p>
<pre><code class="language-shell"># Docker Container anhalten:
docker stop mizdb-app mizdb-postgres
# MIZDB Verzeichnis löschen:
sudo rm -rf &lt;PFAD/ZUM/MIZDB_VERZEICHNIS&gt;
# Management-Skript löschen:
sudo rm -f /usr/local/bin/mizdb
</code></pre>
<p>Datenbank und Logs löschen:</p>
<pre><code class="language-shell">sudo rm -rf /var/lib/mizdb
sudo rm -rf /var/log/mizdb
</code></pre>
<p>Cronjob entfernen:</p>
<pre><code class="language-shell">sudo crontab -l 2&gt;/dev/null | grep -v 'docker exec mizdb-postgres sh /mizdb/backup.sh' | grep -v &quot;Backup der MIZDB Datenbank&quot; | sudo crontab -u root -
</code></pre>
<p>(Optional) Docker Images löschen:</p>
<pre><code class="language-shell">docker image prune -a
</code></pre>
<p>Docker deinstallieren:
<a href="https://docs.docker.com/engine/install/debian/#uninstall-docker-engine">https://docs.docker.com/engine/install/debian/#uninstall-docker-engine</a></p></div>
<h2 id="optional-docker-deinstallieren">(optional) Docker deinstallieren</h2>
<p><a href="https://docs.docker.com/engine/install/debian/#uninstall-docker-engine">https://docs.docker.com/engine/install/debian/#uninstall-docker-engine</a></p></div>
</div>

</div>
Expand Down
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -439,5 +439,5 @@ <h4 class="modal-title" id="keyboardModalLabel">Tastenkombinationen</h4>

<!--
MkDocs version : 1.6.0
Build Date UTC : 2024-08-30 09:21:16.789753+00:00
Build Date UTC : 2024-09-16 12:16:57.331820+00:00
-->
173 changes: 172 additions & 1 deletion install.html
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,38 @@
<li class="nav-item" data-bs-level="2"><a href="#manuell" class="nav-link">Manuell</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="2"><a href="#installation-ohne-docker" class="nav-link">Installation ohne Docker</a>
<ul class="nav flex-column">
<li class="nav-item" data-bs-level="3"><a href="#1-erforderliche-pakete-installieren" class="nav-link">1. Erforderliche Pakete installieren</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="3"><a href="#2-postgres-datenbank-einrichten" class="nav-link">2. Postgres Datenbank einrichten</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="3"><a href="#3-mizdb-dateien-herunterladen-und-einrichten" class="nav-link">3. MIZDB Dateien herunterladen und einrichten</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="3"><a href="#4-apache-einrichten" class="nav-link">4. Apache einrichten</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="3"><a href="#datenbank-wiederherstellen" class="nav-link">Datenbank wiederherstellen</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="3"><a href="#mizdb-testen" class="nav-link">MIZDB testen</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="3"><a href="#postgresql-terminal-aufrufen" class="nav-link">PostgreSQL Terminal aufrufen</a>
<ul class="nav flex-column">
</ul>
</li>
</ul>
</li>
</ul>
</li>
Expand Down Expand Up @@ -334,7 +366,146 @@ <h2 id="manuell">Manuell</h2>
<p>Ansonsten müssen die Datenbank Migrationen ausgeführt werden:</p>
<pre><code class="language-shell">bash mizdb.sh migrate
</code></pre>
<p>Die Seite sollte nun unter <code>http://&lt;hostname&gt;/miz/</code> erreichbar sein.</p></div>
<p>Die Seite sollte nun unter <code>http://&lt;hostname&gt;/miz/</code> erreichbar sein.</p>
<h2 id="installation-ohne-docker">Installation ohne Docker</h2>
<p><strong>Wichtig:</strong> MIZDB sollte nicht im Home Verzeichnis erstellt werden, da der Webserver keinen Zugriff auf dieses
Verzeichnis hat!
Also zum Beispiel unter <code>/opt/</code> erstellen:</p>
<pre><code class="language-shell">sudo mkdir -p /opt/archiv
sudo chown $USER:$USER /opt/archiv
cd /opt/archiv
</code></pre>
<h3 id="1-erforderliche-pakete-installieren">1. Erforderliche Pakete installieren</h3>
<pre><code class="language-shell"># Paketquellen aktualisieren:
sudo apt update
# Danach Apache2, diverse Python3 &amp; PostgreSQL Pakete, git Versionskontrolle installieren:
sudo apt install apache2 apache2-dev python3-dev python3-venv python3-pip postgresql-contrib libpq-dev git
</code></pre>
<h3 id="2-postgres-datenbank-einrichten">2. Postgres Datenbank einrichten</h3>
<pre><code class="language-shell"># Datenbankbenutzer erstellen:
sudo -u postgres createuser mizdb_user -P --createdb
# Datenbank erzeugen:
sudo -u postgres createdb mizdb --owner=mizdb_user
</code></pre>
<p>Benutzername (hier: <code>mizdb_user</code>) und das verwendete Passwort werden später noch einmal benötigt.</p>
<h3 id="3-mizdb-dateien-herunterladen-und-einrichten">3. MIZDB Dateien herunterladen und einrichten</h3>
<pre><code class="language-shell"># MIZDB git Repository klonen:
git clone https://github.com/Actionb/MIZDB .
# Virtuelle Umgebung erstellen und aktivieren:
python3 -m venv venv &amp;&amp; source venv/bin/activate
# MIZDB einrichten:
sh setup.sh
</code></pre>
<p>Das Script <code>setup.sh</code> fragt nach einigen Daten für die Applikation und erstellt
die folgenden Dateien:</p>
<ul>
<li>im Stammverzeichnis wird die Datei <code>.env</code> mit den Werten für Umgebungsvariablen erstellt</li>
<li>im Unterverzeichnis <code>.secrets</code> werden die folgenden Dateien erstellt:<ul>
<li><code>.passwd</code>: beinhaltet das Passwort der Datenbank</li>
<li><code>.key</code>: beinhaltet einen kryptografischen Schlüssel</li>
<li><code>.allowedhosts</code>: beinhaltet die erwarteten Hostnamen</li>
</ul>
</li>
</ul>
<h4 id="python-module-installieren">Python Module installieren:</h4>
<pre><code class="language-shell"># Erforderliche Python Module installieren:
python3 -m pip install --upgrade pip wheel
python3 -m pip install -r requirements/base.txt
# Datenbank Migrationen anwenden:
python manage.py migrate
# Statische Dateien für die Webseite sammeln:
python manage.py collectstatic --clear --noinput --skip-checks --verbosity 0
</code></pre>
<h4 id="ordner-fur-log-dateien-einrichten">Ordner für Log-Dateien einrichten:</h4>
<pre><code class="language-shell"># Ordner erstellen:
sudo mkdir -p /var/log/mizdb/
# Den Webserver-Benutzer als Besitzer einstellen:
sudo chown www-data:www-data /var/log/mizdb
</code></pre>
<h3 id="4-apache-einrichten">4. Apache einrichten</h3>
<pre><code class="language-shell"># Den Loader für das mod_wsgi Module für Apache erstellen:
sudo venv/bin/mod_wsgi-express install-module | sudo tee /etc/apache2/mods-available/mod_wsgi.load &gt; /dev/null
# Danach kann das Modul aktiviert werden:
sudo a2enmod mod_wsgi
# 'macro' Modul aktivieren:
sudo a2enmod macro
# Danach Konfigurationsdatei für die MIZDB-Seite erstellen:
sudoedit /etc/apache2/sites-available/mizdb.conf
</code></pre>
<p>Folgendem Code in die Konfigurationsdatei einfügen:</p>
<pre><code>&lt;Macro VHost $VENV_ROOT $PROJECT_ROOT&gt;
&lt;VirtualHost *:80&gt;
# Name of the host. The name must be included in the ALLOWED_HOSTS django settings.
ServerName localhost

# http://localhost/admin/ will produce the admin dashboard.
# For localhost/foobar/admin/ use:
# WSGIScriptAlias /foobar $PROJECT_ROOT/MIZDB/wsgi.py
WSGIScriptAlias /miz $PROJECT_ROOT/MIZDB/wsgi.py

# python-home must point to the root folder of the virtual environment.
# python-path adds the given path to sys.path thereby making packages contained within available for import;
# add the path to the django project so the project settings can be imported.
WSGIDaemonProcess mizdb python-home=$VENV_ROOT python-path=$PROJECT_ROOT
WSGIProcessGroup mizdb

# Make the static folder in the project root available. The Alias is required.
Alias /static $PROJECT_ROOT/static
&lt;Directory $PROJECT_ROOT/static&gt;
Require all granted
&lt;/Directory&gt;

# Allow access to the file containing the wsgi application.
&lt;Directory $PROJECT_ROOT/MIZDB&gt;
&lt;Files wsgi.py&gt;
Require all granted
&lt;/Files&gt;
&lt;/Directory&gt;

&lt;/VirtualHost&gt;
&lt;/Macro&gt;

# Create the VirtualHost 'VHost' declared above with the following parameters:
# - root of the virtual environment
# - root of the django project directory
#
# Don't confuse the project directory with the project package directory:
# - the project directory contains manage.py and the various django apps
# - the project package is a directory inside the project directory and contains settings.py, wsgi.py and the root urls.py
USE VHost /opt/archiv/venv /opt/archiv

# Undefine and free up the variable (basically).
UndefMacro VHost
</code></pre>
<p><strong>⚠️ Notwendige Änderungen ⚠️</strong>:</p>
<ul>
<li>In der Zeile mit <code>ServerName</code> muss der Hostname des Servers eingefügt werden. Dieser Name muss auch in der <code>.env</code>
Datei unter <code>ALLOWED_HOSTS</code> auftauchen.</li>
<li>In der Zeile <code>USE VHOST</code> müssen gegebenenfalls die zwei Pfade angepasst werden.<ul>
<li>der erste Pfad ist der Pfad zum Verzeichnis der virtuellen Umgebung</li>
<li>der zweite Pfad ist der Pfad zum Grundverzeichnis der App, in welchem auch <code>manage.py</code> zu finden ist.</li>
</ul>
</li>
</ul>
<p>Also beispielsweise: <code>USE VHost /opt/archiv/venv /opt/archiv</code></p>
<p>Danach:</p>
<pre><code class="language-shell"># MIZDB-Seite aktivieren:
sudo a2ensite mizdb
# Apache neu starten:
sudo service apache2 restart
</code></pre>
<p>Jetzt sollte MIZDB unter <code>http://&lt;ServerName&gt;/miz/admin</code> (also z.B. http://localhost/miz/admin) erreichbar sein.</p>
<h3 id="datenbank-wiederherstellen">Datenbank wiederherstellen</h3>
<pre><code class="language-shell">sudo -u postgres dropdb mizdb
sudo -u postgres createdb mizdb --owner=mizdb_user
sudo -u postgres pg_restore --dbname mizdb &lt; backup_datei
</code></pre>
<h3 id="mizdb-testen">MIZDB testen</h3>
<pre><code class="language-shell">python manage.py test --settings=tests.settings tests
</code></pre>
<h3 id="postgresql-terminal-aufrufen">PostgreSQL Terminal aufrufen</h3>
<pre><code class="language-shell">psql --username=mizdb_user --host=localhost mizdb
</code></pre></div>
</div>

</div>
Expand Down
2 changes: 1 addition & 1 deletion search/search_index.json

Large diffs are not rendered by default.

Binary file modified sitemap.xml.gz
Binary file not shown.
76 changes: 76 additions & 0 deletions verwaltung.html
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,10 @@
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="3"><a href="#backups-automatisieren" class="nav-link">Backups automatisieren</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="3"><a href="#update" class="nav-link">Update</a>
<ul class="nav flex-column">
</ul>
Expand Down Expand Up @@ -346,6 +350,78 @@ <h3 id="backup-erstellen-pg_dump">Backup erstellen (<a href="https://www.postgre
<pre><code class="language-shell">bash mizdb.sh dump backup_datei
</code></pre>
<p>Wird keine Datei als Argument übergeben, so wird eine Backup-Datei im Unterverzeichnis <code>MIZDB/dumps</code> erstellt.</p>
<h3 id="backups-automatisieren">Backups automatisieren</h3>
<h4 id="cronjob">Cronjob</h4>
<p>Crontab des root users öffnen:</p>
<pre><code class="language-shell">sudo crontab -e
</code></pre>
<p>Und folgenden cronjob hinzufügen:</p>
<pre><code># Backup der MIZDB Datenbank erstellen (Wochentags, um 7:51, 11:51 und 16:51 Uhr):
51 7,11,16 * * 1-5 docker exec mizdb-postgres sh /mizdb/backup.sh
</code></pre>
<h4 id="rclone">rclone</h4>
<p>Mit rclone sync und cronjob kann das Hochladen der Backups auf ein Google Drive automatisiert werden.</p>
<ol>
<li>rclone installieren: https://rclone.org/install/</li>
<li>rclone für Google Drive konfigurieren: https://rclone.org/drive/</li>
<li>crontab öffnen:
<code>shell
sudo crontab -e</code>
und dann den cronjob definieren, zum Beispiel:
<code>shell
# Backups mit rclone hochladen:
53 7,11,16 * * 1-5 rclone --config=/path/to/rclone.conf sync /path/to/mizdb/backups &lt;remote_name&gt;:backups</code></li>
</ol>
<p>Die Standardkonfiguration erfordert einen Webbrowser.
Um rclone ohne Webbrowser (z.B. für einen headless Server) zu konfigurieren: https://rclone.org/remote_setup/</p>
<h5 id="rclone-mit-google-service-account">rclone mit Google Service Account</h5>
<p>Alternativ kann über einen Service Account auf den Backup-Ordner zugegriffen werden:</p>
<p>https://rclone.org/drive/#service-account-support</p>
<p>Als Beispiel, Upload zum existierenden Backup-Drive auf [email protected]:</p>
<ol>
<li>
<p>Falls nicht der bereits existierende Service "dbbackup-service" benutzt werden soll, muss
vorerst ein Service Account angelegt werden:</p>
<ol>
<li>in die Google Cloud Console einloggen: https://console.cloud.google.com</li>
<li>Service Accounts &gt; Create Service Account</li>
<li>im Drive Ordner rechts in den Ordnerdetails unter "Zugriff verwalten" den Backup-Ordner für den neuen Service
Account freigeben</li>
</ol>
</li>
<li>
<p>Service Account Key (<code>credentials.json</code>) generieren, falls nicht vorhanden:</p>
<ol>
<li>in die Google Cloud Console einloggen: https://console.cloud.google.com</li>
<li>Service Accounts &gt; dbbackup-service &gt; KEYS</li>
<li>Mit "ADD KEY" wird ein neuer Key erzeugt und heruntergeladen</li>
</ol>
</li>
<li>
<p>Root Folder ID des Backup-Ordners herausfinden:</p>
<ol>
<li>In Google Drive einloggen</li>
<li>Unter "Meine Ablage" den entsprechenden Ordner anklicken</li>
<li>die ID ist am Ende der URL nach <code>/folders/</code> zu finden; also
z.B. https://drive.google.com/drive/u/1/folders/10z55r6HFxfOWkmrRIT4-mrjhhJgqYPqa hat die
ID <code>10z55r6HFxfOWkmrRIT4-mrjhhJgqYPqa</code></li>
</ol>
</li>
<li>
<p>rclone Konfigurationsdatei erzeugen: https://rclone.org/drive/#service-account-support</p>
</li>
</ol>
<p>Mit einer solchen rclone.conf, zu finden unter <code>/home/my_user/.config/rclone/</code>:</p>
<pre><code>[dbbackup]
type = drive
scope = drive
root_folder_id = 10z55r6HFxfOWkmrRIT4-mrjhhJgqYPqa
service_account_file = /pfad/zu/service/account/credentials.json
</code></pre>
<p>müsste der cronjob so aussehen:</p>
<pre><code>53 7,11,16 * * 1-5 rclone --config=/home/my_user/.config/rclone/rclone.conf sync /var/lib/mizdb/backups dbbackup:/
</code></pre>
<p>Weitere Links: <a href="https://forum.rclone.org/t/gdrive-access-via-service-account/17926">Gdrive access via service account</a></p>
<h3 id="update">Update</h3>
<p>Um die Anwendung zu aktualisieren, benutze:</p>
<pre><code class="language-shell">bash mizdb.sh update
Expand Down

0 comments on commit fc9740a

Please sign in to comment.