bobintetley / asm3

Dette program er omfattet af vilkårene i GNU General Public Licence v3.Se filen LICENSE i denne mappe for detaljer.

Afhængigheder

Hvis du bruger et Debian-baseret system (f.eks.: Ubuntu), vil følgende installere al den software, du har brug for for at køre ASM. Hvis du bruger thesheltermanager3 deb-pakken, har den allerede indstillet afhængigheder for disse og vil installere dem for dig.

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

Ekstra, ikke-mandatoriske pakker:

  • apt-get install python3-memcache memcached (til multiprocess-sessioner)
  • apt-get install imagemagick (til skalering/komprimering af PDF-filer for at spare på lagerplads)
  • apt-get install imagemagick (til skalering/komprimering af PDF-filer for at spare på lagerplads)
  • apt-get install wkhtmltopdf (til oprettelse af PDF’er fra HTML-dokumentskabeloner)
  • apt-get install python3-xhtml2pdf (ren Python-libe til oprettelse af PDF’er fra HTML-dokumentskabeloner)
  • apt-get install python3-reportlab (til oprettelse af PDF-filer til postomslag)
  • apt-get install python3-requests (nødvendig for HTTP-kommunikation til andre udgivelsestjenester)
  • apt-get install python3-boto3 (nødvendig for Amazon S3-medieopbevaring)
  • pip/pip3 install stripe (til anmodning om betalinger via Stripe)

Pakker, der er nødvendige for at bygge, statiske kontrollanter, installatører og manualer:

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

Node og npm bruges til at transpile javascript-kode til ældre browsere oglinting af javascript-filer. For at installere alle javascript-afhængigheder i byggetiden skal du køre denne kommando i kildemappen:

  • npm install

Hvis du bruger Debian og ønsker at udvikle, kan du bruge “make deps “som en praktisk måde at installere de nødvendige afhængigheder på.

Debian python3-webpy

Den version af web.py, der i øjeblikket er pakket i Debian Buster (og muligvis Ubuntu)som python3-webpy, har en fejl. Den kan ikke servere statisk indhold og vil kun fungere, hvis du implementerer din applikation med mod_wsgi, uwsgi osv.

Du kan rette den manuelt ved at redigere/usr/lib/python3/dist-packages/web/httpserver.py og tilføje den nye linjeelf.directory = os.getcwd() i linje 198 nederst i initfunktionen, som her:

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()

Du har ikke brug for denne rettelse, hvis du distribuerer dit program til at køre medApache som anbefalet, dette gælder kun for at køre en standalone server viacode.py fra kommandolinjen.

I et udviklingsmiljø kan du starte en testinstans på port 5000 med:

make test

Logning

ASM logger som standard til Unix-syslogfaciliteten USER (/var/log/user.log for de fleste installationer)som standard. Dette kan ændres i konfigurationen.

Konfigurering af ASM

Hvis du brugte debian-pakken, skal du redigere filen /etc/asm3.conf

Hvis du ikke gjorde det, skal du kopiere scripts/asm3.conf.example til /etc/asm3.conf og rediger den derefter.

Sæt følgende værdier:

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)

Hvis du bruger MySQL eller POSTGRESQL, skal du sikre dig, at du har udstedt en CREATE DATABASE, og at databasen allerede eksisterer (skemaet kan dog være tomt).

ASM leder efter sin konfigurationsfil i denne rækkefølge, indtil den finder en:

  1. I en miljøvariabel kaldet ASM3_CONF
  2. I $INSTALL_DIR/asm3.conf (den mappe asm3 python-moduler er installeret i)
  3. I $HOME/.asm3.conf (hjemmemappe for den bruger, der kører asm3)
  4. I /etc/asm3.conf

Opsætning af Apache/WSGI

Sæt Apache op til at betjene programmet.

Den version 44 Debian-pakke har libapache2-mod-wsgi-py3 som en afhængighed og vil installere Apache 2, hvis du ikke allerede har den tilgængelig.

For ældre versioner skal du installere Apache med:

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

Fra og med version 44 vil pakken også indeholde en sidefil/etc/apache2/sites-available/asm3.conf med følgende indhold:

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

For ældre versioner skal du oprette denne fil manuelt.

Når Apache er installeret, og du har site-filen, skal du for at aktivere ASM køre:

a2enmod wsgia2ensite asm3service apache2 restart

Du bør nu kunne besøge ASM på http://localhost/asm3

Oprettelse af standarddatabasen

Når ASM-tjenesten er startet, skal du besøge http://localhost/asm3/database for at oprette databaseskemaet (hvis du blot trykker på http://localhost/asm3, omdirigeres derhen, hvis der endnu ikke er oprettet nogen database).

Daglige opgaver

ASM har en række rutiner, der skal køres hver dag. De skal køres et par timer, før folk begynder at indtaste data for den pågældende dag.

Disse rutiner omfatter genberegning af denormaliserede data som f.eks. dyrenes alder, tid på shelter, opdatering af ventelisten og offentliggørelse af data eksternt.

For at køre dem skal du sikre dig, at miljøet er konfigureret som før, og kørepython3 cron.py all

Se cron.py-filen for flere oplysninger om tilstandsparametre for kun at køre specifikke opgaver.

Debian-pakken tilføjer automatisk de daglige opgaver til /etc/cron.daily