- Configuration du debug conditionnel pour dev/recette - Fonction debug() globale avec niveaux - Logging des requêtes SQL - Handlers d'exceptions et d'erreurs globaux 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
101 lines
4.8 KiB
Bash
Executable File
101 lines
4.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Script de déploiement de Cleo vers l'environnement de développement
|
|
|
|
cd /Users/pierre/dev/cleo
|
|
|
|
# Configuration du serveur hôte Debian 12
|
|
HOST_SSH_HOST=195.154.80.116 # Adresse IP du serveur hôte
|
|
HOST_SSH_USER=root # Utilisateur SSH sur le serveur hôte
|
|
HOST_SSH_PORT=22 # Port SSH du serveur hôte
|
|
HOST_SSH_KEY=/Users/pierre/.ssh/id_rsa_mbpi # Clé SSH privée pour accéder au serveur hôte
|
|
|
|
# Configuration du conteneur Incus hébergeant cette application
|
|
CT_PROJECT_NAME=default # Nom du projet Incus où se trouve le conteneur
|
|
CT_NAME=dva-front # Nom du conteneur Incus
|
|
CT_IP=13.23.33.42 # IP interne du conteneur Incus
|
|
CT_SSH_USER=root # Utilisateur SSH dans le conteneur
|
|
CT_SSH_PORT=22 # Port SSH interne du conteneur
|
|
CT_SSH_KEY=/root/.ssh/id_rsa_in3_pierre # Clé SSH privée pour accéder au conteneur
|
|
|
|
# Configuration de l'application
|
|
DOMAIN_NAME=dcleo.unikoffice.com # Nom de domaine du site
|
|
SERVER_PORT=3000 # Port du serveur Node.js
|
|
ADMIN_PORT=3001 # Port du serveur d'administration
|
|
DEPLOY_DIR=/var/www # Répertoire de déploiement sur le conteneur
|
|
APP_NAME=cleo # Nom de l'application et du fichier de config nginx
|
|
|
|
# Propriétaire et groupe pour les fichiers et dossiers de destination
|
|
OWNER=nginx
|
|
GROUP=nginx
|
|
|
|
# Vérifier que les variables nécessaires sont définies
|
|
if [ -z "$HOST_SSH_HOST" ] || [ -z "$HOST_SSH_USER" ] || [ -z "$CT_NAME" ] || [ -z "$CT_PROJECT_NAME" ]; then
|
|
echo "Erreur: Variables HOST_SSH_HOST, HOST_SSH_USER, CT_NAME et CT_PROJECT_NAME requises dans $ENV_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# Variables pour les alertes (optionnelles)
|
|
ALERT_EMAIL=${ALERT_EMAIL:-""}
|
|
DISCORD_WEBHOOK_URL=${DISCORD_WEBHOOK_URL:-""}
|
|
|
|
# Utiliser les valeurs par défaut si non définies
|
|
HOST_SSH_PORT=${HOST_SSH_PORT:-22}
|
|
SERVER_PORT=${SERVER_PORT:-3000}
|
|
ADMIN_PORT=${ADMIN_PORT:-3001}
|
|
DOMAIN_NAME=${DOMAIN_NAME:-$CT_IP}
|
|
DEPLOY_DIR=${DEPLOY_DIR:-/var/www}
|
|
APP_NAME=${APP_NAME:-d6soft}
|
|
SUB_DIR=${SUB_DIR:-web}
|
|
|
|
# Afficher les paramètres
|
|
echo "=== Paramètres de déploiement ==="
|
|
echo "Serveur hôte: $HOST_SSH_USER@$HOST_SSH_HOST:$HOST_SSH_PORT"
|
|
echo "Projet Incus: $CT_PROJECT_NAME"
|
|
echo "Conteneur: $CT_NAME"
|
|
echo "Domaine: $DOMAIN_NAME"
|
|
echo "Répertoire de déploiement: $DEPLOY_DIR/$APP_NAME/$SUB_DIR"
|
|
echo "Propriétaire: $OWNER"
|
|
echo "Groupe: $GROUP"
|
|
echo "=================================="
|
|
|
|
# Définir les options SSH
|
|
SSH_OPTS="-p $HOST_SSH_PORT"
|
|
SCP_OPTS="-P $HOST_SSH_PORT"
|
|
if [ ! -z "$HOST_SSH_KEY" ]; then
|
|
SSH_OPTS="$SSH_OPTS -i \"$HOST_SSH_KEY\""
|
|
SCP_OPTS="$SCP_OPTS -i \"$HOST_SSH_KEY\""
|
|
fi
|
|
|
|
# 1. Copier les fichiers vers le HOST incus
|
|
echo "=== Copie des fichiers vers le HOST Incus ==="
|
|
rsync -avz --progress --exclude='.log' --exclude='pub/files/upload' -e "ssh $SSH_OPTS" ./ $HOST_SSH_USER@$HOST_SSH_HOST:/tmp/$APP_NAME/
|
|
|
|
# 2. Créer le répertoire de destination dans le conteneur
|
|
echo "=== Création du répertoire de destination dans le conteneur ==="
|
|
eval "ssh $SSH_OPTS $HOST_SSH_USER@$HOST_SSH_HOST \"incus project switch $CT_PROJECT_NAME\""
|
|
eval "ssh $SSH_OPTS $HOST_SSH_USER@$HOST_SSH_HOST \"incus exec $CT_NAME -- mkdir -p $DEPLOY_DIR/$APP_NAME\""
|
|
|
|
# 3. Transférer les fichiers vers le conteneur Incus
|
|
echo "=== Transfert des fichiers vers le conteneur Incus ==="
|
|
eval "ssh $SSH_OPTS $HOST_SSH_USER@$HOST_SSH_HOST \"incus file push --recursive /tmp/$APP_NAME/. $CT_NAME/$DEPLOY_DIR/\""
|
|
|
|
# 4. Configurer les permissions dans le conteneur
|
|
echo "=== Configuration des permissions dans le conteneur ==="
|
|
eval "ssh $SSH_OPTS $HOST_SSH_USER@$HOST_SSH_HOST \"incus exec $CT_NAME -- sh -c 'chown -R $OWNER:$GROUP $DEPLOY_DIR/$APP_NAME && \
|
|
find $DEPLOY_DIR/$APP_NAME -type d -exec chmod 755 {} \\; && \
|
|
find $DEPLOY_DIR/$APP_NAME -type f -exec chmod 644 {} \\; && \
|
|
if [ -d $DEPLOY_DIR/$APP_NAME/server/logs ]; then chmod 775 $DEPLOY_DIR/$APP_NAME/server/logs; fi && \
|
|
if [ -d $DEPLOY_DIR/$APP_NAME/mda/backend/logs ]; then chmod 775 $DEPLOY_DIR/$APP_NAME/mda/backend/logs; fi && \
|
|
if [ -d $DEPLOY_DIR/$APP_NAME/mda/db ]; then chmod 775 $DEPLOY_DIR/$APP_NAME/mda/db; fi'\""
|
|
|
|
# 5. Nettoyer les fichiers temporaires sur l'hôte
|
|
echo "=== Nettoyage des fichiers temporaires sur l'hôte ==="
|
|
eval "ssh $SSH_OPTS $HOST_SSH_USER@$HOST_SSH_HOST \"rm -rf /tmp/$APP_NAME\""
|
|
|
|
echo "==================================================="
|
|
echo "Déploiement terminé avec succès !"
|
|
echo "==================================================="
|
|
echo "Votre site $APP_NAME est maintenant déployé dans le conteneur $CT_NAME."
|
|
echo "Chemin de déploiement: $DEPLOY_DIR/$APP_NAME/$SUB_DIR"
|