Crans
  • Commentaires
  • Page immuable
  • Menu
    • Affichage
    • Carte locale du site
    • Pièces jointes
    • Informations
    • Code source
  • Connexion

Navigation

  • Modifications récentes
  • Recherche avancée
  • Aide
Version 7 à la date du 2014-10-15 11:35:28
CransWiki:
  • NoteKfet
  • NoteKfet2015
  • TestLocal

Installer la NoteKfet2015 chez soi

Pour la tester pour développer, ou bien pour la déployer sur le serveur du BDE.

Sommaire

  1. Installer la NoteKfet2015 chez soi
    1. Les paquets à installer
      1. Backend
      2. Frontend
    2. Récupérer les codes
      1. Backend
      2. Frontend
    3. Bases de données
      1. Backend
      2. Frontend
    4. Tester en standalone
      1. Backend
      2. Frontend
    5. Lancer tout ça proprement
      1. Backend
      2. Frontend
    6. Ça marche pas
      1. Django

Les paquets à installer

Backend

python python-psycopg2 postgresql python-beautifulsoup

(python-beautifulsoup n'est nécessaire que pour les éditions du Wiki)

Frontend

python-django gunicorn nginx

Récupérer les codes

Backend

On supposera qu'on est dans /home/note en tant qu'user note, même si ce n'est pas nécessaire.

git clone http://bde2.crans.org/git/Note_Kfet_2015_server.git

cd Note_Kfet_2015_server.git/config
cp secrets.py.sample secrets.py

Puis éditer config/config.py et adapter basedir et photosdir si on n'était pas dans /home/note/.

Frontend

git clone http://bde2.crans.org/git/Django_Client.git

cd Django_Client
cp secrets.py.sample secrets.py

Penser à mettre une vraie SECRET_KEY dans secrets.py et corriger ROOT_PATH dans settings.py si ce n'est pas /home/note/.

Bases de données

Backend

La note a besoin d'une base de données pour fonctionner. Et c'est mieux si elle n'est pas vide.

On a besoin de pouvoir s'identifier en tant qu'utilisateur PostgreSQL note.

Dans /etc/postgresql/<version>/main/pg_hba.conf :

# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD
local   all             note                                    ident map=notemap

et dans /etc/postgresql/<version>/main/pg_ident.conf :

# MAPNAME       SYSTEM-USERNAME         PG-USERNAME
notemap         username                note
# Pour le frontend django, si lancé en tant que www-data (avec gunicorn)
notemap         www-data                note

et on crée l'user :

sudo -u postgres psql
postgres=# CREATE ROLE note LOGIN;

Maintenant, la base. Heureusement, dans le dépôt git, il y a déjà un script pour créer une base et mettre deux-trois trucs dedans histoire de pouvoir commencer.

Pensez à changer NOTEUSER au début du script si vous ne voulez pas l'exécuter en tant que l'utilisateur UNIX note.

cd Note_Kfet_2015_server/recreate/

sudo ./recreate_database.sh

Frontend

Django aussi a besoin de sa base de données pour tourner.

sudo -u postgres createdb django_client
sudo -u postgres psql
postgres=# ALTER DATABASE django_client OWNER TO note;

Puis

cd Django_Client/
./manage.py syncdb

Tester en standalone

On peut lancer la note en standalone, en foreground.

Backend

cd Note_Kfet_2015_server/serveur
./Serveur.py

2013/03/10 00:48:58 MainServer :: Server started.
Debug levels : file=5 stdout=5
2013/03/10 00:48:58 MainServer :: Ecoute sur 0.0.0.0:4242

Frontend

cd Django_Client
./manage.py runserver 0.0.0.0:8000

Et vous pouvez tester sur http://<votre IP>:8000/note

Ah, j'oubliais : dans cette base de données par défaut, il y a quelques utilisateurs, ils ont tous pour mot de passe plop.

Lancer tout ça proprement

En fait, lancer en standalone, c'est moche. Tout est prévu pour pouvoir être lancé en daemon.

On commence par créer l'utilisateur qui va faire tourner la note. Par soucis de simplicité, il s'appelera note. Si vous voulez l'appeler autrement, faites comme bon vous semble, j'essaierai de signaler autant que j'y penser les endroits où il faudra penser à changer les variables en conséquence.

On supposera également que les git clone de tout à l'heure ont bien été faits dans /home/note

sudo adduser note

Backend

cd /etc/init.d/
sudo ln -s /home/note/Note_Kfet_2015_server/initscript note

(éditez les variables USER et DIRECTORY)

La première fois, il faut créer le dossier /var/log/note et s'assurer que l'utilisateur note (ou whatever) peut écrire dedans.

À partir de là, sudo service note start permet de lancer le backend de la note comme n'importe quel service.

Frontend

NB : c'est uniquement à partir de là qu'on a besoin des paquets gunicorn et nginx

cd /etc/nginx/sites-available/
sudo ln -s /home/note/Django_Client/utils/note.nginx note
cd /etc/nginx/sites-enabled/
sudo ln -s ../sites-available/note
cd /etc/gunicorn.d/
sudo ln -s /home/note/Django_Client/utils/gunicorn.d-note note

sudo service nginx restart
sudo service gunicorn start

Pour générer les certificats en question :

sudo su
cd /etc/ssl/
mkdir note
cd note/
openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -keyout note-django.key -out note-django.crt
chmod 600 note-django.key

Lignes à éditer :

  • Dans le fichier de conf de nginx :
    • server_name     note2 note2.crans.org;

    • rewrite ^ https://note2.crans.org$request_uri permanent;

    • server_name note2 note2.crans.org;

    • alias /home/note/Django_Client/static;

    • Les paths des certificats SSL
  • Dans le fichier de conf gunicorn :
    • La variable 'working_dir'

Maintenant que c'est www-data qui lance le frontend, il faut qu'il ait le droit de créer les photos :

sudo chgrp www-data /home/note/Django_Client/media/photos
sudo chmod g+ws /home/note/Django_Client/media/photos

Ça marche pas

Django

Attention, nginx est tatillons sur les options.

On ne peut pas préciser plus d'une fois ipv6only=on (donc comme il est dans le fichier note.nginx, il faut qu'il ne soit pas dans le fichier default).

  • Propulsé par MoinMoin
  • Mentions légales