Modifications entre les versions 14 et 15
Version 14 à la date du 2017-10-19 15:12:21
Taille: 7395
Éditeur: WillyManga
Commentaire:
Version 15 à la date du 2017-10-24 21:28:03
Taille: 7575
Éditeur: WillyManga
Commentaire: python3, django 1.10 et petite correction
Texte supprimé. Texte ajouté.
Ligne 5: Ligne 5:
Pour cela, on peut utiliser une machine virtuelle sous [[Debian/Jessie]].

{i} Notre version de développement tourne sous [[Django]] 1.7. ''(dernière version de Django sur Jessie, pour éviter des problèmes de compatibilité pour le moment, nous ferons la migration un peu plus tard)''
Pour cela, on peut utiliser une machine virtuelle sous [[Debian/Strech]].

{i} Notre outil tourne sous [[Django]] 1.10.
Ligne 22: Ligne 22:
 * Installation de [[Debian/Jessie]]  * Installation de [[Debian/Stretch]]
Ligne 24: Ligne 24:
 * Installation de Django 1.7
 * Installation d'un gestionnaire de base de données : MySQL dans mon cas
 * /!\ Attention, on va exploiter django avec python3 uniquement. Par conséquent tous les paquets demandant python doivent être ceux fonctionnant sous python3; plus concrètement ceux qui dont le préfixe du nom du paquet est `python3-`
 * Installation de Django 1.10
 * Installation d'un gestionnaire de base de données : --(MySQL dans mon cas)-- MariaDb
Ligne 31: Ligne 32:
sudo apt-get install apache2 libapache2-mod-wsgi mysql-server python-django python-mysqldb python-tz sudo apt-get install apache2 libapache2-mod-wsgi-py3 mysql-server python3-django python3-mysqldb python3-tz python3-pil
Ligne 56: Ligne 57:
 WSGIScriptAlias / /home/rene/dacgl_utils/dacgl/wsgi.py
 <Directory /home/rene/dacgl_utils/dacgl>
 WSGIScriptAlias / /home/devpy3/dacgl_utils/dacgl/wsgi.py
 <Directory /home/devpy3/dacgl_utils/dacgl>
Ligne 87: Ligne 88:
La suite dans le dossier `/home/votre-utilisateur/`… La suite dans le dossier `/home/devpy3/`…
Ligne 97: Ligne 98:
sys.path.append('/home/rene/dacgl_utils') # Le chemin vers l'application
from django.core.wsgi import get_wsgi_application

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
Ligne 127: Ligne 132:
Se placer ensuite dans le dossier `/home/votrenomuser/dacgl_utils` et exécuter ces différentes commandes : Se placer ensuite dans le dossier `/home/devpy3/dacgl_utils` et exécuter ces différentes commandes :
Ligne 139: Ligne 144:
python manage.py migrate python3 manage.py migrate
Ligne 158: Ligne 163:
python manage.py makemigrations id2 python3 manage.py makemigrations id2
Ligne 179: Ligne 184:
python manage.py createsuperuser python3 manage.py createsuperuser
Ligne 191: Ligne 196:
python manage.py collectstatic python3 manage.py collectstatic
Ligne 218: Ligne 223:
37 18 * * 6 devpy /usr/local/sbin/utils3-stats.py
38 00 1 * * devpy /usr/local/sbin/utils3-stats-monthly.py
37 18 * * 6 devpy3 /usr/local/sbin/utils3-stats.py
38 00 1 * * devpy3 /usr/local/sbin/utils3-stats-monthly.py

Cette page décrit la mise en place d'un système d'informations précises sur la fréquentation et l'objet des visites dans l'implantation.

Pour cela, on peut utiliser une machine virtuelle sous Debian/Strech.

{i} Notre outil tourne sous Django 1.10.

Concernant mon installation :

  • 1 Gio de RAM
  • Partitions :
    • / (8 Gio)

    • /var (8 Gio)

    • /var/lib (3 Gio)

    • /var/www (25 Gio)

Chez moi, cette VM servira pour les petits services web qui viendront plus tard. Par exemple : visites, inscription des usagers (où nous avons besoins des photos pour identifier visuellement les usagers), … Mais pour vous 1 ou 2 Gio suffiront largement sur /var/www. Surtout que les implantations n’hébergeront plus de site web ; tout est dans le nuage maintenant.

Prérequis:

  • Installation de Debian/Stretch

  • Installation de Apache 2.4
  • /!\ Attention, on va exploiter django avec python3 uniquement. Par conséquent tous les paquets demandant python doivent être ceux fonctionnant sous python3; plus concrètement ceux qui dont le préfixe du nom du paquet est python3-

  • Installation de Django 1.10
  • Installation d'un gestionnaire de base de données : MySQL dans mon cas MariaDb

  • Installation de git

Bon ben… Allons y ! :)

Après l'installation de la nouvelle VM, on installe les paquets :

sudo apt-get install apache2 libapache2-mod-wsgi-py3 mysql-server python3-django python3-mysqldb python3-tz python3-pil

Si git n'est pas installé, veillez à le faire :

sudo apt-get install git

Ensuite, on commence par cloner le dépôt de notre outils :

git clone https://github.com/ongolaboy/dacgl_utils.git

Configuration Apache

Dans mon cas, j'ai créé un VirtualHost pour l'application : visiteur.conf

Voici le contenu de mon fichier /etc/apache2/sites-available/visites.conf :

<VirtualHost>
        ServerName visiteur.cg.auf
        ServerAdmin tech@cg.auf.org
        ErrorLog ${APACHE_LOG_DIR}/visiteurs.cm.auf.org_error.log
        CustomLog ${APACHE_LOG_DIR}/visiteurs.cm.auf.org_access.log combined
        Alias /static/ /var/www/dacgl/static/
        <Directory /var/www/dacgl>
                Require all granted
        </Directory>
        WSGIScriptAlias / /home/devpy3/dacgl_utils/dacgl/wsgi.py
        <Directory /home/devpy3/dacgl_utils/dacgl>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>
