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

# Créer et déployer des builds Linux

> Créez et déployez des builds de serveur de jeu Linux sur PlayFab Multiplayer Servers à l'aide d'images de conteneur Linux ou de serveurs basés sur un processus avec le GSDK.

Cet article explique en détail comment créer des builds Linux sur PlayFab Multiplayer Servers, à l'aide de conteneurs et de processus.

## Créer et déployer des images de conteneur Linux

Cette section décrit les étapes spécifiques permettant de créer et de déployer des images de conteneur Linux.

Comme décrit dans [Créer des machines virtuelles (VM)](/fr-CA/services/playfab/multiplayer/servers/deploying-playfab-multiplayer-server-builds), lorsque vous utilisez notre service, vous configurez des machines virtuelles qui sont automatiquement démarrées en tant que serveurs de jeu dans le monde entier, en fonction de votre budget et de la demande. Pour ce faire, vous ne créez pas explicitement de machines virtuelles : vous définissez des paramètres qui déterminent la façon dont elles sont créées pour vous. Ce processus est appelé déploiement ou création d'une build.

PlayFab Multiplayer Servers peut déployer des serveurs de jeu Linux et Windows. Les builds de conteneurs Linux sont déployées de façon similaire aux conteneurs Windows, à quelques différences importantes près. Pour en savoir plus, consultez [Différences entre les images de conteneur Windows et Linux](#windows-and-linux-container-image-differences). Si vous souhaitez utiliser PowerShell/l'API pour gérer les conteneurs Linux, consultez [Gérer les images de conteneur Linux à l'aide des API](#manage-linux-container-images-using-apis).

Lorsque vous utilisez des serveurs de jeu Linux, au lieu d'utiliser une image de conteneur managée, vous devez créer votre image de conteneur et la téléverser dans un registre de conteneurs. Pour faciliter le téléversement des conteneurs, votre compte est fourni avec un registre de conteneurs Azure.

## Connaissances requises

* [Conteneurs Docker](https://learn.microsoft.com/en-us/training/modules/intro-to-docker-containers/)

<a id="set-up-your-windows-development-device" />

## Configurer votre appareil de développement Windows

Cette étape n'est nécessaire que si vous souhaitez utiliser un appareil de développement Windows pour créer des images de conteneur Linux. Vous pouvez également utiliser des appareils sous système d'exploitation Linux, des machines virtuelles ou des systèmes à double démarrage sur lesquels Docker est installé.

Le [Sous-système Windows pour Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/) vous permet d'utiliser votre appareil de développement dans l'environnement Windows qui vous est familier pour créer et gérer des images de conteneur Linux. Avec WSL, vous n'avez pas besoin de la surcharge d'une machine virtuelle Linux traditionnelle ou d'une configuration à double démarrage.

1. [Installez WSL 2](https://learn.microsoft.com/en-us/windows/wsl/). Assurez-vous de redémarrer votre machine et à utiliser WSL 2. Vous devez également installer le package de mise à jour du noyau Linux.
2. [Installez une distribution Linux qui utilise WSL](https://learn.microsoft.com/en-us/windows/wsl/install#step-6---install-your-linux-distribution-of-choice). Bien que nos machines virtuelles utilisent Ubuntu, vous pouvez sélectionner la distribution de votre choix pour votre image de conteneur. Envisagez d'utiliser [Ubuntu 20.04 Long-Term Support (LTS)](https://www.microsoft.com/store/apps/9n6svws3rx71) ou une version ultérieure.
3. [Installez Docker Desktop pour Windows avec WSL 2](https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers). Pour le lien de téléchargement direct, accédez à [Docker Desktop pour Windows (externe)](https://hub.docker.com/editions/community/docker-ce-desktop-windows/).

**Vérifier la configuration de WSL 2**

* Ouvrez PowerShell
* Exécutez **wsl -l -v** pour vérifier que les applications docker-desktop et ubuntu s'exécutent toutes deux sous WSL 2 (version 2)

**Vérifier que Docker est correctement configuré pour WSL**

* Ouvrez un terminal WSL
* Exécutez **docker version** pour vérifier que Docker est installé et que le système d'exploitation utilisé est Linux

<Tip>
  Pour développer et déboguer des applications C++ Linux, utilisez [WSL dans Visual Studio 2019](https://learn.microsoft.com/en-us/cpp/linux/).
</Tip>

## Obtenir les informations d'identification de connexion à votre registre de conteneurs PlayFab

Le compte de registre de conteneurs Azure est associé à votre compte PlayFab. Vous seul avez accès aux conteneurs qui y sont téléversés. Ce registre de conteneurs Azure est gratuit.

* Dans Game Manager, sélectionnez votre titre de jeu, puis **Multiplayer** > **Servers**. Sélectionnez **New build** pour ouvrir la page de création de build.
* Sélectionnez **Linux** comme système d'exploitation de la machine virtuelle.
* Notez les informations d'identification de connexion (nom, mot de passe et customer5555555.azurecr.io), car elles seront nécessaires ultérieurement

<img src="https://mintcdn.com/microsoft-4404708b/U1LR64ZWxo45eXwl/images/playfab/multiplayer/servers/create-your-first-server/server-new-build-container-linux.PNG?fit=max&auto=format&n=U1LR64ZWxo45eXwl&q=85&s=0e2c264ec94672fe84912799f1acab32" alt="Nouvelle build avec la plateforme Linux sélectionnée" width="800" height="551" data-path="images/playfab/multiplayer/servers/create-your-first-server/server-new-build-container-linux.PNG" />

Si vous souhaitez utiliser PowerShell/l'API, appelez l'API [GetContainerRegistryCredentials](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayerserver/getcontainerregistrycredentials) pour récupérer l'adresse, le nom d'utilisateur et le mot de passe du registre de conteneurs.

## Créer des images de conteneur Linux et les envoyer vers Azure Container Registry

Ces étapes vous aident à créer et à envoyer votre image de conteneur Linux personnalisée.

#### Intégrer votre application de serveur de jeu au GSDK

Comme pour les serveurs Windows, vous devez intégrer le code de votre serveur de jeu au SDK PlayFab Multiplayer Server (GSDK). L'intégration du GSDK peut faire partie de votre image de conteneur.

Pour obtenir des instructions, consultez [Créer une build de serveur de jeu](/fr-CA/services/playfab/multiplayer/servers/author-a-game-server-build) et [Intégration de votre titre au SDK du serveur de jeu PlayFab (GSDK)](/fr-CA/services/playfab/multiplayer/servers/integrating-game-servers-with-gsdk).

#### Créer un Dockerfile

Un Dockerfile est un fichier texte sans extension qui contient toutes les commandes nécessaires pour générer une image de conteneur donnée.

1. Ouvrez le **Bloc-notes** ou tout autre éditeur approprié
2. Ajoutez les commandes spécifiques nécessaires pour exécuter et générer un conteneur. Pour un exemple de ce fichier, consultez le [DockerFile](https://github.com/PlayFab/MpsSamples/blob/master/wrappingGsdk/Dockerfile) fourni dans l'[exemple Wrapper](/fr-CA/services/playfab/multiplayer/servers/wrapper-sample). Pour plus d'informations sur la création de ce fichier, consultez [Format du Dockerfile (externe)](https://docs.docker.com/engine/reference/builder/#format) et [Pratiques exemplaires de création d'un Dockerfile (externe)](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/)
3. Enregistrez le fichier en tant que Dockerfile, idéalement dans un dossier/répertoire vide. Vous devez ajouter à ce dossier les autres fichiers nécessaires à la génération de l'image de conteneur.

Instructions d'enregistrement avec le **Bloc-notes** :

* Sélectionnez **File**> **Save as...** pour ouvrir les options d'enregistrement
* Accédez au dossier dans lequel vous souhaitez enregistrer le fichier
* Sous **File name:**, saisissez **"Dockerfile"**, guillemets compris.
* Pour **Save as type:**, sélectionnez **All Files**
* Sélectionnez l'encodage **UTF-8**
* Sélectionnez **Save**

#### Générer et téléverser l'image de conteneur Linux

1. Ouvrez votre terminal Linux sur lequel Docker est installé.
2. Exécutez les commandes Docker suivantes à l'aide des informations d'identification de connexion obtenues à l'étape précédente. Suivez ensuite les instructions à l'écran pour saisir votre nom d'utilisateur et votre mot de passe.

```docker theme={null}
docker login customer5555555.azurecr.io
```

[docker sign in](https://docs.docker.com/engine/reference/commandline/login/) vous connecte au registre de conteneurs Azure indiqué dans Game Manager.

```docker theme={null}
username: customer5555555
password: HRDFOdIebJkvBAS+usa55555555
```

3. Générez l'image de conteneur

Exécutez la commande suivante pour générer l'image de conteneur à l'aide du Dockerfile de votre répertoire actuel. La commande **docker build** se termine par un ".".

L'indicateur **-t** spécifie les informations nom:balise de votre nouvelle image de conteneur. Le nom et la balise sont utilisés si la génération réussit. En cas d'erreurs de génération, vous devez les corriger avant de passer à l'étape suivante.

Dans l'exemple suivant, le nom du référentiel est **customer5555555.azurecr.io/pvp\_gameserver** et la balise est **v1**. Pour plus d'informations, consultez la [référence de la commande docker build (lien externe)](https://docs.docker.com/engine/reference/commandline/build/) et [Génération d'un Dockerfile (lien externe)](https://docs.docker.com/engine/reference/builder/).

Avec WSL, le lecteur C: de Windows est monté sur /mnt/c.

* Exécutez ensuite **cd /mnt/c/path/to/your/Dockerfile** pour accéder au chemin de votre Dockerfile.
  Pour plus d'informations, consultez [Accès au lecteur C](https://learn.microsoft.com/en-us/windows/wsl/faq#how-do-i-access-my-c--drive-).

```docker theme={null}
docker build -t customer5555555.azurecr.io/pvp_gameserver:v1 .
```

<Tip>
  Sous Linux, exécutez **pwd** pour connaître le répertoire dans lequel vous vous trouvez.
</Tip>

4. Téléversez l'image de conteneur

Exécutez les commandes permettant d'envoyer l'image vers votre registre de conteneurs PlayFab. Choisissez une combinaison nom:balise significative et utile pour votre image de conteneur téléversée. Pour téléverser votre conteneur dans le registre exploité par PlayFab, utilisez [docker push](https://docs.docker.com/engine/reference/commandline/push/) ou un autre client de registre de conteneurs.

```docker theme={null}
docker tag hello-world customer5555555.azurecr.io/pvp_gameserver:v1
docker push customer5555555.azurecr.io/pvp_gameserver:v1
```

## Vérifier que votre conteneur est téléversé

Une fois le conteneur téléversé, revenez à la page **New Build** de Game Manager et sélectionnez **Refresh Images**. Vous pourrez voir l'image dans la liste et la sélectionner. Vous pouvez également utiliser l'appel d'API [ListContainerImages](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayerserver/listcontainerimages) pour répertorier vos images de conteneur téléversées.

Vous êtes maintenant prêt à déployer des serveurs. Pour obtenir des instructions, consultez [Portail PlayFab—Game Manager](/fr-CA/services/playfab/multiplayer/servers/deploy-using-game-manager) et [Utilisation de PowerShell/de l'API](/fr-CA/services/playfab/multiplayer/servers/deploy-using-powershell-api).

<a id="windows-and-linux-container-image-differences" />

## Différences entre les images de conteneur Windows et Linux

Pour de nombreux développeurs, l'utilisation du conteneur Windows managé est le choix simple et par défaut privilégié. Toutefois, les images de conteneur Linux déployées sur des machines virtuelles bénéficient d'un tarif horaire moins élevé.

<Note>
  Vous pouvez personnaliser entièrement vos serveurs de jeu, que vous utilisiez des images de conteneur Windows ou Linux. Avec les serveurs Windows, vous personnalisez l'image de conteneur managée en téléversant des actifs.
</Note>

Le tableau suivant répertorie certaines différences de création et d'utilisation.

| Options pour les développeurs | Windows | Linux |
| - | - | - |
| Système d'exploitation de l'appareil de développement | Système d'exploitation Windows | [Sous-système Windows pour Linux (WSL)](#set-up-your-windows-development-device) ou système d'exploitation Linux (avec double démarrage ou machines virtuelles) |
| Image de conteneur | Déploiement simple à l'aide de notre image de conteneur managée. Vous pouvez toujours personnaliser le conteneur en téléversant des fichiers supplémentaires en tant qu'actifs. | Davantage de travail est nécessaire, car vous devez créer votre propre image de conteneur personnalisée, qui vous offre un contrôle total. |

<a id="manage-linux-container-images-using-apis" />

## Gérer les images de conteneur Linux à l'aide des API

Vous pouvez utiliser les API pour gérer les images de conteneur Linux. Pour le reste du cycle de vie des builds (consultation de l'utilisation, mise à jour des régions et des configurations standingBy, suppression), gérez-les à l'aide de Game Manager.

* [GetContainerRegistryCredentials](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/get-container-registry-credentials) : récupère l'adresse, le nom d'utilisateur et le mot de passe du registre de conteneurs
* [ListContainerImages](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/list-container-images) et [ListContainerImageTags](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/list-container-image-tags) : vérifiez que votre nouvelle image et sa balise sont répertoriées (il peut parfois falloir quelques minutes pour que l'image soit entièrement inscrite dans le système)
* [CreateBuildWithCustomContainer](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/create-build-with-custom-container) : crée une build avec un conteneur personnalisé. Spécifiez l'image balisée que vous avez téléversée précédemment. Assurez-vous que les propriétés suivantes sont définies dans la requête :
  * **ContainerImageReference** : le nom et la balise de l'image téléversée précédemment. Ces valeurs sont visibles dans ListContainerImages et ListContainerImageTags.
  * **ContainerFlavor** : "CustomLinux"
  * **ContainerRunCommand** (facultatif) : si votre conteneur n'a pas de commande par défaut, utilisez cette propriété pour fournir la commande à exécuter, avec ses éventuels arguments.

## Empaquetage des actifs pour les serveurs Linux basés sur un processus

Lorsque vous utilisez Linux en **mode processus** (au lieu du mode conteneur), vous téléversez votre serveur de jeu sous forme d'archive d'actifs plutôt que d'image de conteneur. Cette section décrit les exigences d'empaquetage importantes.

### Formats d'archive pris en charge

Les actifs doivent être téléversés sous forme de fichiers `.tar.gz` ou `.tar`, afin que les autorisations de fichier Unix (comme le bit d'exécution) soient conservées lors de l'extraction.

<Warning>
  **Les fichiers `.zip` ne conservent pas les autorisations de fichier Unix sous Linux.** Si vous téléversez l'exécutable de votre serveur de jeu Linux dans une archive `.zip`, il perd son autorisation d'exécution et ne démarre pas, avec une erreur "Permission denied". Pour contourner ce problème, utilisez plutôt `.tar.gz`, ou définissez comme commande de démarrage un script shell qui exécute `chmod +x` sur votre exécutable avant de le lancer.
</Warning>

### Exigences de structure des archives tar.gz et tar

Lors de l'extraction des archives `.tar` ou `.tar.gz`, PlayFab Multiplayer Servers supprime le premier niveau de répertoire de l'archive (équivalent à `tar --strip-components=1`). Votre archive **doit** contenir un seul répertoire englobant de premier niveau, à l'intérieur duquel se trouvent tous vos fichiers de jeu.

**Structure correcte** : fichiers placés dans un répertoire de premier niveau :

```
MyGameServer/
├── MyGame.x86_64
├── MyGame_Data/
│   └── ...
├── UnityPlayer.so
└── start_server.sh
```

Créez l'archive avec :

```bash theme={null}
tar czf MyGameServer.tar.gz MyGameServer/
```

<Warning>
  Si vos fichiers se trouvent à la racine de l'archive sans répertoire englobant, ils sont **ignorés sans avertissement** lors de l'extraction. Votre serveur de jeu échoue avec des erreurs "No such file or directory", car l'exécutable n'est jamais écrit sur le disque.
</Warning>

### Définition de la commande de démarrage

Pour les serveurs basés sur un processus, la commande de démarrage doit être **relative au dossier racine des actifs après l'extraction** (c'est-à-dire relative à l'emplacement des fichiers une fois le répertoire de premier niveau supprimé).

Par exemple, si votre archive contient `MyGameServer/MyGame.x86_64`, après l'extraction, le fichier se trouve à la racine du dossier des actifs. Définissez votre commande de démarrage sur :

```
MyGame.x86_64
```

Si votre exécutable se trouve dans un sous-dossier (par exemple, `MyGameServer/bin/MyGame.x86_64`), définissez la commande de démarrage sur :

```
bin/MyGame.x86_64
```

## Gérer les builds Linux basées sur un processus à l'aide des API

Vous pouvez utiliser les API pour gérer les builds Linux basées sur un processus. Pour le reste du cycle de vie des builds (consultation de l'utilisation, mise à jour des régions et des configurations standingBy, suppression), gérez-les à l'aide de Game Manager.

* [CreateBuildWithProcessBasedServer](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/create-build-with-process-based-server) : crée une build dont le serveur de jeu s'exécute en tant que processus. Assurez-vous que les propriétés suivantes sont définies dans la requête :
  * **OsPlatform** : "Linux"
  * **GameAssetReferences** : la liste des actifs de jeu (téléversés sous forme de fichiers `.tar.gz` ou `.tar`). Chaque actif nécessite un **FileName** correspondant au nom de l'actif téléversé.
  * **StartMultiplayerServerCommand** : la commande à exécuter au démarrage du serveur de jeu. Le chemin doit être relatif au dossier racine des actifs après l'extraction (par exemple, `MyGame.x86_64 -server`).
  * **Ports** : les ports à mapper pour la build.
  * **MultiplayerServerCountPerVm** : le nombre d'instances de serveur de jeu à héberger sur une même machine virtuelle.
  * **RegionConfigurations** : les régions dans lesquelles effectuer le déploiement, avec le nombre de serveurs en attente et le nombre maximal de serveurs.

## Voir aussi

* [Introduction aux conteneurs Docker](https://learn.microsoft.com/en-us/training/modules/intro-to-docker-containers/)
* [Créer votre premier serveur](/fr-CA/services/playfab/multiplayer/servers/create-your-first-server)
* [Ressources et exemples](/fr-CA/services/playfab/multiplayer/servers/server-samples-resources)
* [Kits de développement logiciel (SDK) PlayFab Multiplayer Server](/fr-CA/services/playfab/multiplayer/servers/server-sdks/overview)
* [Référence de l'API](xref:titleid.playfabapi.com.multiplayer.multiplayerserver)


## Related topics

- [Déployer des builds à l'aide de PowerShell/de l'API](/fr-CA/services/playfab/multiplayer/servers/deploy-using-powershell-api.md)
- [Créer une build de serveur de jeu](/fr-CA/services/playfab/multiplayer/servers/author-a-game-server-build.md)
- [Déployer des builds à l'aide de Game Manager](/fr-CA/services/playfab/multiplayer/servers/deploy-using-game-manager.md)
- [Définition et configuration de build](/fr-CA/services/playfab/multiplayer/servers/build-definition.md)
- [Déployer un serveur Unreal Linux dans le nuage MPS](/fr-CA/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/setting-up-a-linux-dedicated-server-on-playfab.md)
