Commit 0c00364b authored by Hamza Dely's avatar Hamza Dely

README + exemples de configuration uWSGI/Nginx

parent e3295c22
Note Kfet
=========
Paquets requis
--------------
Les paquets peuvent être récupérés via APT ou PIP.
* python3 (>= 3.4)
* python3-django (>= 1.11)
* python3-psycopg2 (>= 2.5)
* python3-jinja2 (>= 2.9)
* python3-django-filters (>= 1.0)
* postgresql
* postgresql-plpython3
* nginx
* uwsgi
* uwsgi-plugin-python3
Installation
------------
1. Clonage du dépôt
Cloner le dépôt à l'endroit souhaité (par exemple `/var/www/note-kfet/`)
$ git clone https://gitlab.crans.org/dely/note-kfet.git
Le dossier contenant le projet sera noté dans la suite `$NOTEREPO`.
On génère ensuite un utilisateur spécial pour le projet.
$ sudo adduser --system --group --home $NOTEREPO --no-create-home --disabled-password --disabled-login note
$ sudo chown -R note:note $NOTEREPO
$ sudo chmod -R g+w $NOTEREPO
$ sudo find $NOTEREPO -type d -exec chmod g+s {} \;
Pensez à vous rajouter au groupe 'note' et à changer votre umask lorsque vous travaillez
sur le projet.
Générez une clé secrète pour votre projet et mettez là dans note_kfet/secrets.py.
Ajoutez également le domaine depuis lequel vous allez servir le site dans ALLOWED_HOSTS.
2. Mise en place de la base de données
Après avoir cloné le dépôt à l'endroit souhaité, il faut mettre en place la BDD :
$ sudo -u postgres psql
postgres=# CREATE USER note;
postgres=# CREATE DATABASE note_kfet OWNER note;
$ sudo service postgresql reload
Il faut ensuite ajouter les lignes adéquates dans le fichier `pg_hba.conf` en fonction de votre
infrastructure. Consultez la [doc PostgreSQL](http://docs.postgresql.fr/9.6/client-authentication.html#auth-pg-hba-conf)
pour trouver la marche à suivre.
Vous pouvez ensuite installer le schéma de la base de données et y insérer vos données.
$ sudo -u note $NOTEREPO/manage.py migrate
3. Configuration de uWSGI + Nginx
Une fois la base de données mise en place, il faut mettre en place le serveur Web. Plus d'informations
sont disponbibles [ici](http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html?highlight=Django).
Pour uWSGI :
$ sudo cp $NOTEREPO/note_kfet/note.uwsgi /etc/uwsgi/apps-available/note.ini
$ sudo ln -s /etc/uwsgi/apps-available/note.ini /etc/uwsgi/apps-enabled/note.ini
$ sudo service uwsgi reload
Pour Nginx :
$ sudo cp $NOTEREPO/note_kfet/note.nginx /etc/nginx/sites-available/note
$ sudo ln -s /etc/nginx/sites-available/note /etc/uwsgi/sites-enabled/note
$ sudo service nginx reload
Vous pouvez ensuite essayer d'accéder à la note depuis votre navigateur.
upstream django {
server unix:///run/uwsgi/app/note_kfet/socket;
}
server {
listen 80;
listen [::]:80;
server_name note.crans.org;
return 301 https://$uri;
}
server {
listen 443 ssl;
listen [::]:443;
server_name note.crans.org;
keepalive_timeout 70;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_certificate /etc/ssl/private/note.crt;
ssl_certificate_key /etc/ssl/private/note.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
charset utf-8;
client_max_body_size 75M;
location /media {
alias /var/www/note-kfet/media/;
}
location /static {
alias /var/www/note-kfet/static/;
}
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
}
}
[uwsgi]
plugin = python3
chdir = /var/www/note-kfet/
module = note_kfet.wsgi
master = true
processes = 8
socket = /run/uwsgi/app/note_kfet/socket
uid = note
gid = www-data
vacuum = true
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment