Installation d’un raspberrrypi 3

Carte SD

Installation du rpi-imager

sudo apt install rpi-imager

On lance l’application rpi-imager

rpi-imager

Choix de l’OS raspberrypi 64 bits with no Desktop.

Sélection de la carte SD

Ne pas oublier de paramétrer l’OS (login, nom du raspberrypi, etc…)

Retrait de la carte SD, installation de cette dernière dans le raspberrypi. On branche le raspberrypi, on branche le RJ-45. Connection au raspberry par ssh

Mise à jour de l’OS

sudo apt update
sudo apt upgrade
sudo apt autoremove
sudo apt autoclean

Le raspberry est prêt

Installation du site

Création d’un répertoire pour y mettre le site

mkdir site

On se positionne dans le dossier et on créée un environnement virtuel

python3 -m venv env
# on execute l'environnement virtuel
source env/bin/activate
# on met à jour l'installateur pip
pip install --upgrade pip

On install git

sudo apt install git

On clone le projet ced091

git clone https://github.com/ced091/ced091.git

Installation de postgresql et des dépendances pour psycopg2

sudo apt install postgresql
sudo apt install libpq-dev python3-dev

Installation des bibliotheques de python

pip install -r utils/requirements.txt

Préparation de la base de données, pour cela on se connecte sous postgres

sudo -iu postgres
psql
CREATE ROLE role_name WITH CREATEDB;
ALTER ROLE role_name WITH LOGIN;

Retour sous role_name et creation de la base de données

CREATEDB nom_base

Vérification que le site fonctionne bien

./manage.py runserver

Installation des serveurs NGinx et Gunicorn

On commence par installer vim si il ne l’est pas

sudo apt install vim

Installation de nginx

sudo apt install nginx

Création du fichier de configuration nginx

cd /etc/nginx/sites-availabled
sudo vim ced091

Voici le fichier de configuration édité

server {
 server_name ced091.fr.nf;
  location / {
     aio threads;
     include proxy_params;
     proxy_pass http://unix:/run/gunicorn.sock;
 }
 location /media  {
     alias /home/cedric/site/media;  # your Django project's media files - amend as required
     }

     location /static {
     alias /home/cedric/site/static; # your Django project's static files - amend as required
     }
}
server {
 listen 80;
 server_name ced091.fr.nf;
}

Création du lien symbolique dans sites-enabled

ln -s /etc/nginx/sites-availabled/ced091 /etc/nginx/sites-enabled/ced091

On vérifie la bonne configuration de l’édition

sudo nginx -t

Création du fichier de configuration gunicorn.socket

sudo vim /etc/systemd/system/gunicorn.socket

On édite

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

Création du fichier de configuration gunicron.service

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=cedric
Group=www-data
WorkingDirectory=/home/cedric/site/ced091
ExecStart=/home/cedric/site/env/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/run/gunicorn.sock -m 007\
          ced091.wsgi:application

[Install]
WantedBy=multi-user.target

on lance le serveur gunicorn

sudo systemctl start gunicorn

Installation du certificat, on install certbot

sudo apt install python3-certbot-nginx
sudo certbot --nginx

On peut maintentant visualiser que le site fonctionne bien

Mettre en place la base de données dans le dossier site/ced091

source env/bin/activate
./manage.py migrate
./manage.py collectstatic

Chose étrange, j’ai du copier des dossiers « admin », « js », « foundation-icons », etc dans le dossier static

Egalement les droits de mon dossier principal « cedric », n’avait pas les « x » sur groupe et autres. Donc

chmod +x cedric

On va créer un superuser

./manage.py createsupersuser

et le site est en fonctionnement

Pour tester sans navigateur

wget -qO- https://ced091.fr.nf