Connexions SSH avec phpseclib et journal des actions
This commit is contained in:
parent
52ecb4204c
commit
f508a2fcb5
8 changed files with 11077 additions and 0 deletions
121
deploy.sh
Executable file
121
deploy.sh
Executable file
|
|
@ -0,0 +1,121 @@
|
|||
#!/bin/bash
|
||||
# =============================================================================
|
||||
# deploy.sh — Deploiement en production pour ServerControl
|
||||
# Usage : ./deploy.sh (depuis la racine du projet, apres un git pull)
|
||||
# =============================================================================
|
||||
|
||||
# ── Couleurs ──────────────────────────────────────────────────────────────────
|
||||
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; NC='\033[0m'
|
||||
ok() { echo -e "${GREEN} [OK]${NC} $1"; }
|
||||
info() { echo -e "${CYAN} [>>]${NC} $1"; }
|
||||
warn() { echo -e "${YELLOW} [!!]${NC} $1"; }
|
||||
fail() { echo -e "${RED} [ERR]${NC} $1"; exit 1; }
|
||||
|
||||
echo ""
|
||||
echo -e "${CYAN} ======================================${NC}"
|
||||
echo -e "${CYAN} ServerControl — Deploiement prod ${NC}"
|
||||
echo -e "${CYAN} ======================================${NC}"
|
||||
echo ""
|
||||
|
||||
# ── 0. Verifications ──────────────────────────────────────────────────────────
|
||||
|
||||
[ ! -f "bin/console" ] && fail "Lance ce script depuis la racine du projet Symfony."
|
||||
|
||||
command -v composer &>/dev/null || fail "Composer introuvable dans le PATH."
|
||||
|
||||
# detecter PHP : cherche php8.4 > php8.3 > php8.2 > php
|
||||
PHP_BIN=""
|
||||
for bin in php8.4 php8.3 php8.2 php; do
|
||||
command -v "$bin" &>/dev/null && { PHP_BIN="$bin"; break; }
|
||||
done
|
||||
[ -z "$PHP_BIN" ] && fail "Aucun binaire PHP trouvé dans le PATH."
|
||||
info "PHP détecté : $PHP_BIN ($($PHP_BIN -r 'echo PHP_VERSION;' 2>/dev/null))"
|
||||
|
||||
# verifier .env.local et proposer de le creer s'il manque
|
||||
if [ ! -f ".env.local" ]; then
|
||||
echo ""
|
||||
warn ".env.local introuvable — ce fichier est obligatoire en production."
|
||||
echo ""
|
||||
read -p " Veux-tu le créer maintenant ? (o/N) " -n 1 -r; echo ""
|
||||
if [[ $REPLY =~ ^[Oo]$ ]]; then
|
||||
echo ""
|
||||
read -p " DATABASE_URL (ex: postgresql://user:pass@127.0.0.1:5432/servercontrol?serverVersion=16&charset=utf8) : " DB_URL
|
||||
read -p " APP_SECRET (chaine aleatoire, min 32 chars) : " APP_SEC
|
||||
read -p " MAILER_DSN (ex: smtp://user:pass@sandbox.smtp.mailtrap.io:2525) : " MAILER
|
||||
cat > .env.local <<EOF
|
||||
APP_ENV=prod
|
||||
APP_DEBUG=0
|
||||
APP_SECRET=${APP_SEC}
|
||||
DATABASE_URL="${DB_URL}"
|
||||
MAILER_DSN="${MAILER}"
|
||||
EOF
|
||||
ok ".env.local crée."
|
||||
else
|
||||
fail "Abandonne. Crée .env.local puis relance le script."
|
||||
fi
|
||||
fi
|
||||
|
||||
# s'assurer que APP_ENV=prod est dans .env.local (sinon les commandes console tournent en dev)
|
||||
if ! grep -q "APP_ENV=prod" .env.local; then
|
||||
warn "APP_ENV=prod absent de .env.local — ajout automatique."
|
||||
echo "APP_ENV=prod" >> .env.local
|
||||
ok "APP_ENV=prod ajouté."
|
||||
fi
|
||||
|
||||
export APP_ENV=prod
|
||||
export APP_DEBUG=0
|
||||
echo ""
|
||||
|
||||
# ── 1. Dependances Composer ───────────────────────────────────────────────────
|
||||
info "Installation des dependances (sans dev, sans scripts)..."
|
||||
# --no-scripts evite que les @auto-scripts Symfony tournent ici
|
||||
# les warnings PHP deprecated de Composer sont redirigés vers /dev/null
|
||||
composer install \
|
||||
--no-dev \
|
||||
--optimize-autoloader \
|
||||
--no-interaction \
|
||||
--no-scripts \
|
||||
--quiet \
|
||||
2>/dev/null
|
||||
ok "Dependances installées."
|
||||
|
||||
# ── 2. Cache : suppression ────────────────────────────────────────────────────
|
||||
info "Suppression du cache..."
|
||||
# on supprime manuellement pour eviter les erreurs si le cache est corrompu
|
||||
rm -rf var/cache/prod 2>/dev/null || true
|
||||
$PHP_BIN bin/console cache:clear --env=prod --no-debug 2>&1 | grep -v "^$" | tail -2
|
||||
ok "Cache supprimé."
|
||||
|
||||
# ── 3. Migrations base de données ─────────────────────────────────────────────
|
||||
info "Migrations Doctrine..."
|
||||
$PHP_BIN bin/console doctrine:migrations:migrate \
|
||||
--no-interaction \
|
||||
--env=prod \
|
||||
2>&1 | grep -v "^\s*$"
|
||||
ok "Migrations OK."
|
||||
|
||||
# ── 4. Assets (asset-mapper) ──────────────────────────────────────────────────
|
||||
info "Compilation des assets..."
|
||||
$PHP_BIN bin/console asset-map:compile --env=prod 2>&1 | grep -v "^\s*$" | tail -3
|
||||
ok "Assets compilés."
|
||||
|
||||
# ── 5. Prechauffage du cache ──────────────────────────────────────────────────
|
||||
info "Prechauffage du cache prod..."
|
||||
$PHP_BIN bin/console cache:warmup --env=prod --no-debug 2>&1 | grep -v "^\s*$" | tail -2
|
||||
ok "Cache prechauffé."
|
||||
|
||||
# ── 6. Permissions sur var/ ───────────────────────────────────────────────────
|
||||
info "Permissions sur var/..."
|
||||
chmod -R 775 var/ 2>/dev/null && ok "Permissions OK." || warn "Impossible de modifier var/ (pas grave si le webserver y a déjà accès)."
|
||||
|
||||
# ── 7. Redemarrage PHP-FPM ────────────────────────────────────────────────────
|
||||
# Descommente la ligne correspondant a ta version de PHP sur le serveur :
|
||||
# sudo systemctl restart php8.4-fpm && ok "php8.4-fpm redemarré." || warn "Echec restart php8.4-fpm."
|
||||
# sudo systemctl restart php8.3-fpm && ok "php8.3-fpm redemarré." || warn "Echec restart php8.3-fpm."
|
||||
# sudo systemctl restart php8.2-fpm && ok "php8.2-fpm redemarré." || warn "Echec restart php8.2-fpm."
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN} ======================================${NC}"
|
||||
echo -e "${GREEN} Deploiement terminé avec succès ! ${NC}"
|
||||
echo -e "${GREEN} ======================================${NC}"
|
||||
echo ""
|
||||
Loading…
Add table
Add a link
Reference in a new issue