bobintetley / asm3
Dit programma valt onder de voorwaarden van de GNU General Public Licence v3. Zie het bestand LICENSE in deze directory voor details.
Afhankelijkheden
Als u een Debian-gebaseerd systeem gebruikt (bijv: Ubuntu), dan zal het volgende alle software installeren die u nodig heeft om ASM te draaien. Als u gebruik maakt van het sheltermanager3 deb pakket, dan zijn de afhankelijkheden hiervoor al ingesteld en zal het deze voor u installeren.
- apt-get install make python3 python3-webpy python3-pil python3-mysqldb python3-psycopg2
Extra, niet-verplichte pakketten:
- apt-get install python3-memcache memcached (voor multiprocess sessies)
- apt-get install imagemagick (voor het schalen/comprimeren van PDF’s om opslag te besparen)
- apt-get install wkhtmltopdf (voor het maken van PDF’s van HTML-documentsjablonen)
- apt-get install python3-xhtml2pdf (pure Python lib voor het maken van PDF’s van HTML-documentsjablonen)
- apt-get install python3-reportlab (voor het maken van mailing label PDF’s)
- apt-get install python3-requests (nodig voor HTTP comms naar andere publishing services)
- apt-get install python3-boto3 (nodig voor Amazon S3 media opslag)
- pip/pip3 install stripe (voor het aanvragen van betalingen via Stripe)
Pakketten nodig voor het bouwen van, statische checkers, installateurs en handleidingen:
- apt-get install exuberant-ctags nodejs npm pychecker python3-sphinxpython3-sphinx-rtd-theme texlive-latex-base texlive-latex-extra latexmk
Node en npm worden gebruikt voor het transfileren van javascript-code voor oudere browsers en voor het linten van javascript-bestanden. Om alle afhankelijkheden voor het bouwen van javascript te installeren, voert u het volgende commando uit in de broncode-map:
- npm install
Als u Debian gebruikt en aan ontwikkeling wilt doen, kunt u “make deps” gebruiken als een handige manier om de benodigde afhankelijkheden te installeren.
Debian python3-webpy
De versie van web.py die momenteel in Debian Buster (en mogelijk Ubuntu) is verpakt als python3-webpy heeft een fout. Het kan geen statische inhoud serveren en zal alleen werken als u uw applicatie implementeert met mod_wsgi, uwsgi, etc.
U kunt dit handmatig oplossen door het bewerken van/usr/lib/python3/dist-packages/web/httpserver.py en het toevoegen van de nieuwe regelself.directory = os.getcwd() op regel 198 onderaan de initfunctie toe te voegen, zoals dit:
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()
U heeft deze fix niet nodig als u uw applicatie inzet om metApache te draaien zoals aanbevolen, dit geldt alleen voor het draaien van een standalone server viacode.py vanaf de opdrachtregel.
In een ontwikkelomgeving kunt u een testinstantie op poort 5000 starten met:
make test
Logging
ASM logt standaard naar de Unix syslog USER faciliteit (/var/log/user.log voor de meeste installaties). Dit kan worden veranderd in de configuratie.
ASM configureren
Als u het debian pakket gebruikte, bewerk dan het bestand /etc/asm3.conf
Als u dat niet deed, kopieer dan scripts/asm3.conf.example naar /etc/asm3.conf en bewerk het dan.
Stel de volgende waarden in:
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)
Als u MySQL of POSTGRESQL gebruikt, zorg er dan voor dat u een CREATE DATABASE hebt uitgegeven en dat de database al bestaat (het schema mag echter leeg zijn).
ASM zoekt in deze volgorde naar zijn config file totdat het er een vindt:
- In een omgevingsvariabele genaamd ASM3_CONF
- In $INSTALL_DIR/asm3.conf (de map waarin asm3 python modules zijn geinstalleerd)
- In $HOME/.asm3.conf (de home directory van de gebruiker die asm3 draait)
- In /etc/asm3.conf
Opzetten Apache/WSGI
Opzetten Apache om de applicatie te serveren.
Het Debian pakket versie 44 heeft libapache2-mod-wsgi-py3 als een afhankelijkheid en zal Apache 2 installeren als u die nog niet heeft.
Voor oudere versies installeert u Apache met:
apt-get install apache2 libapache2-mod-wsgi-py3
Vanaf versie 44 bevat het pakket ook een site-bestand/etc/apache2/sites-available/asm3.conf met de volgende inhoud:
WSGIScriptAlias /asm3 /usr/lib/sheltermanager3/code.py/Alias /asm3/static /usr/lib/sheltermanager3/static<Directory /usr/lib/sheltermanager3> Require all granted</Directory>
Voor oudere versies zult u dit bestand handmatig moeten maken.
Als Apache eenmaal is geïnstalleerd en u het site-bestand hebt, om ASM te activeren, voert u het volgende uit:
a2enmod wsgia2ensite asm3service apache2 restart
U zou ASM nu moeten kunnen bezoeken op http://localhost/asm3
Aanmaken van de standaard database
Nadat de ASM service is gestart, bezoekt u http://localhost/asm3/databas om het databaseschema aan te maken (door alleen http://localhost/asm3 aan te klikken, wordt u daarheen geleid als er nog geen database is opgezet).
Dagelijkse taken
ASM heeft een serie routines die elke dag moeten worden uitgevoerd. Deze routines moeten worden uitgevoerd een paar uur voordat men begint met het invoeren van gegevens voor die dag.
Deze routines omvatten het herberekenen van gedenormaliseerde gegevens zoals leeftijd van het dier, tijd in de schuilplaats, het bijwerken van de wachtlijst en het publiceren van gegevens naar buiten.
Om ze uit te voeren, zorg ervoor dat de omgeving is ingesteld zoals voorheen en voerpython3 cron.py all
Zie het cron.py bestand voor meer informatie over mode parameters om alleen specifieke taken uit te voeren.
Het Debian pakket voegt automatisch de dagelijkse taken toe aan /etc/cron.daily