> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Résoudre les problèmes de publication

> Diagnostiquez les problèmes courants lorsqu'une application Replit fonctionne dans l'Aperçu, ne parvient pas à se publier ou se comporte différemment à son URL publique.

export const AiPrompt = ({children}) => {
  return <CodeBlock className="relative block font-sans whitespace-pre-wrap break-words">
      <div className="pr-7">
        {children}
      </div>
    </CodeBlock>;
};

La publication transforme votre projet en application publique. Si la publication échoue, ou si l'URL publique se comporte différemment de l'Aperçu, traitez le problème dans l'ordre.

Cette page est à la fois un guide de récupération pour Build et une référence de dépannage pour les déploiements. Commencez par la question la plus simple : l'application fonctionne-t-elle dans l'Aperçu ?

## Ce que vous accomplirez

À la fin de cette page, vous saurez si le problème se situe dans votre application, la configuration de publication, les Secrets de production, le type de déploiement, la configuration des ports ou l'accès réseau/DNS.

## Commencer par l'Aperçu

Avant de publier, vérifiez que l'application s'exécute correctement dans l'Éditeur de projet.

Cliquez sur **Exécuter** en haut de l'Éditeur de projet et ouvrez l'Aperçu. Si l'Aperçu n'affiche pas votre application avec une URL `replit.dev`, corrigez l'application avant de publier.

Demandez à l'Agent de diagnostiquer l'Aperçu en premier :

<AiPrompt>
  Cette application ne fonctionne pas dans l'Aperçu.<br />
  Vérifie la commande d'exécution, l'installation des dépendances, les erreurs de l'application, les ports et les Secrets manquants.<br />
  Corrige d'abord le problème le plus petit et dis-moi comment vérifier que l'Aperçu fonctionne avant de publier.
</AiPrompt>

Si l'Aperçu est cassé, la publication ne le réparera pas.

## Si l'Aperçu fonctionne mais que la publication échoue

Lorsque l'Aperçu fonctionne mais que la publication échoue, vérifiez la configuration spécifique à la publication.

### Vérifier les journaux

Ouvrez l'onglet **Journaux** dans le volet **Publication**. Cherchez des traces de pile, des packages manquants, des commandes en échec, des variables d'environnement manquantes ou des erreurs de démarrage.

Collez l'erreur pertinente dans l'Agent :

