Déploiement étape par étape d’une application web sur O2Switch

Initialisation

Je vais vous expliquer de façon détaillée comment déployer votre application développée localement (Laravel 11 + React 19 + Axios + MySQL + Bootstrap) sur un hébergement O2Switch. Suivez ces étapes dans l’ordre pour un déploiement réussi.

Étape 1: Préparation de votre application locale

Avant de déployer, assurez-vous que votre application est prête:

  1. Finaliser le développement local:
# Vérifier que tout fonctionne localement
php artisan serve
# Dans un autre terminal
cd frontend
npm start
  1. Préparer votre fichier .env de production:
APP_NAME="VotreApp"
APP_ENV=production
APP_KEY=base64:votreclé
APP_DEBUG=false
APP_URL=https://votredomaine.com

LOG_CHANNEL=stack
LOG_LEVEL=error

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=votre_db_nom  # À configurer sur O2Switch
DB_USERNAME=votre_db_user # À configurer sur O2Switch
DB_PASSWORD=votre_db_pass # À configurer sur O2Switch

# Désactiver les services de développement
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
  1. Construire la version de production React:
cd frontend
# S'assurer que l'URL de l'API pointe vers la production
# Vérifier dans src/api/config.js ou équivalent

# Puis construire
npm run build

Étape 2: Accéder à votre compte O2Switch

  1. Connectez-vous à l’espace client O2Switch:
  2. Accédez au CPanel:
    • Dans le tableau de bord, cliquez sur “CPanel”
    • Vous serez redirigé vers l’interface de gestion de votre hébergement

Étape 3: Création de la base de données

  1. Créer une nouvelle base de données:
    • Dans CPanel, localisez la section “Bases de données”
    • Cliquez sur “MySQL Databases”
    • Créez une nouvelle base de données (notez le nom)
    • Créez un nouvel utilisateur de base de données
    • Attribuez tous les privilèges à cet utilisateur sur votre base de données
  2. Notez les informations:
    • Nom de la base de données (généralement préfixé par votre nom d’utilisateur O2Switch)
    • Nom d’utilisateur de la base de données
    • Mot de passe de l’utilisateur

Étape 4: Préparer votre package de déploiement

  1. Optimiser Laravel pour la production:
# À la racine de votre projet Laravel
composer install --no-dev --optimize-autoloader
php artisan key:generate
php artisan config:clear
php artisan cache:clear
  1. Créer un package de déploiement:
# Créer un dossier de déploiement
mkdir deploy

# Copier les fichiers Laravel essentiels
cp -r app bootstrap config database public resources routes storage vendor composer.json artisan deploy/

# Copier le .env de production
cp .env.production deploy/.env