</VirtualHost>

Activer votre VirtualHost :

sudo a2ensite visiteur.conf

Configuration MySQL

On va dans notre SGBD, on crée une nouvelle base donnée avec un nouveau utilisateur et un mot de passe.

En passant, j'avais déjà installer mon phpMyAdmin pour aller vite. :D

Mais sinon, on peut créer en ligne de commande :

mysql -u root -p

-- Création de ma base de données "visiteurdb"
CREATE DATABASE visiteurdb CHARACTER SET 'utf8';
-- Création de l'utilisateur "visitor"
CREATE USER 'visitor'@'localhost' IDENTIFIED BY 'Votre mot de passe';
-- Je donne tous les privilèges à mon utilisateur "visitor" (c'est mieux de donner les privilèges juste à ta base)
GRANT ALL PRIVILEGES ON * . * TO 'visitor'@'localhost';

La suite dans le dossier /home/devpy3/

Configuration WSGI

vi dacgl_utils/dacgl/wsgi.py
  1. on ajoute ces deux lignes (juste après import os) :

       1 import sys
       2 
       3 from django.core.wsgi import get_wsgi_application
       4 
       5 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
       6 sys.path.append(BASE_DIR)
    

Configuration Django

vi dacgl_utils/dacgl/setting.py
  1. Ajouter le FQDN (Fully Qualified Domain Name) dans la directive :

       1 ALLOWED_HOSTS = ['gestion-usager.cg.auf'] ''' # 'gestion-usager.cg.auf' est mon FQDN, mettez le vôtre
       2 
    
  2. Modifier les paramètre de la base de donnée :

       1 DATABASES = {
       2    'default': {
       3        'ENGINE': 'django.db.backends.mysql',
       4        'NAME': 'visiteurdb',
       5        'USER':'visitor',
       6        'PASSWORD':'mot-de-passe-de-visitor',
       7        'HOST':'localhost'
       8     }
       9 }
    
  3. Ajout de la ligne suivante :

       1 STATIC_ROOT = '/var/www/dacgl/static' # juste après "STATIC_URL"
    

Déploiement Django

Se placer ensuite dans le dossier /home/devpy3/dacgl_utils et exécuter ces différentes commandes :

python manage.py makemigrations id2

0017_auto_20171016_1741.py:
    - Alter field derniere_modif on abonne
    - Alter field inscription on abonne
    - Alter field date_arrivee on visite
    - Alter field date_arrivee on visiteprof

python3 manage.py migrate

  Applying id2.0005_auto_20170505_0733... OK
  Applying id2.0006_auto_20170509_0825... OK
  Applying id2.0007_auto_20170512_1337... OK
  Applying id2.0008_auto_20170512_1345... OK
  Applying id2.0009_auto_20170512_1355... OK
  Applying id2.0010_auto_20170512_1356... OK
  Applying id2.0011_auto_20170512_1358... OK
  Applying id2.0012_auto_20170512_1538... OK
  Applying id2.0013_auto_20171008_0950... OK
  Applying id2.0014_auto_20171008_1015... OK
  Applying id2.0015_auto_20171008_1740... OK
  Applying id2.0016_auto_20171014_1800... OK
  Applying id2.0017_auto_20171016_1741... OK
  Applying sessions.0001_initial... OK

python3 manage.py makemigrations id2

# On créer le dossier 'dacgl' dans /var/www
sudo mkdir /var/www/dacgl
sudo mkdir /var/www/dacgl/static

Après tous ça, j'ai rencontré ce problème dans mon navigateur :

Bad request (400)

Juste parce que j'avais pas renseigné la directive ALLOW_HOST dans mon setting.py. Mais si vous suivez pas-à-pas tout ce qui est au dessus, vous n'allez pas rencontrer ce problème, sauf si vous avez fait des erreurs de syntaxe ou quelque chose autre.

En cas de problème, voir le log.

Problème rencontré au niveau de syntaxe de ALLOW_HOSTS, oublie d'apostrophes.

Création d'un compte administrateur

Toujours en se positionnant dans le dossier de l'application :

python3 manage.py createsuperuser

Introduisez le username et le password.

Juste après, j'ai rencontré des problème de CSS, n'ayez pas peur :) , le dossier static dans /var/www/dacgl/static est encore vide. Les fichier CSS doivent être dans un dossier contrôlé par Apache.

Collecte des fichiers static

Il s'agit d'un transfert des fichiers CSS, javascript et autres dans notre dossier static.

python3 manage.py collectstatic

You have requested to collect static files at the destination
location as specified in your settings:

    /var/www/dacgl/static

This will overwrite existing files!
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel: yes

Et après voilà l'outil prend en charge automatiquement le CSS et l'outil peut être mis en production. :D

Merci Ongolaboy et IzaneFG

Collecte stats et envoi par courriel

Il existe un dossier scripts dans le projet qui permet d'obtenir quelques infos et de les envoyer périodiquement à des adresses électroniques indiquées.

Il faut les placer dans usr/local/sbin et disposer les tâches cron adéquates dans /etc/cron.d/ . Exemple

  • Contenu /etc/cron.d/dacgl-stats

MAILTO=technique+stats@cm.auf.org

37 18 * * 6 devpy3 /usr/local/sbin/utils3-stats.py
38 00 1 * * devpy3 /usr/local/sbin/utils3-stats-monthly.py


ZAC/Projets/SuiviVisiteurs (dernière édition le 2017-10-24 21:28:03 par WillyManga)