Serveur minecraft

Tutorials / Script de démarrage du serveur – Wiki officiel de Minecraft – Resoudre les problemes d’un serveur MineCraft

Par Titanfall , le 4 mai 2019 - 15 minutes de lecture

Attention

Comme il s’agit d’un wiki et que tout le monde peut modifier n’importe quelle page à tout moment, il est conseillé de le faire. ne pas utilisez ce script, mais utilisez-le simplement comme guide pour écrire le vôtre.

Ceci est un exemple de script de démarrage et de maintenance de serveur Minecraft pour les distributions GNU / Linux.

Script Systemd[[[[modifier]

Pour tous les serveurs modernes supportant Systemd. Systemd est la prise de tous les métiers. Pour Ubuntu, il est livré avec 15.04 (oui, il y avait quelques versions auparavant, mais dans cette version, il fonctionnait pleinement).

Installation[[[[modifier]

  1. Connectez-vous à votre (v) serveur racine ou, si vous souhaitez exécuter le serveur sur votre ordinateur, ouvrez un terminal.
  2. Devenez root en utilisant su ou sudo. Pour vérifier si vous êtes root, lancez id -u et s'il renvoie "0", vous êtes root.
  3. Ensuite installez les paquets nécessaires apt installer openjdk-8-jre-headless écran curl nano bash grep
  4. Créez le dossier / opt s'il n'existe pas déjà: mkdir / opt
  5. Maintenant, vous devez créer l'utilisateur pour le service: adduser --system --shell / bin / bash --home / opt / minecraft --groupe minecraft
  6. Créer le fichier d'unité Systemd nano / etc / systemd / system /[email protected] et les suivants:
# Source: https://github.com/agowa338/MinecraftSystemdUnit/
# Licence: MIT
[Unit]
Description = Serveur Minecraft% i
Après = network.target

[Service]
WorkingDirectory = / opt / minecraft /% i
PrivateUsers = true
# La base de données des utilisateurs n’est pas disponible dans l’unité. Seules les racine et minecraft sont disponibles. Tout le monde n’est personne
Utilisateur = minecraft
Groupe = minecraft
ProtectSystem = complet
# Mappage en lecture seule de / usr / boot et / etc
ProtectHome = true
# / home, / root et / run / user semblent vides de l'intérieur de l'unité. Il est recommandé d'activer ce paramètre pour tous les services de longue durée (en particulier ceux qui font face au réseau).
ProtectKernelTunables = true
# / proc / sys, / sys, / proc / sysrq-trigger, / proc / latency_stats, / proc / acpi, / proc / timer_stats, / proc / fs et / proc / irq seront en lecture seule dans l'unité. Il est recommandé de l'activer pour la plupart des services.
# Implique MountFlags = esclave
ProtectKernelModules = true
# Bloque les appels système des modules, ainsi que / usr / lib / modules. Il est recommandé de l'activer pour la plupart des services ne nécessitant ni système de fichiers spécial ni module de noyau supplémentaire pour fonctionner.
# Implique NoNewPrivileges = yes
ProtectControlGroups = true
# Il est donc recommandé d’activer cette option pour la plupart des services.
# Implique MountAPIVFS = yes

ExecStart = / bin / sh -c '/ usr / bin / screen -DmS mc-% i / usr / bin / java -server -Xms512M -Xmx2048M -XX: + UseG1GC -XX: + CMSCroisement incrémental -XX: + CMSClassUnloadingActivé -XX : ParallelGCThreads = 2 -XX: MinHeapFreeRatio = 5 -XX: MaxHeapFreeRatio = 10 -jar $ (ls -v | grep -i "FTBServer. * Jar  | minecraft_server. * Jar" | tête -n 1) nogui '

ExecReload = / usr / bin / screen -p 0 -S mc-% i -X eval 'articles' reload "\ 015 '

ExecStop = / usr / bin / screen -p 0 -S mc-% i -X eval 'substance' "dit SERVEUR ARRÊTANT. Enregistrement de la carte ..." \ 015 '
ExecStop = / usr / bin / screen -p 0 -S mc-% i -X eval 'articles' save-all "\ 015 '
ExecStop = / usr / bin / screen -p 0 -S mc-% i -X eval 'articles "stop" \ 015'
ExecStop = / bin / sleep 10

Redémarrer = en cas d'échec
RestartSec = 60s

[Install]
WantedBy = multi-user.target

#########
# Comment
#########
#
# Créer un répertoire dans / opt / minecraft / XX où XX est un nom comme "survie"
# Ajoutez minecraft_server.jar dans le répertoire avec d’autres fichiers de configuration pour le serveur minecraft
#
# Activer / Démarrer le service systemd
# systemctl enable [email protected]
# systemctl start [email protected]
#
# Pour exécuter plusieurs serveurs, créez simplement une nouvelle structure de répertoire et activez / démarrez-la.
# systemctl enable [email protected]
# systemctl start [email protected]

Instance d'installation[[[[modifier]

Vous pouvez maintenant télécharger vos Modpacks FTB dans un sous-dossier de / opt / minecraft /. Par exemple, vous placeriez le modpack "FTB Beyond" dans "/ opt / minecraft / FTBBeyond" (sans espaces dans le nom).
Si vous souhaitez exécuter des instances vanilla, créez simplement un dossier dans / opt / minecraft, chargez le fichier minecraft_server.jar et créez le fichier eula.txt (à l'aide de: echo "eula = true"> /opt/minecraft/vanilla/eula.txt ).

Après avoir téléchargé les fichiers du serveur Minecraft, assurez-vous que "minecraft" est le propriétaire et le groupe propriétaire. Pour ce faire, lancez simplement "ls -la / opt / minecraft". Si ce n'est pas le cas, exécutez "chown minecraft: minecraft / opt / minecraft / FTBBeyond".
Vous pouvez également avoir besoin de terminer l'installation. Pour les paquets FTB actuels, exécutez:

cd / opt / minecraft / FTBBeyond
echo "eula = true"> /opt/minecraft/FTBBeyond/eula.txt
su -c "/opt/minecraft/FTBBeyond/FTBInstall.sh" -s "/ bin / bash" minecraft

Instances de démarrage / arrêt[[[[modifier]

Vous démarrez votre serveur en utilisant "systemctl start [email protected]"et l'arrêtez en utilisant" systemctl stop [email protected]". La partie derrière le" @ "est votre nom d’instance, par exemple le nom du dossier.
Ce script veille également à arrêter automatiquement votre serveur minecraft si vous le redémarrez.

Autostart[[[[modifier]

Activer[[[[modifier]

activer systemctl [email protected]

Désactiver[[[[modifier]

systemctl désactiver [email protected]

Script init.d[[[[modifier]

Pour les serveurs hérités, ne prenant pas en charge Systemd

Conditions préalables[[[[modifier]

Le paquet d'écran doit être installé.
Sur les distributions CentOs et Red Hat:

yum installer l'écran

Sur les systèmes basés sur Debian tels que Ubuntu:

apt-get install screen python

Télécharger[[[[modifier]

Pour télécharger le script avec wget, exécutez la commande suivante (Surveillez les travaux requis pour l'écriture – modifiez les variables WORLD, MCPATH et BACKUPPATH.
Important: Si vous utilisez la méthode wget et que le premier caractère de chaque ligne est un espace vide, le script ne fonctionnera pas et update-rc.d générera des erreurs. Si tel est le cas, vous devez supprimer les espaces vides de chaque ligne. Veillez à ne pas supprimer autre chose que de l’espace vide!)

wget -O minecraft "http://minecraft.gamepedia.com/Tutorials/Server_startup_script/Script?action=raw"
    #! / bin / bash
 # /etc/init.d/minecraft
 # version 0.4.2 2016-02-09 (AAAA-MM-JJ)
 #
 ### BEGIN INIT INFO
 # Fournit: minecraft
 # Required-Start: $ local_fs $ remote_fs screen-cleanup
 # Required-Stop: $ local_fs $ remote_fs
 # Should-Start: $ network
 # Should-Stop: $ network
 # Default-Start: 2 3 4 5
 # Default-Stop: 0 1 6
 # Description courte: serveur Minecraft
 # Description: Démarre le serveur minecraft
 ### FIN INIT INFO
 
 #Réglages
 SERVICE = 'minecraft_server.jar'
 SCREENNAME = 'minecraft_server'
 OPTIONS = 'nogui'
 USERNAME = 'minecraft'
 MONDE = 'monde'
 MCPATH = '/ home / minecraft'
 BACKUPPATH = '/ minecraft / minecraft.backup'
 MAXHEAP = 2048
 MINHEAP = 1024
 HISTOIRE = 1024
 CPU_COUNT = 1
 INVOCATION = "java -Xmx $ MAXHEAP M -Xms $ MINHEAP M -XX: + UseConcMarkSweepGC 
 -XX: + CMSIncrementalPacing -XX: ParallelGCThreads = $ CPU_COUNT -XX: + AggressiveOpts 
 -jar $ SERVICE $ OPTIONS "
 
 ME = `whoami`
 as_user () 
   si [ "$ME" = "$USERNAME" ] ; puis
     bash -c "$ 1"
   autre
     su - "$ USERNAME" -c "$ 1"
   Fi
 
 
 mc_start () 
   si pgrep -u $ USERNAME -f $ SERVICE> / dev / null; puis
     echo "$ SERVICE est déjà en cours d'exécution!"
   autre
     echo "À partir de $ SERVICE ..."
     cd $ MCPATH
     as_user "cd $ MCPATH && screen -h $ HISTORY -dmS $ SCREENNAME $ INVOCATION"
     dormir 7
     si pgrep -u $ USERNAME -f $ SERVICE> / dev / null; puis
       echo "$ SERVICE est maintenant en cours d'exécution."
     autre
       echo "Erreur! Impossible de démarrer $ SERVICE!"
     Fi
   Fi
 
 
 mc_saveoff () 
   si pgrep -u $ USERNAME -f $ SERVICE> / dev / null; puis
     echo "$ SERVICE est en cours d'exécution ... suspension des sauvegardes"
    as_user "écran -p 0 -S $ SCREENNAME -X eval 'stuff " dit le démarrage de la sauvegarde du serveur. Serveur en lecture seule ...  " 015 '"
     as_user "écran -p 0 -S $ SCREENNAME -X eval 'stuff " save-off  " 015'"
     as_user "écran -p 0 -S $ SCREENNAME -X eval 'stuff " save-all  " 015'"
     synchroniser
     dormir 10
   autre
     echo "$ SERVICE n'est pas en cours d'exécution. Ne pas suspendre les sauvegardes."
   Fi
 
 
 mc_saveon () 
   si pgrep -u $ USERNAME -f $ SERVICE> / dev / null; puis
     echo "$ SERVICE est en cours d'exécution ... réactiver les sauvegardes"
     as_user "écran -p 0 -S $ SCREENNAME -X eval 'stuff " save-on  " 015'"
     as_user "screen -p 0 -S $ SCREENNAME -X eval 'stuff " dit le serveur de sauvegarde terminé. Serveur en lecture-écriture ...  " 015 '"
   autre
     echo "$ SERVICE n'est pas en cours d'exécution. Ne pas reprendre les sauvegardes."
   Fi
 
 
 mc_stop () 
   si pgrep -u $ USERNAME -f $ SERVICE> / dev / null; puis
     echo "Stopping $ SERVICE"
     as_user "screen -p 0 -S $ SCREENNAME -X eval 'stuff " dit le serveur qui s'arrête en 10 secondes. Enregistrement de la carte ...  " 015 '"
     as_user "écran -p 0 -S $ SCREENNAME -X eval 'stuff " save-all  " 015'"
     dormir 10
     as_user "écran -p 0 -S $ SCREENNAME -X eval 'stuff " stop  " 015'"
     dormir 7
   autre
     echo "$ SERVICE n'était pas en cours d'exécution."
   Fi
   si pgrep -u $ USERNAME -f $ SERVICE> / dev / null; puis
     echo "Erreur! $ SERVICE n'a pas pu être arrêté."
   autre
     echo "$ SERVICE est arrêté."
   Fi
 
 
 mc_update () 
   si pgrep -u $ USERNAME -f $ SERVICE> / dev / null; puis
     echo "$ SERVICE est en cours d'exécution! Ne démarre pas la mise à jour."
   autre
     as_user "cd $ MCPATH && wget -q -O $ MCPATH / versions --no-check-certificate https://launchermeta.mojang.com/mc/game/version_manifest.json"
     si [ "$1" == "snapshot" ] ; puis
       JSONVERSION = `cd $ MCPATH && versions cat 
 
 mc_backup () 
    mc_saveoff
    
    NOW = `date" +% Y-% m-% d_% Hh% M "`
    BACKUP_FILE = "$ BACKUPPATH / $ WORLD _ $ NOW .tar"
    echo "Sauvegarde du monde Minecraft ..."
    #as_user "cd $ MCPATH && cp -r $ WORLD $ BACKUPPATH / $ WORLD _`date" +% Y.% m.% d_% H.% M "` "
    as_user "tar -C " $ MCPATH  "-cf " $ BACKUP_FILE  "$ WORLD"
 
    echo "Sauvegarde $ SERVICE"
    as_user "tar -C " $ MCPATH  "-rf " $ BACKUP_FILE  "$ SERVICE"
    #as_user "cp " $ MCPATH / $ SERVICE  "" $ BACKUPPATH / minecraft_server _ $ NOW .jar  ""
 
    mc_saveon
 
    echo "Compression de sauvegarde ..."
    as_user "gzip -f " $ BACKUP_FILE  ""
    echo "Fait."
 
 
 mc_command () 
   commande = "$ 1";
   si pgrep -u $ USERNAME -f $ SERVICE> / dev / null; puis
     pre_log_len = `wc -l" $ MCPATH / logs / latest.log "

 mc_listen () 
   si pgrep -u $ USERNAME -f $ SERVICE> / dev / null; puis
     as_user "tail -f $ MCPATH / logs / latest.log"
   autre
     echo "$ SERVICE n'est pas en cours d'exécution. Impossible d'écouter le serveur."
   Fi


 
 # Start-Stop here
 case "$ 1" dans
   début)
     mc_start
    ;;
   Arrêtez)
     mc_stop
    ;;
   redémarrer)
     mc_stop
     mc_start
    ;;
   mettre à jour)
     mc_stop
     mc_backup
     mc_update $ 2
     mc_start
    ;;
   sauvegarde)
     mc_backup
    ;;
   statut)
     si pgrep -u $ USERNAME -f $ SERVICE> / dev / null; puis
       echo "$ SERVICE est en cours d'exécution."
     autre
       echo "$ SERVICE n'est pas en cours d'exécution."
     Fi
    ;;
   commander)
     si [ $# -gt 1 ] ; puis
       décalage
       mc_command "$ *"
     autre
       echo "Doit spécifier la commande du serveur (essayez 'help'?)"
     Fi
    ;;
   écoute)
     mc_listen
    ;;
 
   *)
   echo "Utilisation: $ 0  update "
   sortie 1
  ;;
 esac
 
 sortie 0

Exigences[[[[modifier]

  • écran
  • python (apt-get install python)

Installation[[[[modifier]

Utilisez votre éditeur favori pour créer un fichier appelé minecraft dans /etc/init.d/ et collez le script ci-dessus dans ce fichier.

Editez les variables USERNAME et MCPATH en fonction de votre configuration. Si vous utilisez un script wrapper, changez INVOCATION pour le démarrer au lieu de démarrer directement le serveur.

Assurez-vous que le fichier nouvellement créé a les autorisations requises
Vous pouvez définir les autorisations en exécutant:

chmod a + x /etc/init.d/minecraft

Puis lancez (sur les distributions basées sur Debian)

update-rc.d valeurs par défaut de minecraft

À partir de Debian 6.0, la commande insserv est utilisée à la place, si le démarrage par dépendance est activé.
insserv ne produira aucun résultat si tout se passe bien. Examiner le code d'erreur dans $? si vous voulez être sûr.

insserv minecraft

Sur CentOs et RHEL (Redhat Enterprise Linux)
Vous devrez ajouter le processus à la liste chkconfig. Chkconfig gère les scripts de démarrage sous systemd

chkconfig --add minecraft

Pour vérifier si le processus est correctement effectué, utilisez la commande ntsysv. Continuez à faire défiler l'écran jusqu'à ce que le processus minecraft s'affiche.
Répétez la commande chkconfig.
ajouter les liens symboliques requis.
Remarque: votre système vous avertira probablement que le script ne répond pas à toutes les exigences. Le script fonctionnera cependant.

Vous pouvez également configurer une entrée dans votre crontab pour sauvegarder le serveur.
Un exemple de crontab à sauvegarder toutes les demi-heures et 30 minutes:

  • En utilisant le compte d'utilisateur sur lequel vous voulez que le travail soit effectué, exécutez:
crontab -e

et ajouter ceci

0,30 * * * * /etc/init.d/minecraft backup

Si la tentative ci-dessus s'est mal déroulée parce que vous ne savez pas comment utiliser vi, essayez:

VISUAL = / usr / bin / nano crontab -e

Désinstaller[[[[modifier]

(Dans une distribution GNU / Linux basée sur Debian)

update-rc.d -f minecraft supprimer

(En centos / RHEL)

chkconfig --del minecraft

Usage[[[[modifier]

Le script peut être appelé via la commande suivante sur la plupart des systèmes, où "(commande)" sera "arrêter", "démarrer", "redémarrer" ou toute autre option prise en charge.

/etc/init.d/minecraft (commande)

Sur la plupart des distributions RedHat ou Debian où la commande `service` est disponible, elle devrait être appelée comme suit:

service minecraft (commande)

Pour afficher l'écran, utilisez:

écran -r

Pour quitter l'écran, utilisez:

CTRL + a + d

Références[[[[modifier]

[[[[modifier]

Si vous souhaitez toujours afficher le fichier journal en direct, utilisez cette commande dans le répertoire du serveur.

tail -f logs / latest.log

Scripts de démarrage alternatifs[[[[modifier]

Les scripts suivants offrent les mêmes fonctions que le script ci-dessus, mais contiennent des fonctionnalités plus utiles:

  • [Multi World] Script de contrôle du serveur Minecraft
    • Exécutez plusieurs mondes Minecraft.
    • Démarrer, arrêter et redémarrer un ou plusieurs mondes.
    • Créer, supprimer, désactiver et activer des mondes.
    • Prend en charge CraftBukkit en plus de la distribution de serveur Mojang standard.
    • Les utilisateurs sont automatiquement informés des événements importants sur le serveur.
    • Utilise le protocole de requête Minecraft pour garder une trace des conditions actuelles du serveur.
    • Le script d'initialisation compatible LSB et compatible systemd permet une intégration transparente aux séquences de démarrage et d'arrêt de votre serveur.
    • Cartographiez les mondes à l'aide du logiciel de cartographie Minecraft Overviewer.
    • Sauvegardez des mondes et supprimez les sauvegardes antérieures à X jours.
    • Mettez à jour le logiciel serveur et les addons installés.
    • Envoyez des commandes à un serveur mondial à partir de la ligne de commande.
  • minecraftd
    • Démarrer, arrêter et redémarrer le serveur à l'aide de systemd ou du script directement
    • Envoyer des commandes à un serveur à partir de la ligne de commande
    • Serveur de sauvegarde (monde, plugins, configuration, etc.) et purge les anciens (configurable)
    • Suspendre le serveur si aucun joueur n’est connecté et l’afficher dès que l’on essaie de s’associer pour maximiser l’efficacité
    • Purement écrit en caractères bash et condensés dans environ 500 lignes de code pour que l’empreinte papier reste petite
    • Configuration flexible: support pour par exemple embout / craftbukkit, threads ajustables et utilisation de la RAM, etc.
    • Prise en charge complète de systemd avec init et script de sauvegarde
    • Utilisation sécurisée des ressources: exécutez le script en tant qu'utilisateur différent et supprimez les autorisations si elles ne sont pas requises.
    • Très similaire au script décrit dans cet article: Il utilise également screen et tar mais offre des fonctionnalités plus avancées
    • Excellent support Arch Linux
  • Minecraft Systemd Service Un bon service systemd qui comprend:
    • arrêt sécurisé avec rcon
    • protection du système en tirant le meilleur parti du système en lecture seule
    • utilise le journal systemd pour se connecter
    • peut être combiné avec un joli script de centre de commande
    • est entièrement intégré à la chaîne de systèmes systemd
  • minecraft init
    • modification de ce script avec beaucoup plus de fonctionnalités comme multiworld
  • Mineserv Perl Init Script
    • Un script de démarrage / arrêt automatique très simple avec des fonctions de sauvegarde et de nettoyage et la possibilité de passer des commandes à la console du serveur.


Click to rate this post!
[Total: 0 Average: 0]

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.