Dossier de téléchargement sur stockage externe (Plesk) avec shell chrooted
Prérequis
- Comme les symlinks ne fonctionnent pas comme prévu dans un environnement chrooted, on doit mounter le disque dans un dossier de l'envirionnement chrooted. Par exemple :
mount --bind /source /destination
Variables utilisées
- Subscription name : (ex.: jmcouillard.com)
- Domain name : (ex.: jmcouillard.com)
- user:group : user:group (ex.: jmcouillard:psacln)
- user:group : user:group (ex.: jmcouillard:psacln)
- hostname : (ex.: jmcouillard.com, 66.223.63.12)
Étape 1 : Copier le dossier de fichier
Drupal 9
mkdir /storage/var/www/vhosts/<subscription>/
mkdir /storage/var/www/vhosts/<subscription>/<domain>/
mkdir /storage/var/www/vhosts/<subscription>/<domain>/files/
cp -R /var/www/vhosts/<subscription>/httpdocs/<domain>/web/sites/default/files/** /storage/var/www/vhosts/<subscription>/<domain>/files/
chown -R <user:group> /storage/var/www/vhosts/<subscription>/
rm -Rf /var/www/vhosts/<subscription>/httpdocs/<domain>/web/sites/default/files
mkdir /var/www/vhosts/<subscription>/httpdocs/<domain>/web/sites/default/files
chown -R <user:group> /var/www/vhosts/<subscription>/httpdocs/<domain>/web/sites/default/files
chmod 755 -R /var/www/vhosts/<subscription>/httpdocs/<domain>/web/sites/default/files
mount --bind /storage/var/www/vhosts/<subscription>/<domain>/files/ /var/www/vhosts/<subscription>/httpdocs/<domain>/web/sites/default/files
Drupal 7
mkdir /storage/var/www/vhosts/<subscription>/
mkdir /storage/var/www/vhosts/<subscription>/<domain>/
mkdir /storage/var/www/vhosts/<subscription>/<domain>/files/
cp -R /var/www/vhosts/<subscription>/httpdocs/<domain>/sites/default/files/** /storage/var/www/vhosts/<subscription>/<domain>/files/
chown -R <user:group> /storage/var/www/vhosts/<subscription>/
rm -Rf /var/www/vhosts/<subscription>/httpdocs/<domain>/sites/default/files
mkdir /var/www/vhosts/<subscription>/httpdocs/<domain>/sites/default/files
chown -R <user:group> /var/www/vhosts/<subscription>/httpdocs/<domain>/sites/default/files
chmod 755 -R /var/www/vhosts/<subscription>/httpdocs/<domain>/sites/default/files
mount --bind /storage/var/www/vhosts/<subscription>/<domain>/files/ /var/www/vhosts/<subscription>/httpdocs/<domain>/sites/default/files
Wordpress
mkdir /storage/var/www/vhosts/<subscription>/
mkdir /storage/var/www/vhosts/<subscription>/<domain>/
mkdir /storage/var/www/vhosts/<subscription>/<domain>/uploads/
cp -R /var/www/vhosts/<subscription>/httpdocs/<domain>/wp-content/uploads/** /storage/var/www/vhosts/<subscription>/<domain>/uploads/
chown -R <user:group> /storage/var/www/vhosts/<subscription>/
rm -Rf /var/www/vhosts/<subscription>/httpdocs/<domain>/wp-content/uploads/
mkdir /var/www/vhosts/<subscription>/httpdocs/<domain>/wp-content/uploads
chown -R <user:group> /var/www/vhosts/<subscription>/httpdocs/<domain>/wp-content/uploads/
chmod 755 -R /var/www/vhosts/<subscription>/httpdocs/<domain>/wp-content/uploads/
mount --bind /storage/var/www/vhosts/<subscription>/<domain>/uploads/ /var/www/vhosts/<subscription>/httpdocs/<domain>/wp-content/uploads/
Étape 2 : Ajouter le mount automatiquement au démarrage
Option 1 : utiliser un script au démarrage
Il s'agit de créer un fichier .sh
qui sera exécuté au démarrage du serveur.
Sur le serveur, créer un fichier .sh
et lui accorder les autorisations d'exécution (744). Par exemple : /root/startup-mount-script.sh
. Ensuite, remplir le fichier avec chacun des dossier à reconnecter au démarrage.
Exemple pour Drupal :
mount --bind /storage/var/www/vhosts/<subscription>/<domain>/files/ /var/www/vhosts/<subscription>/httpdocs/<domain>/sites/default/files
Exemple pour Wordpress :
mount --bind /storage/var/www/vhosts/<subscription>/<domain>/uploads/ /var/www/vhosts/<subscription>/httpdocs/<domain>/wp-content/uploads
Pour exécuter le script au démarrage, l est possible d'y arriver simplement en utilisant Plesk. Dans la section Scheduled tasks, créer un tâche avec comme paramètre de temporalité @reboot
:
Option 2 : la vraie méthode, risquée (fstab)
Dans le fichier /etc/fstab
, ajouter la ligne suivante sous la forme /source /destination none bind
. Utilisez la commande suivante pour automatiser l'ajout de la ligne :
Exemple pour Drupal :
echo '/storage/var/www/vhosts/<subscription>/<domain>/files/ /var/www/vhosts/<subscription>/httpdocs/<domain>/sites/default/files none bind' >> /etc/fstab
Exemple pour Wordpress :
echo '/storage/var/www/vhosts/<subscription>/<domain>/uploads/ /var/www/vhosts/<subscription>/httpdocs/<domain>/wp-content/uploads none bind' >> /etc/fstab
Attention : un fichier fstab
qui contient des dossiers non existants ou non valide empêchera le serveur de démarrer!!!