bobintetley / asm3

Acest program este acoperit de termenii Licenței Publice Generale GNU v3.Vedeți fișierul LICENSE din acest director pentru detalii.

Dependențe

Dacă folosiți un sistem bazat pe Debian (de exemplu: Ubuntu), atunci următoarele vor instala toate programele de care aveți nevoie pentru a rula ASM. Dacă folosiți pachetul debheltermanager3, acesta are deja stabilite dependențele pentru acestea și le va instala pentru dumneavoastră.

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

Pachete suplimentare, neobligatorii:

  • apt-get install python3-memcache memcached (pentru sesiuni multiproces)
  • apt-get install imagemagick (pentru scalarea/comprimarea PDF-urilor pentru a economisi spațiu de stocare)
  • apt-get install imagemagick (pentru scalarea/comprimarea PDF-urilor pentru a economisi spațiu de stocare)
  • apt-get install wkhtmltopdf (pentru crearea de PDF-uri din șabloane de documente HTML)
  • apt-get install python3-xhtml2pdf (librărie Python pură pentru crearea de PDF-uri din șabloane de documente HTML)
  • apt-get install python3-reportlab (pentru crearea de PDF-uri cu etichete poștale)
  • apt-get install python3-requests (necesar pentru comunicațiile HTTP către alte servicii de publicare)
  • apt-get install python3-boto3 (necesar pentru stocarea media Amazon S3)
  • pip/pip3 install stripe (pentru solicitarea de plăți prin Stripe)

Pachete necesare pentru construire, verificatoare statice, instalatori și manuale:

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

Node și npm sunt folosite pentru transpunerea codului javascript pentru browsere mai vechi șilintingul fișierelor javascript. Pentru a instala toate dependențele javascript din timpul construcției,rulați această comandă în dosarul sursă:

  • npm install

Dacă folosiți Debian și doriți să faceți dezvoltare, puteți folosi „make deps „ca o modalitate convenabilă de a instala dependențele necesare.

Debian python3-webpy

Versiunea de web.py împachetată în prezent în Debian Buster (și posibil Ubuntu)ca python3-webpy are un defect. Nu poate servi conținut static și va funcționa doar dacă vă implementați aplicația cu mod_wsgi, uwsgi, etc.

Puteți să o remediați manual prin editarea/usr/lib/python3/dist-packages/web/httpserver.py și adăugarea noilor liniielf.directory = os.getcwd() la linia 198 în partea de jos a funcției init, astfel:

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

Nu aveți nevoie de această corecție dacă vă implementați aplicația pentru a rula cuApache, așa cum se recomandă, aceasta se aplică numai la rularea unui server independent viacode.py din linia de comandă.

Într-un mediu de dezvoltare, puteți porni o instanță de testare pe portul 5000 cu:

make test

Logging

ASM se înregistrează în facilitatea Unix syslog USER (/var/log/user.log pentru majoritatea instalațiilor)în mod implicit. Acest lucru poate fi modificat în configurare.

Configurarea ASM

Dacă ați folosit pachetul debian, editați fișierul /etc/asm3.conf

Dacă nu, copiați scripts/asm3.conf.example în /etc/asm3.conf și apoi editați-l.

Setați următoarele 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)

Dacă folosiți MySQL sau POSTGRESQL, asigurați-vă că ați emis un CREATE DATABASEși că baza de date există deja (totuși schema poate fi goală).

ASM își va căuta fișierul de configurare în această ordine până când va găsi unul:

  1. Într-o variabilă de mediu numită ASM3_CONF
  2. În $INSTALL_DIR/asm3.conf (folderul în care sunt instalate modulele python asm3)
  3. În $HOME/.asm3.conf (directorul personal al utilizatorului care rulează asm3)
  4. În /etc/asm3.conf

Configurarea Apache/WSGI

Configurați Apache pentru a servi aplicația.

Pachetul Debian versiunea 44 are libapache2-mod-wsgi-py3 ca dependență și va instala Apache 2 dacă nu îl aveți deja disponibil.

Pentru versiuni mai vechi, instalați Apache cu:

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

De la versiunea 44, pachetul va include, de asemenea, un fișier site/etc/apache2/sites-available/asm3.conf cu următorul conținut:

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

Pentru versiuni mai vechi, va trebui să creați acest fișier manual.

După ce Apache este instalat și aveți fișierul site, pentru a activa ASM, rulați:

a2enmod wsgia2ensite asm3service apache2 restart

Ar trebui acum să puteți vizita ASM la http://localhost/asm3

Crearea bazei de date implicite

După ce serviciul ASM a pornit, vizitați http://localhost/asm3/databasepentru a crea schema bazei de date (dacă apăsați doar http://localhost/asm3, veți fi redirecționat acolo dacă nu a fost configurată încă nicio bază de date).

Sarcini zilnice

ASM are un lot de rutine care trebuie să fie rulate în fiecare zi. Acestea ar trebui să fie rulate cu câteva ore înainte ca oamenii să înceapă introducerea datelor pentru ziua respectivă.

Aceste rutine includ recalcularea datelor denormalizate, cum ar fi vârsta animalelor, timpul petrecut în adăpost, actualizarea listei de așteptare și publicarea datelor în exterior.

Pentru a le rula, asigurați-vă că mediul este configurat ca înainte și rulațipython3 cron.py all

Vezi fișierul cron.py pentru mai multe informații despre parametrii de mod pentru a rula doar sarcini specifice.

Pachetul Debian adaugă automat sarcinile zilnice la /etc/cron.daily

.