feat : script setup.sh pour le déploiement initial de Folio
Crée les dossiers requis, applique setgid sur data/ et _cache/ pour que les fichiers héritent du groupe web (www-data) quelle que soit leur origine (PHP ou rsync), installe les dépendances et lance les migrations SQL. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Executable
+69
@@ -0,0 +1,69 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# setup.sh — déploiement initial de Folio sur un serveur
|
||||||
|
#
|
||||||
|
# Usage : sudo ./scripts/setup.sh [--web-group www-data] [--data-dir /chemin/data]
|
||||||
|
#
|
||||||
|
# Ce script est idempotent : il peut être relancé sans risque.
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
ROOT="$SCRIPT_DIR/.."
|
||||||
|
|
||||||
|
# ─── Paramètres ──────────────────────────────────────────────────────────────
|
||||||
|
WEB_GROUP="www-data"
|
||||||
|
DATA_DIR="$ROOT/data"
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
--web-group) WEB_GROUP="$2"; shift 2 ;;
|
||||||
|
--data-dir) DATA_DIR="$2"; shift 2 ;;
|
||||||
|
*) echo "Option inconnue : $1"; exit 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# ─── Vérifications préalables ─────────────────────────────────────────────────
|
||||||
|
if [[ ! -f "$ROOT/.env" ]]; then
|
||||||
|
echo "✗ Fichier .env manquant. Copier .env.example en .env et remplir les valeurs."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! getent group "$WEB_GROUP" > /dev/null 2>&1; then
|
||||||
|
echo "✗ Groupe '$WEB_GROUP' introuvable. Utiliser --web-group <groupe>."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ─── Dépendances PHP ──────────────────────────────────────────────────────────
|
||||||
|
echo "→ Installation des dépendances PHP..."
|
||||||
|
composer install --no-dev --optimize-autoloader --working-dir="$ROOT"
|
||||||
|
|
||||||
|
# ─── Dossiers requis ─────────────────────────────────────────────────────────
|
||||||
|
echo "→ Création des dossiers..."
|
||||||
|
mkdir -p "$DATA_DIR"
|
||||||
|
mkdir -p "$ROOT/public/_cache"
|
||||||
|
mkdir -p "$ROOT/.sessions"
|
||||||
|
|
||||||
|
# ─── Permissions ─────────────────────────────────────────────────────────────
|
||||||
|
echo "→ Configuration des permissions (groupe : $WEB_GROUP)..."
|
||||||
|
|
||||||
|
# data/ : setgid pour héritage de groupe + lecture/écriture propriétaire et groupe
|
||||||
|
chown -R :"$WEB_GROUP" "$DATA_DIR"
|
||||||
|
chmod g+s "$DATA_DIR"
|
||||||
|
find "$DATA_DIR" -type d -exec chmod g+s {} +
|
||||||
|
find "$DATA_DIR" -exec chmod ug+rw {} +
|
||||||
|
|
||||||
|
# public/_cache/ : créé et écrit par PHP
|
||||||
|
chown -R :"$WEB_GROUP" "$ROOT/public/_cache"
|
||||||
|
chmod g+s "$ROOT/public/_cache"
|
||||||
|
find "$ROOT/public/_cache" -exec chmod ug+rw {} +
|
||||||
|
|
||||||
|
# .sessions/ : écrit par PHP
|
||||||
|
chown -R :"$WEB_GROUP" "$ROOT/.sessions"
|
||||||
|
chmod 770 "$ROOT/.sessions"
|
||||||
|
|
||||||
|
# ─── Migrations SQL ───────────────────────────────────────────────────────────
|
||||||
|
echo "→ Migrations SQL..."
|
||||||
|
php "$ROOT/database/migrate.php"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "✓ Folio est prêt."
|
||||||
|
echo " Vérifier que APP_URL et ADMIN_EMAIL sont corrects dans .env."
|
||||||
Reference in New Issue
Block a user