coffreobsidian/Serveur perso/automatiser-lancement-serveur-windows.md
2025-03-24 22:19:57 +01:00

125 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 Automatiser le lancement de Strapi, Next.js et FastAPI au démarrage de Windows Server 2025
## 🎯 Objectif
Automatiser le lancement des 3 services suivants au **démarrage du serveur** :
| Service | Dossier | Commande |
|-----------|----------------------------------------|------------------------------------------------------------|
| **Strapi** | `J:\my-next-site\cmsbackend\` | `npm run develop` |
| **Next.js** | `J:\my-next-site\` | `npm run dev` |
| **FastAPI** | `J:\my-next-site\llm-api\` | `uvicorn api:app --host 0.0.0.0 --port 8000` |
## ✅ Stratégie recommandée
Utiliser un **script PowerShell** lancé via le **Planificateur de tâches Windows** :
- Simple à maintenir
- Exécution dans des fenêtres indépendantes
- Redémarrage automatique après un redémarrage
- Pas besoin de créer un service Windows
---
## 🧰 Étape 1 Créer le script PowerShell
### 📄 Script : `start-my-site.ps1`
```powershell
# Lancer Strapi
Start-Process powershell -ArgumentList "cd 'J:\my-next-site\cmsbackend'; npm run develop" -WindowStyle Normal
# Lancer Next.js
Start-Process powershell -ArgumentList "cd 'J:\my-next-site'; npm run dev" -WindowStyle Normal
# Lancer FastAPI
Start-Process powershell -ArgumentList "cd 'J:\my-next-site\llm-api'; uvicorn api:app --host 0.0.0.0 --port 8000" -WindowStyle Normal
```
> 💾 Sauvegarder ce script dans un emplacement fixe (ex. : `J:\my-next-site\start-my-site.ps1`)
---
## 🧰 Étape 2 Créer une tâche planifiée
### 🧭 Ouvrir le planificateur
- `Win + R``taskschd.msc`
### ⚙️ Onglet **Général**
- **Nom** : `Lancer mes services web`
- Coche : `Exécuter avec les autorisations maximales`
- Choisir un **compte administrateur**
### ⚙️ Onglet **Déclencheurs**
- **Nouveau**
- Déclencheur : `Au démarrage`
- Délai (optionnel) : `30 secondes`
- Cocher : `Activé`
### ⚙️ Onglet **Actions**
- **Programme/script** : `powershell.exe`
- **Ajouter des arguments** :
```bash
-ExecutionPolicy Bypass -File "J:\my-next-site\start-my-site.ps1"
```
### ⚙️ Onglet **Conditions**
- Décocher : `Démarrer uniquement si lordinateur est sur secteur`
### ⚙️ Onglet **Paramètres**
- Coche :
- `Autoriser lexécution de la tâche à la demande`
- `Redémarrer en cas déchec`
- `Réessayer toutes les 1 min`
- (optionnel) `Arrêter si la tâche dure trop longtemps`
---
## 🔁 Gestion des plantages
Le planificateur peut relancer automatiquement le script si les options sont activées.
Cependant, pour une meilleure résilience, tu peux envisager :
## ⚡️ Bonus : Utiliser `pm2` pour Node.js
```bash
npm install -g pm2
# Lancer Strapi
cd J:\my-next-site\cmsbackend
pm2 start npm --name strapi -- run develop
# Lancer Next.js
cd J:\my-next-site
pm2 start npm --name next -- run dev
# Sauvegarder et rendre permanent
pm2 save
pm2 startup
```
PM2 permet de :
- Redémarrer automatiquement en cas de crash
- Avoir des logs
- Démarrer avec le système
---
## ✅ Résumé
| Élément | Action |
|--------------|------------------------------------------------------------------------|
| Script PS1 | `start-my-site.ps1` avec `Start-Process` pour chaque service |
| Planificateur| Tâche lancée **au démarrage**, en **admin**, avec **PowerShell** |
| Résilience | Gérée via **planificateur** ou via **PM2** pour Node.js |
---