# Copier le build React dans le dossier public
mkdir -p deploy/public/build
cp -r frontend/build/* deploy/public/build/

# Créer une archive pour faciliter le transfert
cd deploy
zip -r ../deploy-package.zip .
cd ..

Étape 5: Téléchargement des fichiers sur O2Switch

  1. Accéder à votre espace via FTP/SFTP:
    • Dans CPanel, trouvez vos informations FTP
    • Utilisez un client FTP comme FileZilla
    • Entrez l’hôte (généralement ftp.votredomaine.com)
    • Utilisez votre nom d’utilisateur et mot de passe O2Switch
  2. Télécharger les fichiers:
    • Connectez-vous à votre serveur
    • Naviguez vers le dossier public_html (ou le sous-dossier correspondant à votre domaine)
    • Téléchargez l’archive deploy-package.zip
    • Décompressez l’archive directement sur le serveur ou téléchargez-la décompressée
  3. Organisation des fichiers sur O2Switch:
    • Le contenu du dossier public de Laravel doit être dans public_html
    • Le reste de l’application peut être placé dans un dossier parent

    Structure recommandée:

/home/votre_utilisateur/
├── public_html/           # Point d'entrée web
│   ├── index.php
│   ├── .htaccess
│   ├── build/             # Fichiers React compilés
│   ├── css/
│   ├── js/
│   └── ...
│
└── laravel/               # Code Laravel (hors web root)
    ├── app/
    ├── bootstrap/
    ├── config/
    ├── ...
    └── vendor/
  1. Ajuster index.php:
    • Modifiez le fichier public_html/index.php pour pointer vers les bons dossiers:
// Remplacer
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';

// Par
require __DIR__.'/../laravel/vendor/autoload.php';
$app = require_once __DIR__.'/../laravel/bootstrap/app.php';

Étape 6: Configuration des permissions

  1. Définir les bonnes permissions:
# Via SSH si disponible, ou via le gestionnaire de fichiers du CPanel
chmod -R 755 public_html
chmod -R 755 laravel
chmod -R 775 laravel/storage
chmod -R 775 laravel/bootstrap/cache
  1. Créer un fichier .htaccess dans public_html:
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    
    # Forcer HTTPS
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    # Gérer les routes Laravel
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

# Protection des fichiers sensibles
<FilesMatch "^\.env|composer\.json|package\.json|artisan$">
    Order allow,deny
    Deny from all
</FilesMatch>

# Activer la compression
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript text/javascript application/json
</IfModule>

Étape 7: Configuration de la base de données

  1. Importer votre schéma de base de données:
    • Accédez à phpMyAdmin via CPanel
    • Sélectionnez votre base de données
    • Utilisez l’onglet “Importer” pour charger une sauvegarde SQL
    • Ou utilisez les migrations Laravel (voir étape suivante)
  2. Exécuter les migrations Laravel:
# Si vous avez accès SSH
cd /home/votre_utilisateur/laravel
php artisan migrate --force

# Sinon, créez un script temporaire dans public_html
# Créez migrate.php avec ce contenu:
<?php
shell_exec('cd /home/votre_utilisateur/laravel && php artisan migrate --force');
echo "Migrations terminées";
?>

# Accédez à https://votredomaine.com/migrate.php
# Supprimez le fichier après utilisation

Étape 8: Configuration finale et test

  1. Finalisez la configuration Laravel:
# Si accès SSH disponible
cd /home/votre_utilisateur/laravel
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan storage:link
  1. Testez votre application:
    • Visitez https://votredomaine.com
    • Testez la navigation et les fonctionnalités principales
    • Vérifiez que les appels API fonctionnent correctement
    • Inspectez la console du navigateur pour détecter d’éventuelles erreurs
  2. Vérifiez les logs en cas de problème:
    • Dans laravel/storage/logs/laravel.log
    • Dans les logs d’erreur Apache via CPanel

Étape 9: Configuration API React-Laravel

  1. Vérifiez la configuration Axios:
    • Assurez-vous que vos requêtes Axios pointent vers les bonnes URLs:
// Dans votre code React compilé
axios.defaults.baseURL = 'https://votredomaine.com/api';
  1. Configurez CORS sur Laravel:
    • Modifiez le fichier laravel/config/cors.php:
'paths' => ['api/*'],
'allowed_origins' => ['https://votredomaine.com'],
'allowed_methods' => ['*'],
'allowed_headers' => ['*'],
'exposed_headers' => false,
'max_age' => 0,
'supports_credentials' => true,

Étape 10: Mise en place de la maintenance

  1. Configurez des sauvegardes automatiques:
    • Dans CPanel, recherchez l’outil “Backup”
    • Programmez des sauvegardes régulières de votre base de données et fichiers
  2. Configurez un monitoring basique:
    • Inscrivez-vous sur UptimeRobot (gratuit)
    • Ajoutez un moniteur pour vérifier que votre site est en ligne
  3. Préparez une procédure de mise à jour:
    • Pour les futures mises à jour, sauvegardez toujours avant
    • Suivez un processus similaire mais en préservant les données utilisateur

Résolution des problèmes courants

  • Erreur 500 : Vérifiez les logs Laravel et les permissions des dossiers storage et bootstrap/cache
  • API inaccessible : Vérifiez la configuration CORS et les redirections HTTPS
  • Assets React non chargés : Vérifiez les chemins dans le build et le .htaccess
  • Problèmes de base de données : Vérifiez les informations de connexion dans le .env

Ce guide vous permet de déployer efficacement votre application Laravel 11 + React 19 sur O2Switch. Adaptez les étapes selon les spécificités de votre projet et de votre configuration O2Switch.

 

 

Documentation o2switch