
Migration RPi3
Suite au Crash RPi2...
J’en profite donc pour déménager mon site (et màj la version de SPIP)…

Matériel
Voici les modèles RPis que je possède :
- RPi 2 model B v1.1 (c) 2014 (w628) : pour mon site principal
- BCM2836/2709/a01041 = 4x ARMv7@900MHz / 1GB
- RPi 1 model B rev 2 (c) 2011 (w314) : pour le backup du site
- BCM2708/000e = ARM11@700MHz / 512MB
À cela s’ajoute :
- BCM2708/000e = ARM11@700MHz / 512MB
- RPi 1 model B+ v1.2 (c) 2014 (m314) : pour tests multimédia
- BCM2708/0010 = ARM11@700MHz / 512MB
L’objectif est de migrer mon site sur une nouvelle RPi (3 ou 4) plus puissante et de passer ma RPi 2 en backup (et garder mon déjà ancienne RPi 1 pour bidouiller…).
J’opte pour :
- RPi 3 model B v1.2 (c) 2015 (w942) :
- BCM2837 = 64bit 4x ARM cortex-A53 @ 1,2GHz / 1GB
En effet bien que la RPi 4 soit sortie, y-a des pbs de chauffe !!!
- https://www.frandroid.com/hardware/607571_raspberry-pi-4-de-grosses-performances-mais-ca-chauffe-beaucoup
- https://www.minimachines.net/actu/raspberry-pi-3-atteint-presque-100c-38582
- https://www.blog-nouvelles-technologies.fr/73347/raspberry-pi-3-loverpi-heatsink-set/
- https://www.framboise314.fr/refroidir-en-silence-le-raspberry-pi-4-avec-ventilapi4-de-garatronic/
Voici donc ma commande chez Kubii :
- 1 x Raspberry Pi 3 modèle B 1Gb = 35,24€ (-7%)
- 1 x alimentation 5V pour Raspberry Pi 3 B = 7,90€ (5V / 2.5A)
- 2 x dissipateurs thermiques = 1,86€
- 1 x boitier officiel Raspberry Pi 3 = 9,95€
À cela j’ai rajouté une carte SD classe 10 et une clef USB « high speed » :
- 1 x carte mémoire MicroSDHC Ultra 16GB = 6,99€
- 1 x clé USB 3.1 SanDisk Ultra Fit 32Go allant jusqu’à 130Mo/s = 8,98€
Installation
Commencer par installer une distribution Linux optimisée pour la Raspberry Pi :
- J’ai choisi une Raspbian version lite :
Cf. https://www.raspberrypi.org/downloads/raspbian/] (image = 2.1GB)
- Trouver la carte SD... (sans partitions) :
$ sudo ls -ltr /dev/
$ df
- Y copier l’image :
$ sudo dd bs=1M if=2019-09-26-raspbian-buster-lite.img of=/dev/sdb status=progress conv=fsync
+ Cf. : https://raspberry-pi.fr/creation-carte-sd-raspberry-raspbian-sous-gnulinux/
Booter sur clef USB
Afin de limiter un nouveau crash de la carte SD, je décide de mettre le système sur une clef USB.
Pour cela répéter les opérations précédentes sur la clef USB… puis :
- Sur la carte SD :
$ echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
- Booter dessus (seule) et vérifier :
$ vcgencmd otp_dump | grep 17:
17:3020000aSi vous n’obtenez pas une valeur identique, inutile de continuer, le bootcode n’est pas compatible.
- Redémarrer sur la clef USB... (seule) et voilà !
+ Cf. :
- https://raspberry-pi.fr/boot-raspberry-pi-usb/
- https://www.framboise314.fr/boot-simplifie-sur-usb-avec-les-raspberry-pi-1-2-et-3/
- https://www.framboise314.fr/bootez-votre-raspberry-pi-3-sur-une-cle-usb/
P.I. il peut être intéressant aussi de passer le système de fichiers sous F2FS « flash-friendly file system », plus adaptée au mémoires flash :
MàJ
Commencer par (re-)configurer le système (timezone, clavier, password, réseau, ssh) :
$ sudo raspi-config
- Localisation > Locale = C | fr_FR@euro
- Localisation > Timezone = Paris
- Localisation > Keyboard Layout = Generic 105 ; French (alt. Latin-9 only) ; defaults…
- Chanqe User Password > pi
- Advamced Options > Expand Filesystem (normalement fait automatiquement au premier boot)
- Advanced Options > Memory Split = mettre au minimum 16MB for GPU
- Interfacing Options > enable SSH
- Network Options > Hostname = w942
- Network Options > Wifi = …
- Update
Et màj :
$ sudo apt-get install aptitude
$ sudo aptitude update
$ sudo aptitude upgrade
P.I. afin de préserver la carte / clef, on peut aussi mettre en place un système de logs en mémoire via log2ram par exemple :
LESP = Nginx + PHP
Ensuite la première étape pour avoir un serveur web opérationnel consiste à :
- Installer un serveur web : on choisira Nginx pour sa légèreté p/r Apache ;
- Installer PHP ;
- On n’installera pas de base MySQL car je compte m’appuyer sur SQlite (par défaut avec SPIP 3).
Pour faire travailler Nginx avec PHP et SQlite :
$ sudo aptitude install nginx
$ sudo aptitude install sqlite3 php-sqlite3
$ sudo aptitude install php-fpm php-apcu php-cli php-json php-opcache php-readline php-mbstring php-xml php-gd php-curl
Sur les conseils de Pablo Ruth nous rajoutons :
- PHP-FPM, un gestionnaire de processus FastCGI pour PHP, permettant d’éviter une surconsommation de mémoire et d’IO :
# vi /etc/php5/fpm/pool.d/www.conf
;listen = 127.0.0.1:9000
listen = /var/run/php/php7.3-fpm.sock
# /etc/init.d/php7.3-fpm restart
- Et PHP-APC, un cache PHP qui peut diviser par trois le temps d’exécution :
# vi /etc/php/7.3/fpm/conf.d/20-apcu.ini
extension=apcu.so
apc.shm_size=100
# /etc/init.d/php7.3-fpm restart
P.I. pour pouvoir envoyer de gros fichiers via PHP augmenter les valeurs par défaut de :
# /etc/php/7.3/fpm/php.ini
post_max_size = 32M
upload_max_filesize = 32M
# /etc/init.d/php7.3-fpm restart
# vi /etc/nginx/nginx.conf
client_max_body_size 32M;
Pour tester notre toute nouvelle installation nous allons créer un nouveau fichier de configuration mysites dans NginX :
# vi /etc/nginx/sites-available/mysites
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
#listen 443 ssl default_server;
#listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
#include snippets/snakeoil.conf;
root /var/www;
index index index.html index.htm;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404
try_files $uri $uri/ =404;
}
# Pass the PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-cgi (or other tcp sockets):
#fastcgi_pass 127.0.0.1:9000;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}
# Deny access to .htaccess files,
# if Apache's document root concurs with nginx's one
location ~ /\.ht {
deny all;
}
}
Ce site est available, mais pas enabled, donc :
# cd /etc/nginx/sites-enabled
# rm default
# ln -s ../sites-available/mysites
# service nginx restart
Et nous rajoutons 2 pages, une statique et une dynamique :
# vi /var/www/index.html
<html><body>Welcome to my sites!</body></html>
# vi /var/www/info.php
<?php phpinfo(); ?>
# chown -R www-data.www-data /var/www
Puis visitez http://localhost et/ou http://localhost/info.php, tout devrais fonctionner :)
Déménagement du site SPIP
Suivre la procédure : https://www.spip.net/fr_article3141.html#Option-2-ne-recuperer-que-les-donnees-et-la-personnalisation ...
Et pour la màj SPIP :
Et si comme moi vous avez « error 502 » : https://www.scalescale.com/tips/nginx/502-bad-gateway-error-using-nginx/
Synchro./ backups
Reste à mettre en place un système de synchro. & backups…
- Backup de la base SQlite
- Rsync RPi 2 à partir RPi 3
- Clone RPi 2 sur clef USB
- Mirror RPi 3 sur http://klnavarro.free.fr
- Backup RPi 3 sur ftp://klnavarro@ftpperso.free.fr/dup/
Pour cela on s’appuiera sur les outils :
-
sqlite3 bdd.sqlite ".backup bdd-20191021.sqlite"
-
rsync -avz -O --delete --rsh='ssh -p xxxxxx' pi@w942:/var/www/blog/ /var/www/blog/
-
rpi-clone sda
(cf. https://www.framboise314.fr/clonez-la-carte-sd-de-votre-raspberry-pi/) -
lftp -e "mirror -eRv /var/www/blog/ /blog/; quit;" -u klnavarro,xxxxxx ftp://ftpperso.free.fr
-
duplicity --full-if-older-than 1M /var/www/ ftp://klnavarro:xxxxxx@ftpperso.free.fr/dup/
À mettre en crontab…