technique:gvot

Ceci est une ancienne révision du document !


Vote en ligne : GvoT

Debian 10 + mariadb ou postgresql pour production

sqlite est utilisé en environnement de développement

apt install python3 virtualenv git make mariadb-client python3-mysqldb
# Si besoin de MysqL sur le même serveur : ajouter mariadb-server
cd /srv
git clone https://forge.cliss21.org/cliss21/gvot
cd /srv/gvot

Attention, la commande make init nous fait passer en mode 'vi config.env' où il faut rentrer les paramètres de MySQL

Il faut au préalable avoir préparé le terrain.

mysql_secure_installation
Mot de passe root ? (vide par défaut)
Set root password ? Y
New Password : xxxx
Re-enter New Password : xxxx
OK.
Remove anonymous user : (Y/n) : Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Création de base et user pour gvot

mysql -u root -p
+ Mot de passe créé.
CREATE DATABASE votes character set utf8 collate utf8_bin;
GRANT ALL PRIVILEGES ON votes.* TO votes@localhost IDENTIFIED by 'Mot2Passe';
FLUSH PRIVILEGES;
QUIT;

Prévoir aussi l'envoi de mail avec le smtp

Editer le fichier de configuration config.env (copie de config.env.example)

ENV=production

DJANGO_SECRET_KEY=MACLEFACHANGER

DJANGO_ALLOWED_HOSTS=votes.cemea.org,localhost, 127.0.0.1 # A vérifier ?

DJANGO_DATABASE_URL=mysql://votes:Mot2Passe@127.0.0.1:3306/votes

DJANGO_EMAIL_URL=smtp+tls://envoismtp@cemea.asso.fr:Mo2pass@mail.cemea.org:587 # remplacer @ par %40
# tester la bonne syntaxe avec : python3 -c 'from urllib.parse import quote as q;print(q("machines@cemea.asso.fr")+":"+q("Motdepasse"))'

DEFAULT_FROM_EMAIL=administrateur@cemea.asso.fr

ADMINS='Admin <administrateur@cemea.asso.fr>'

BASE_DIR=/srv/gvot

Terminer par la restriction des droits

chmod o-rwx /srv/gvot/config.env

Puis le lancement de la préocédure d'initialisation

cd /srv/gvot

make init

Mais plantage sur le module python mysqlclient utilisé par Django qui n'est pas installé et compatible.

Procédure pour installer mysqlclient depuis cette page : https://pypi.org/project/mysqlclient/

apt-get remove python3-mysqldb
apt-get install python3-dev default-libmysqlclient-dev build-essential

Puis se connecter à l'environnement virtuel :

cd srv/gvot/ && source venv/bin/activate

pip3 install mysqlclient

Et relancer la procédure d'install si besoin :

make init

make update
make serve

Pour redémarrer, lancer un make update (ou rebooter le serveur et relancer un make serve).

Le service est alors actif localement sur le port 8000 sur la boucle locale 127.0.0.1

Reste à proposer une interface accessible depuis l'extérieur avec Nginx

apt install nginx

Modifier le default ou le désactiver et recréer une conf gvot.conf dans /etc/nginx/sites-available/gvot.conf (puis faire un lien vers /etc/nginx/sites-enable/gvot.conf)

gvot.conf :

server {
    server_name gvot;
    access_log /var/log/nginx/gvot.access.log;
    error_log /var/log/nginx/gvot.error.log;

    location / {
        proxy_pass http://127.0.0.1:8000;
    }
}

server {
    server_name gvot;
    listen 80;
    return 301 https://$host$request_uri;
}

Et relancer nginx

systemctl restart nginx
cd /srv/gvot

./venv/bin/python manage.py createsuperuser --username francois --email francois.audirac@cemea.asso.fr

Et saisir un mot de passe complexe (./venv/bin/python manage.py createsuperuser : marche aussi).

Et relancer le service make serve

Pour info, si on modifie des paramètres de config.env pour passer en mode développement (et les options de Django qui vont avec), il faut relancer un make update pour téléchargements des librairies python complémentaires.

Configuration de votes

Créer une page “Scrutins CEMEA” de type “Liste de scrutions”, lui donner un titre “Scrutins CEMEA” et la publier

Dans cet espace, il faut alors créer une page qui sera le scrutin.

  • technique/gvot.1610411334.txt.gz
  • Dernière modification : 2021/01/12 01:28
  • de francoisa