⇤ ← Version 1 à la date du 2013-03-10 00:57:37
2794
Commentaire: Premier jet.
|
5233
parce que les daemons, c'est la vie
|
Texte supprimé. | Texte ajouté. |
Ligne 8: | Ligne 8: |
Backend : |
=== Backend === |
Ligne 14: | Ligne 13: |
Frontend : | === Frontend === |
Ligne 16: | Ligne 15: |
python-django gunicorn | python-django gunicorn nginx |
Ligne 20: | Ligne 19: |
=== Backend === | |
Ligne 34: | Ligne 33: |
=== Frontend === | |
Ligne 43: | Ligne 42: |
== TODO == TODO : expliquer comment on lance tout ça proprement avec des daemons. |
|
Ligne 65: | Ligne 61: |
# Pour le frontend django, si lancé en tant que www-data (avec gunicorn) notemap www-data note |
|
Ligne 104: | Ligne 102: |
=== Backend === | |
Ligne 113: | Ligne 112: |
=== Frontend === | |
Ligne 117: | Ligne 117: |
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 [[#R.2BAOk-cup.2BAOk-rer_les_codes|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/init.d/ sudo ln -s /home/note/Django_Client/utils/gunicorn-note.init gunicorn-note sudo service nginx restart sudo service gunicorn-note 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 l'initscript gunicorn : * La variable {{{NOTEDJANGODIR}}} |
Installer la NoteKfet2015 chez soi
Pour la tester pour développer, ou bien pour la déployer sur le serveur du BDE.
Sommaire
Les paquets à installer
Backend
python python-psycopg2 postgresql
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 secrets.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/init.d/ sudo ln -s /home/note/Django_Client/utils/gunicorn-note.init gunicorn-note sudo service nginx restart sudo service gunicorn-note 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 l'initscript gunicorn :
La variable NOTEDJANGODIR