bobintetley / asm3

Questo programma è coperto dai termini della GNU General Public Licence v3.Vedere il file LICENSE in questa directory per i dettagli.

Dipendenze

Se stai usando un sistema basato su Debian (es: Ubuntu), allora il seguente installerà tutto il software necessario per eseguire ASM. Se stai usando il pacchetto deb thesheltermanager3 ha già le dipendenze impostate per queste e le installerà per te.

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

Pacchetti extra, non obbligatori:

  • apt-get install python3-memcache memcached (per sessioni multiprocesso)
  • apt-get install imagemagick (per scalare/comprimere i PDF per risparmiare sulla memoria)
  • apt-get install wkhtmltopdf (per creare PDF da modelli di documenti HTML)
  • apt-get install python3-xhtml2pdf (libreria Python pura per creare PDF da modelli di documenti HTML)
  • apt-get install python3-reportlab (per la creazione di PDF con etichette postali)
  • apt-get install python3-requests (necessario per le comunicazioni HTTP ad altri servizi di pubblicazione)
  • apt-get install python3-boto3 (necessario per la memorizzazione dei media su Amazon S3)
  • pip/pip3 install stripe (per richiedere pagamenti tramite Stripe)

Pacchetti necessari alla costruzione, controllori statici, installatori e manuali:

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

Node e npm sono usati per transpilare il codice javascript per i vecchi browser e per il javascripting. Per installare tutte le dipendenze javascript in fase di compilazione, eseguire questo comando nella cartella dei sorgenti:

  • npm install

Se stai usando Debian e vuoi fare sviluppo, puoi usare “make deps” come un modo conveniente per installare le dipendenze necessarie.

Debian python3-webpy

La versione di web.py attualmente impacchettata in Debian Buster (e forse Ubuntu) come python3-webpy ha un difetto. Non può servire contenuti statici e funziona solo se si distribuisce l’applicazione con mod_wsgi, uwsgi, ecc.

Si può risolvere manualmente modificando/usr/lib/python3/dist-packages/web/httpserver.py e aggiungendo la nuova rigaelf.directory = os.getcwd() alla linea 198 in fondo alla funzione init, come questa:

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

Non avete bisogno di questa correzione se state distribuendo la vostra applicazione per eseguirla con Apache come raccomandato, questo si applica solo all’esecuzione di un server standalone viacode.py dalla riga di comando.

In un ambiente di sviluppo, puoi avviare un’istanza di test sulla porta 5000 con:

make test

Logging

ASM esegue i log nella struttura Unix syslog USER (/var/log/user.log per la maggior parte delle installazioni) per default. Questo può essere cambiato nella configurazione.

Configurare ASM

Se hai usato il pacchetto debian, modifica il file /etc/asm3.conf

Se non l’hai fatto, copia scripts/asm3.conf.example in /etc/asm3.conf e poi modificarlo.

Imposta i seguenti valori:

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)

Se stai usando MySQL o POSTGRESQL, assicurati di aver emesso un CREATE DATABASE e che il database esista già (comunque lo schema può essere vuoto).

ASM cercherà il suo file di configurazione in questo ordine finché non ne troverà uno:

  1. In una variabile d’ambiente chiamata ASM3_CONF
  2. In $INSTALL_DIR/asm3.conf (la cartella in cui sono installati i moduli python asm3)
  3. In $HOME/.asm3.conf (la directory home dell’utente che esegue asm3)
  4. In /etc/asm3.conf

Impostazione di Apache/WSGI

Imposta Apache per servire l’applicazione.

Il pacchetto Debian versione 44 ha libapache2-mod-wsgi-py3 come dipendenza e installerà Apache 2 se non è già disponibile.

Per le versioni precedenti, installare Apache con:

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

A partire dalla versione 44, il pacchetto include anche un file site/etc/apache2/sites-available/asm3.conf con il seguente contenuto:

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

Per le versioni precedenti, si dovrà creare questo file manualmente.

Una volta che Apache è installato e hai il file del sito, per attivare ASM, esegui:

a2enmod wsgia2ensite asm3service apache2 restart

Dovresti ora essere in grado di visitare ASM a http://localhost/asm3

Creare il database di default

Dopo che il servizio ASM è partito, visita http://localhost/asm3/databasper creare lo schema del database (premendo solo http://localhost/asm3 sarai reindirizzato lì se nessun database è stato ancora impostato).

Compiti giornalieri

ASM ha una serie di routine che devono essere eseguite ogni giorno. Queste routine dovrebbero essere eseguite qualche ora prima che le persone inizino ad inserire i dati per quel giorno.

Queste routine includono il ricalcolo dei dati denormalizzati come l’età dell’animale, il tempo di permanenza nel rifugio, l’aggiornamento della lista d’attesa e la pubblicazione dei dati all’esterno.

Per eseguirle, assicurarsi che l’ambiente sia impostato come prima ed eseguirepython3 cron.py all

Vedere il file cron.py per maggiori informazioni sui parametri di modalità per eseguire solo compiti specifici.

Il pacchetto Debian aggiunge automaticamente i compiti giornalieri a /etc/cron.daily