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