bobintetley / asm3

Dieses Programm unterliegt den Bedingungen der GNU General Public Licence v3.Siehe die Datei LICENSE in diesem Verzeichnis für weitere Details.

Abhängigkeiten

Wenn Sie ein Debian-basiertes System (z.B. Ubuntu) verwenden, dann wird die folgende Datei alle Software installieren, die Sie benötigen, um ASM auszuführen. Wenn Sie das Thesheltermanager3-Deb-Paket verwenden, hat es bereits Abhängigkeiten für diese Software gesetzt und installiert sie für Sie.

  • apt-get install make python3 python3-webpy python3-pil python3-mysqldb python3-psycopg2

Zusätzliche, nicht obligatorische Pakete:

  • apt-get install python3-memcache memcached (für Multiprozess-Sitzungen)
  • apt-get install imagemagick (zum Skalieren/Komprimieren von PDFs, um Speicher zu sparen)
  • apt-get install wkhtmltopdf (zur Erstellung von PDFs aus HTML-Dokumentenvorlagen)
  • apt-get install python3-xhtml2pdf (reine Python-Bibliothek zur Erstellung von PDFs aus HTML-Dokumentenvorlagen)
  • apt-get install python3-reportlab (zum Erstellen von Mailing-Label-PDFs)
  • apt-get install python3-requests (benötigt für HTTP-Kommunikation mit anderen Publishing-Diensten)
  • apt-get install python3-boto3 (benötigt für Amazon S3-Medienspeicher)
  • pip/pip3 install stripe (zum Anfordern von Zahlungen über Stripe)

Pakete, die zum Bauen benötigt werden, Statikchecker, Installer und Handbücher:

  • apt-get install exuberant-ctags nodejs npm pychecker python3-sphinxpython3-sphinx-rtd-theme texlive-latex-base texlive-latex-extra latexmk

Node und npm werden zum Transpilieren von Javascript-Code für ältere Browser und zum Linten von Javascript-Dateien verwendet. Um alle Javascript-Abhängigkeiten für die Build-Zeit zu installieren, führen Sie diesen Befehl im Quellcode-Ordner aus:

  • npm install

Wenn Sie Debian verwenden und entwickeln wollen, können Sie „make deps“ als bequeme Möglichkeit verwenden, um die benötigten Abhängigkeiten zu installieren.

Debian python3-webpy

Die Version von web.py, die derzeit in Debian Buster (und möglicherweise Ubuntu) als python3-webpy gepackt ist, hat einen Fehler. Sie kann keine statischen Inhalte bereitstellen und funktioniert nur, wenn Sie Ihre Anwendung mit mod_wsgi, uwsgi usw. bereitstellen.

Sie können den Fehler manuell beheben, indem Sie/usr/lib/python3/dist-packages/web/httpserver.py bearbeiten und die neue Zeileelf.directory = os.getcwd() in Zeile 198 am Ende der initFunktion einfügen, etwa so:

class StaticApp(SimpleHTTPRequestHandler): """WSGI application for serving static files.""" def __init__(self, environ, start_response): self.headers = self.environ = environ self.start_response = start_response self.directory = os.getcwd()

Sie brauchen diese Korrektur nicht, wenn Sie Ihre Anwendung wie empfohlen mitApache laufen lassen, dies gilt nur für die Ausführung eines eigenständigen Servers viacode.py von der Kommandozeile aus auszuführen.

In einer Entwicklungsumgebung können Sie eine Testinstanz auf Port 5000 mit:

make test

Logging

ASM protokolliert standardmäßig in der Unix syslog USER Einrichtung (/var/log/user.log für die meisten Installationen). Dies kann in der Konfiguration geändert werden.

ASM konfigurieren

Wenn Sie das Debian-Paket verwendet haben, editieren Sie die Datei /etc/asm3.conf

Wenn Sie das nicht getan haben, kopieren Sie scripts/asm3.conf.example nach /etc/asm3.conf und bearbeiten Sie sie dann.

Setzen Sie die folgenden Werte:

asm3_dbtype = (POSTGRESQL, MYSQL or SQLITE)asm3_dbhost = (hostname of your server)asm3_dbport = (port of your server if using tcp)asm3_dbusername = asm3_dbpassword = asm3_dbname = (name of the database, can be file path if type is SQLITE)

Wenn Sie MySQL oder POSTGRESQL verwenden, stellen Sie sicher, dass Sie ein CREATE DATABASE ausgeführt haben und die Datenbank bereits existiert (das Schema kann jedoch leer sein).

ASM sucht seine Konfigurationsdatei in dieser Reihenfolge, bis es eine findet:

  1. In einer Umgebungsvariablen namens ASM3_CONF
  2. In $INSTALL_DIR/asm3.conf (der Ordner, in dem die asm3-Python-Module installiert sind)
  3. In $HOME/.asm3.conf (das Heimatverzeichnis des Benutzers, der asm3 ausführt)
  4. In /etc/asm3.conf

Einrichten von Apache/WSGI

Einrichten von Apache zur Bereitstellung der Anwendung.

Das Debian-Paket der Version 44 hat libapache2-mod-wsgi-py3 als Abhängigkeit und wird Apache 2 installieren, wenn Sie es nicht bereits haben.

Für ältere Versionen installieren Sie Apache mit:

apt-get install apache2 libapache2-mod-wsgi-py3

Ab Version 44 enthält das Paket auch eine Site-Datei/etc/apache2/sites-available/asm3.conf mit dem folgenden Inhalt:

WSGIScriptAlias /asm3 /usr/lib/sheltermanager3/code.py/Alias /asm3/static /usr/lib/sheltermanager3/static<Directory /usr/lib/sheltermanager3> Require all granted</Directory>

Für ältere Versionen müssen Sie diese Datei manuell erstellen.

Wenn Apache installiert ist und Sie die Site-Datei haben, führen Sie Folgendes aus, um ASM zu aktivieren:

a2enmod wsgia2ensite asm3service apache2 restart

Sie sollten nun in der Lage sein, ASM unter http://localhost/asm3

Erstellen der Standarddatenbank

zu besuchen, nachdem der ASM-Dienst gestartet wurde, um das Datenbankschema zu erstellen (wenn Sie nur http://localhost/asm3 anklicken, werden Sie dorthin weitergeleitet, wenn noch keine Datenbank eingerichtet wurde).

Tägliche Aufgaben

ASM hat eine Reihe von Routinen, die jeden Tag ausgeführt werden müssen.

Zu diesen Routinen gehören die Neuberechnung denormalisierter Daten wie Alter der Tiere und Verweildauer im Tierheim, die Aktualisierung der Warteliste und die Veröffentlichung der Daten nach außen.

Um sie auszuführen, stellen Sie sicher, dass die Umgebung wie zuvor eingerichtet ist und führen Siepython3 cron.py all

Siehe die Datei cron.py für weitere Informationen über Modus-Parameter, um nur bestimmte Aufgaben auszuführen.

Das Debian-Paket fügt die täglichen Aufgaben automatisch zu /etc/cron.daily