<AiPrompt>
  La publication a échoué avec ce résultat de journaux : \[coller l'erreur].<br />
  Explique la cause probable.<br />
  Dis-moi s'il s'agit d'une erreur de commande, de dépendance, de Secret, de port, de build ou d'application.<br />
  Recommande le correctif le plus petit et comment je dois le vérifier.
</AiPrompt>

### Vérifier les commandes d'exécution et de build

Les erreurs courantes incluent les fautes de frappe, les drapeaux incorrects, les mauvais fichiers d'entrée ou les commandes qui ne fonctionnent qu'en local.

Vérifiez les commandes dans le volet **Publication**. Si votre application nécessite une commande de build et une commande de démarrage, confirmez que les deux sont correctes.

### Vérifier les Secrets de production

Les Secrets que vous définissez dans l'Éditeur de projet ne se transmettent pas automatiquement à votre application publiée. Ajoutez tous les Secrets de production et variables d'environnement dans le volet **Publication**.

Les Secrets manquants peuvent provoquer des erreurs concernant des valeurs indéfinies, des appels API échoués, des échecs de connexion à la base de données, des erreurs de connexion ou des échecs de paiement.

Consultez [Secrets](/core-concepts/project-editor/app-setup/secrets).

### Vérifier le comportement des processus de longue durée

Les applications publiées s'attendent à ce que votre programme continue de s'exécuter. Si votre programme s'exécute une fois et se termine, la plateforme le redémarre automatiquement.

Assurez-vous que votre application démarre un processus de longue durée tel qu'un serveur web.

### Vérifier la configuration de l'hôte et du port

Si vous exécutez un serveur web, les déploiements peuvent détecter automatiquement le port utilisé par votre serveur, mais celui-ci doit écouter sur `0.0.0.0`. Écouter uniquement sur `localhost` ou `127.0.0.1` ne fonctionne pas pour les applications publiées.

Si vous avez [des ports spécifiés dans votre configuration `.replit`](/references/configuration/configuration), la détection automatique des ports est désactivée. Vous devez spécifier un port avec `externalPort` défini sur `80` pour que l'étape de promotion réussisse. Vérifiez que votre serveur écoute sur le `localPort` spécifié.

Demandez à l'Agent de vérifier cela soigneusement :

<AiPrompt>
  Vérifie si cette application est correctement configurée pour la publication.<br />
  Vérifie que le serveur démarre un processus de longue durée, écoute sur 0.0.0.0, utilise le port attendu et correspond à toute configuration de ports dans .replit.<br />
  Ne modifie pas le comportement de l'application au-delà du correctif de publication.
</AiPrompt>

### Vérifier le délai du contrôle de santé

Avant de marquer votre application publiée comme active, Replit envoie une requête HTTP à votre application. Si votre page d'accueil met plus de cinq secondes à répondre, le contrôle de santé peut expirer et la publication peut échouer à la dernière étape.

Si le démarrage est lent, demandez à l'Agent de réduire le travail au démarrage, de déplacer les opérations coûteuses derrière une action utilisateur ou de mettre en cache les données si approprié.

## Si la publication réussit mais que l'URL publique est cassée

Si l'Aperçu fonctionne et que la publication réussit, mais que l'URL publique est cassée, comparez le comportement de l'Aperçu et de la production.

Vérifiez :

* Les Secrets de production et les variables d'environnement.
* Les paramètres de connexion à la base de données.
* Les URL de callback ou de redirection de connexion.
* Les paramètres de webhook ou de redirection de paiement.
* Les listes d'autorisation API ou les paramètres CORS.
* Les fichiers écrits localement au lieu d'être stockés dans une base de données ou un service de stockage.
* La mise en page mobile et les différences de navigateur.

Demandez à l'Agent de comparer les environnements :

<AiPrompt>
  L'application fonctionne dans l'Aperçu mais pas à l'URL publiée.<br />
  Aide-moi à comparer le comportement de l'Aperçu et de la production.<br />
  Vérifie les Secrets, les paramètres de base de données, les appels API, les redirections de connexion, les redirections de paiement, la sortie de build et les journaux.<br />
  Donne-moi la prochaine vérification la plus sûre.
</AiPrompt>

## Problèmes de déploiement statique

Les déploiements statiques servent des fichiers statiques tels que HTML, CSS et JavaScript.

Si votre application comprend un comportement côté serveur, des routes API, des callbacks d'authentification, des appels de base de données depuis le serveur ou une logique backend de longue durée, elle n'est peut-être pas adaptée aux déploiements statiques. Changez le type de déploiement vers Autoscale dans le volet **Publication** à la place.

Les problèmes de déploiement statique proviennent souvent d'un répertoire public incorrect ou du choix de Statique pour une application qui nécessite un serveur.

## Limites de fichiers et de taille

Les déploiements Reserved VM et Autoscale prennent en charge les applications Replit jusqu'à 8 Go. Les déploiements statiques prennent en charge jusqu'à 1 Go.

Pour réduire la taille de l'application, supprimez les fichiers inutiles, évitez de valider les sorties générées ou utilisez un stockage externe pour les ressources volumineuses.

<Warning>
  Le système de fichiers dans les applications publiées n'est pas persistant et se réinitialise à chaque publication. Pour la persistance des données, utilisez une base de données telle que [Base de données SQL](/references/data-and-storage/sql-database).
</Warning>

Si les fichiers téléversés ou les données générées disparaissent après la publication, stockez-les dans une base de données ou un service de stockage plutôt que dans le système de fichiers de l'application.

## Problèmes d'accès aux URL `replit.app` et `replit.dev`

Si vous avez du mal à accéder à votre application à son domaine `replit.app` ou `replit.dev`, des filtres web ou des restrictions réseau peuvent en être la cause.

Essayez d'utiliser des résolveurs DNS publics comme Google DNS (`8.8.8.8`) ou Cloudflare DNS (`1.1.1.1`).

### Modifier les paramètres DNS

<Tabs>
  <Tab title="Windows">
    1. Ouvrez le **Panneau de configuration**.
    2. Accédez au **Centre Réseau et partage**.
    3. Sélectionnez **Modifier les paramètres de la carte** à gauche.
    4. Faites un clic droit sur votre connexion réseau active et sélectionnez **Propriétés**.
    5. Sélectionnez **Protocole Internet version 4 (TCP/IPv4)** et cliquez sur **Propriétés**.
    6. Choisissez **Utiliser les adresses de serveur DNS suivantes**.
    7. Entrez une adresse IP de serveur DNS public, par exemple `8.8.8.8` pour Google DNS ou `1.1.1.1` pour Cloudflare DNS.
    8. Cliquez sur **OK** pour enregistrer vos modifications.

    Pour des instructions plus détaillées, consultez le [guide de configuration DNS de Microsoft](https://support.microsoft.com/en-us/windows/change-tcp-ip-settings-bd0a07af-15f5-cd6a-363f-ca2b6f391ace).
  </Tab>

  <Tab title="macOS">
    1. Ouvrez les **Préférences Système**.
    2. Sélectionnez **Réseau**.
    3. Sélectionnez votre connexion réseau active à gauche.
    4. Cliquez sur **Avancé** dans le coin inférieur droit.
    5. Accédez à l'onglet **DNS**.
    6. Cliquez sur le bouton **+** pour ajouter un serveur DNS.
    7. Entrez une adresse IP de serveur DNS public, par exemple `8.8.8.8` pour Google DNS ou `1.1.1.1` pour Cloudflare DNS.
    8. Cliquez sur **OK** puis sur **Appliquer**.

    Pour des instructions plus détaillées, consultez le [guide de configuration DNS d'Apple](https://support.apple.com/guide/mac-help/change-dns-settings-on-mac-mh14127/mac).
  </Tab>

  <Tab title="Linux">
    1. Modifiez le fichier `/etc/resolv.conf` pour ajouter des serveurs DNS publics. La méthode exacte varie selon la distribution.
    2. Ajoutez les lignes suivantes :

    ```bash theme={null}
    nameserver 8.8.8.8
    nameserver 1.1.1.1
    ```

    Pour plus d'informations sur la configuration DNS selon les différentes distributions, consultez le [guide de configuration réseau du Wiki Debian](https://wiki.debian.org/NetworkConfiguration#Defining_the_.28DNS.29_Nameservers).
  </Tab>
</Tabs>

### Vider le cache DNS

Après avoir modifié les paramètres DNS, videz le cache DNS pour appliquer la nouvelle configuration :

* **Windows** : Exécutez `ipconfig /flushdns` dans l'Invite de commandes.
* **macOS et Linux** : Exécutez `sudo systemctl restart NetworkManager` dans le Terminal. La commande exacte peut varier selon la distribution.

<Note>
  Pour améliorer les performances régionales et la stabilité, les URL `replit.dev` de vos
  applications Replit peuvent occasionnellement changer lors des migrations de cluster. Une fois la migration
  terminée, les URL restent stables pendant environ un an, sauf si vous
  demandez explicitement un changement de localisation.
</Note>

## Publier une application Streamlit

Les applications Streamlit fonctionnent avec les déploiements Replit. La façon la plus simple de commencer est d'utiliser le [template Streamlit](https://replit.com/@replit/Streamlit?v=1).

Vous pouvez également définir la commande d'exécution pour la publication sur :

```bash theme={null}
streamlit run --server.address 0.0.0.0 --server.headless true --server.enableCORS=false --server.enableWebsocketCompression=false main.py
```

Si votre application utilise un fichier d'entrée différent, remplacez `main.py` par votre nom de fichier.

## C'est terminé quand

* L'Aperçu fonctionne.
* La publication se termine.
* L'URL publique se charge.
* Le flux principal de l'application fonctionne à l'URL publique.
* Les Secrets de production et les paramètres sont configurés.
* Les journaux ne montrent pas d'erreurs de démarrage cachées.

## Ressources connexes

* [Déploiements Replit](/learn/projects-and-artifacts/replit-deployments)
* [Ajouter un domaine personnalisé](/build/add-custom-domain)
* [Domaines personnalisés](/references/publishing/custom-domains)
* [Secrets](/core-concepts/project-editor/app-setup/secrets)
* [Base de données SQL](/references/data-and-storage/sql-database)

Si vous avez besoin d'aide supplémentaire après avoir essayé ces étapes, visitez le [Replit Community Hub](https://replit.com/community) pour plus de ressources.
