95 lines
2.9 KiB
Bash
95 lines
2.9 KiB
Bash
#!/bin/bash
|
|
# AHAD QUANT — Installation service automatique (Linux VPS)
|
|
# Lance UNE SEULE FOIS en tant que root
|
|
# Apres ca : le serveur demarre automatiquement a chaque reboot
|
|
|
|
set -e
|
|
|
|
echo ""
|
|
echo "========================================"
|
|
echo " AHAD QUANT — Installation service"
|
|
echo "========================================"
|
|
echo ""
|
|
|
|
# Detecter le chemin du projet
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$SCRIPT_DIR"
|
|
PYTHON_BIN="$(which python3)"
|
|
SERVICE_USER="ahad_quant"
|
|
INSTALL_DIR="/opt/ahad_quant"
|
|
|
|
echo "[1/7] Dossier projet source : $PROJECT_DIR"
|
|
echo "[2/7] Python : $PYTHON_BIN"
|
|
|
|
# Créer l'utilisateur dédié (sans droits root, sans shell interactif)
|
|
echo "[3/7] Création de l'utilisateur système '$SERVICE_USER'..."
|
|
if ! id "$SERVICE_USER" &>/dev/null; then
|
|
useradd -r -s /bin/false -d "$INSTALL_DIR" -m "$SERVICE_USER"
|
|
echo " ✅ Utilisateur '$SERVICE_USER' créé"
|
|
else
|
|
echo " ✅ Utilisateur '$SERVICE_USER' existe déjà"
|
|
fi
|
|
|
|
# Copier le projet dans /opt/ahad_quant
|
|
echo "[4/7] Déploiement dans $INSTALL_DIR..."
|
|
mkdir -p "$INSTALL_DIR"
|
|
cp -r "$PROJECT_DIR"/. "$INSTALL_DIR/"
|
|
chown -R "$SERVICE_USER:$SERVICE_USER" "$INSTALL_DIR"
|
|
chmod 750 "$INSTALL_DIR"
|
|
echo " ✅ Fichiers copiés et permissions appliquées"
|
|
|
|
# Installer les dependances
|
|
echo "[5/7] Installation des dependances Python..."
|
|
pip3 install -r "$INSTALL_DIR/requirements.txt" -q
|
|
echo " ✅ Dépendances installées"
|
|
|
|
# Creer le fichier service systemd avec utilisateur non-root
|
|
echo "[6/7] Creation du service systemd (utilisateur: $SERVICE_USER)..."
|
|
cat > /etc/systemd/system/ahad_quant.service << EOF
|
|
[Unit]
|
|
Description=AHAD QUANT — Web Command Center
|
|
After=network.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=${SERVICE_USER}
|
|
WorkingDirectory=${INSTALL_DIR}
|
|
ExecStart=${PYTHON_BIN} ${INSTALL_DIR}/web_ui.py
|
|
Restart=always
|
|
RestartSec=10
|
|
Environment=PYTHONUNBUFFERED=1
|
|
NoNewPrivileges=true
|
|
PrivateTmp=true
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
# Activer et demarrer le service
|
|
echo "[7/7] Activation du service..."
|
|
systemctl daemon-reload
|
|
systemctl enable ahad_quant
|
|
systemctl start ahad_quant
|
|
|
|
echo ""
|
|
echo "========================================"
|
|
echo " Installation terminee !"
|
|
echo "========================================"
|
|
echo ""
|
|
echo " AHAD QUANT tourne sous l'utilisateur '$SERVICE_USER' (non-root)"
|
|
echo " Fichiers deployés dans : $INSTALL_DIR"
|
|
echo ""
|
|
echo " ⚠️ N'oubliez pas de configurer $INSTALL_DIR/.env :"
|
|
echo " cp $INSTALL_DIR/.env.example $INSTALL_DIR/.env"
|
|
echo " nano $INSTALL_DIR/.env"
|
|
echo ""
|
|
echo " Acces : http://$(hostname -I | awk '{print $1}'):8080"
|
|
echo ""
|
|
echo " Commandes utiles :"
|
|
echo " systemctl status ahad_quant # voir le statut"
|
|
echo " systemctl stop ahad_quant # arreter"
|
|
echo " systemctl restart ahad_quant # redemarrer"
|
|
echo " journalctl -u ahad_quant -f # voir les logs"
|
|
echo ""
|