bobintetley / asm3

Ce programme est couvert par les termes de la licence publique générale GNU v3.Voir le fichier LICENSE dans ce répertoire pour plus de détails.

Dépendances

Si vous utilisez un système basé sur Debian (ex : Ubuntu), alors ce qui suitinstallera tous les logiciels dont vous avez besoin pour exécuter ASM. Si vous utilisez le paquet debesheltermanager3, il a déjà des dépendances définies pour ceux-ci et lesinstallera pour vous.

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

Paquets supplémentaires, non obligatoires :

  • apt-get install python3-memcache memcached (pour les sessions multiprocessus)
  • apt-get install imagemagick (pour mettre à l’échelle/compresser les PDF afin d’économiser sur le stockage)
  • apt-get.get install wkhtmltopdf (pour créer des PDF à partir de modèles de documents HTML)
  • apt-get install python3-xhtml2pdf (pure lib Python pour créer des PDF à partir de modèles de documents HTML)
  • apt-get install python3-reportlab (pour créer des PDF d’étiquettes d’envoi)
  • apt-get install python3-requests (nécessaire pour les communications HTTP avec d’autres services de publication)
  • apt-get install python3-boto3 (nécessaire pour le stockage des médias sur Amazon S3)
  • pip/pip3 install stripe (pour demander des paiements via Stripe)

Paquets nécessaires à la construction, les vérificateurs statiques, les installateurs et les manuels :

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

Node et npm sont utilisés pour transpiler le code javascript pour les anciens navigateurs etlinting les fichiers javascript. Pour installer toutes les dépendances javascript au moment de la construction,exécutez cette commande dans le dossier source:

  • npm install

Si vous utilisez Debian et que vous voulez faire du développement, vous pouvez utiliser « make deps « comme moyen pratique d’installer les dépendances nécessaires.

Debian python3-webpy

La version de web.py actuellement empaquetée dans Debian Buster (et peut-être Ubuntu)sous le nom de python3-webpy a un défaut. Elle ne peut pas servir de contenu statique et ne fonctionnera que si vous déployez votre application avec mod_wsgi, uwsgi, etc.

Vous pouvez le corriger manuellement en éditant/usr/lib/python3/dist-packages/web/httpserver.py et en ajoutant la nouvelle ligneelf.directory = os.getcwd() à la ligne 198 au bas de la fonction init, comme ceci:

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

Vous n’avez pas besoin de ce correctif si vous déployez votre application pour qu’elle fonctionne avecApache comme recommandé, cela ne s’applique qu’à l’exécution d’un serveur autonome viacode.py à partir de la ligne de commande.

Dans un environnement de développement, vous pouvez démarrer une instance de test sur le port 5000 avec :

make test

Logging

ASM enregistre les journaux dans l’installation Unix syslog USER (/var/log/user.log pour la plupart des installations)par défaut. Cela peut être modifié dans la configuration.

Configuration d’ASM

Si vous avez utilisé le paquetage debian, éditez le fichier /etc/asm3.conf

Si vous ne l’avez pas fait, copiez scripts/asm3.conf.example dans /etc/asm3.conf puis éditez-le.

Définissez les valeurs suivantes :

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)

Si vous utilisez MySQL ou POSTGRESQL, assurez-vous que vous avez émis un CREATE DATABASEet que la base de données existe déjà (cependant le schéma peut être vide).

ASM cherchera son fichier de configuration dans cet ordre jusqu’à ce qu’il en trouve un :

  1. Dans une variable d’environnement appelée ASM3_CONF
  2. Dans $INSTALL_DIR/asm3.conf (le dossier dans lequel les modules python d’asm3 sont installés)
  3. Dans $HOME/.asm3.conf (le répertoire personnel de l’utilisateur qui exécute asm3)
  4. Dans /etc/asm3.conf

Configuration d’Apache/WSGI

Configurer Apache pour servir l’application.

Le paquet Debian version 44 a libapache2-mod-wsgi-py3 comme dépendance et installera Apache 2 si vous ne l’avez pas déjà disponible.

Pour les versions plus anciennes, installez Apache avec :

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

A partir de la version 44, le paquet comprendra également un fichier de site/etc/apache2/sites-available/asm3.conf avec le contenu suivant :

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

Pour les versions plus anciennes, vous devrez créer ce fichier manuellement.

Une fois qu’Apache est installé et que vous avez le fichier du site, pour activer l’ASM, exécutez :

a2enmod wsgia2ensite asm3service apache2 restart

Vous devriez maintenant pouvoir visiter l’ASM à http://localhost/asm3

Création de la base de données par défaut

Après que le service ASM ait démarré, visitez http://localhost/asm3/databaspour créer le schéma de la base de données (frapper juste http://localhost/asm3 y sera redirigé si aucune base de données n’a encore été configurée).

Tâches quotidiennes

ASM a un lot de routines qui doivent être exécutées chaque jour. Celles-ci doivent être exécutées quelques heures avant que les gens ne commencent à saisir pour le jour.

Ces routines comprennent le recalcul des données dénormalisées telles que l’âge de l’animal, le temps passé à l’abri, la mise à jour de la liste d’attente et la publication des données à l’extérieur.

Pour les exécuter, assurez-vous que l’environnement est configuré comme précédemment et exécutezpython3 cron.py all

Voir le fichier cron.py pour plus d’informations sur les paramètres de mode pour exécuter uniquement des tâches spécifiques.

Le paquet Debian ajoute automatiquement les tâches quotidiennes à /etc/cron.daily

.