PDA

Voir la version complète : [Tuto] Monter un serveur MC Bukkit sous Linux (Debian squeeze)



Cowboy
12/02/2011, 20h58
Bonjour,

Voici un petit tutorial pour monter un serveur rapidement sous linux en partant d'une netinstall :

Installation

vim pour éditer les fichiers de configuration en ligne de commande
fail2ban parceque
resolvconf pour changer les DNS
git nécessaire a spigot
openjdk-7-jre pour java
proFTPD pour le transfert de fichier ...
screen pour ouvrir des sessions virtuelles


aptitude install vim fail2ban resolvconf git openjdk-7-jre proFTPD

Copie de BuildTools pour l'installation de spigot

wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar /home/spigot -P "/home/spigot.1.9.4/"


cd /home/spigot.1.9.4/

Lancement de l'installation avec la bonne version :

java -jar BuildTools.jar --rev 1.9.4

Eula

echo eula=true > eula.txt

Lancement du serveur Minecraft :

java -Xms2G -Xmx3G -XX:MaxPermSize=128M -jar spigot-1.9.4.jar nogui

Mémo Screen
Mémo Screen
Quand on lance un serveur MC sur une session SSH, le serveur s'arrête quand on ferme la session.
Pour remedier à ce problème il y a deux méthodes.

Créer un script pour lancer le serveur MC comme un service, ensuite on utilise /etc/init.d/mc stop|start etc ...
Utiliser la commande screen

Screen permet de lancer des terminaux virtuels sur un serveur, on se connecte en SSH, on créer un terminal :

screen -S mc
On lance le serveur MC

java -Xmx1024M -Xms1024M -jar craftbukkit_0.0.1_318.jarOn quitte le terminal avec Ctrl+A et à ce moment vous pouvez fermer la session Putty.
Pour revenir sur le terminal mc, il faut faire :

screen -r mc
Pour voir la liste des terminaux existants :

screen -ls

Plugins
PermissionsEx: http://dev.bukkit.org/bukkit-plugins/permissionsex/
# Gère les permissions.

Home spawn plus: http://dev.bukkit.org/bukkit-plugins/homespawnplus/
# Gère le /spawn et les eventuels /home.

WorldBorder: http://dev.bukkit.org/bukkit-plugins/worldborder/
# Gère la bordure du monde, et permet de l'explorer (fill) ou de le rétrécir (trim).

Weatherman: https://www.spigotmc.org/resources/weatherman.5928/
# Changer les biomes.

Prism: http://dev.bukkit.org/bukkit-plugins/prism/
# Anti grief, rollback, outils de log.

Multiverse: http://dev.bukkit.org/bukkit-plugins/multiverse-core/
# Indispensable pour avoir plusieurs monde sur son serveur.

Per World Inventory : https://www.spigotmc.org/resources/per-world-inventory.4482/
# Pour séparer les inventaires entre différents mondes.

WorldEdit: http://dev.bukkit.org/bukkit-plugins/worldedit/
# Modifier son monde, permet aussi le rollback d'une zone depuis une sauvegarde.

AutoSaveWorld: http://dev.bukkit.org/bukkit-plugins/autosaveworld/
# Sauvegarde de monde, dans le formet WorldEdit (pour le /restore).

Citizens: http://dev.bukkit.org/bukkit-plugins/citizens/
# Animer les rues !

Jail: http://dev.bukkit.org/bukkit-plugins/jail/
# Envoyer des joueurs en prison.

WorldGuard: http://dev.bukkit.org/bukkit-plugins/worldguard/
# Empecher les Creepers de faire sauter les itemsFrames, et autres protection de zone.

Towny : http://bukkit.org/threads/sec-fun-info-chat-tp-towny-advanced-v0-88-0-0-land-and-town-management-3020-1-7-2-r0-3.25101/
# Permet de gerer des villes via des achats de terrain.

Dynmap: http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1286593-dynmap-dynamic-web-based-maps-for-minecraft
# Cartographie d'un serveur, indispensable.

Nykhola
12/02/2011, 22h17
Le seul hic :
Ta console SSH plante, le serveur plante.
Le mieux est de le lancer via screen et d'automatiser ça avec un script.

Cowboy
13/02/2011, 20h53
Quand j'aurais résolus mon problème avec Worldedit (commande inconnus) je j'ajouterais un truc sur screen.

Nykhola
13/02/2011, 20h58
Par contre CowBoy, je ne pige pas, tu dl Bukkit, mais tu lance le serveur de base ?

Sinon, un script :



#!/bin/bash
# /etc/init.d/minecraft
# version 0.3.2 2011-01-27 (YYYY-MM-DD)

### BEGIN INIT INFO
# Provides: minecraft
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Minecraft server
# Description: Starts the minecraft server
### END INIT INFO

#Settings
SERVICE='minecraft_server.jar'
USERNAME="minecraft"
MCPATH='/home/minecraft/minecraft'
INVOCATION='java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui'

ME=`whoami`
as_user() {
if [ "$ME" == "$USERNAME" ] ; then
bash -c "$1"
else
su - $USERNAME -c "$1"
fi
}

mc_start() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "Tried to start but $SERVICE was already running!"
else
echo "$SERVICE was not running... starting."
cd $MCPATH
as_user "cd $MCPATH && screen -dmS minecraft $INVOCATION"
sleep 7
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is now running."
else
echo "Could not start $SERVICE."
fi
fi
}

mc_stop() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running... stopping."
as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
sleep 10
as_user "screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'"
sleep 7
else
echo "$SERVICE was not running."
fi
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE could not be shut down... still running."
else
echo "$SERVICE is shut down."
fi
}

#Start-Stop here
case "$1" in
start)
mc_start
;;
stop)
mc_stop
;;
restart)
mc_stop
mc_start
;;
status)
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running."
else
echo "$SERVICE is not running."
fi
;;

*)
echo "Usage: /etc/init.d/minecraft {start|stop|status|restart}"
exit 1
;;
esac

exit 0

Cowboy
15/02/2011, 10h51
Par contre CowBoy, je ne pige pas, tu dl Bukkit, mais tu lance le serveur de base ?
Un vieux copié collé, merci pour la précision.

Je suis pas très fan des scripts et autre ajout de ce type simplement pour lancer un screen -ls ...

Cowboy
21/02/2011, 11h47
Petite mise à jour avec un exemple de fichier de configuration pour le plugin "Permissions"

Changement du plugin "MyHome" par "SpawnControl v0.6.1", cela permet d'avoir le /home, /sethome, /spawn et le /setspawn

Pyraah
07/05/2011, 22h23
Bonsoir,

Merci pour le tuto, qui me servira d'ici quelques jours.
J'ai quand même quelques questions. Si on lance le serveur pas un script au démarrage (donc ensuite par /etc/init.d/ pour le redémarrer, le stopper, etc), est-il possible d'accéder quand même à la console ? Ou faut-il forcément être op ?
Si je mets en place un script pour démarrer le serveur dans un shell de screen, imaginons que je lance le redémarrage de la machine. Le serveur est-il "tué" ou va-t-il prendre le temps de sauvegarder avant de redémarrer ?

Voilà, encore merci. :)

Cowboy
10/05/2011, 23h58
Je ne pourrais pas te répondre précisement pour la première question, je dirais que tout dépend du script, si tu créée un terminal virtuel au lancement du serveur, tu pourra acceder par la suite au terminal
Quand tu lance un shutdown (via un terminal ou le bouton du serveur), le serveur MC s'éteint proprement.

Pyraah
11/05/2011, 10h40
Merci,

Donc si je comprends bien, je peux faire un script pour utiliser /etc/init.d qui fait appel à screen, c'est exact ?

Désolé, je suis moyennement familier de Linux, je préfère m'informer un maximum.

Cowboy
11/05/2011, 17h52
Ouep

Cowboy
02/06/2011, 16h20
Mise à jour de permission qui passe en 3.0 !

Voici un exemple avec deux utilisateurs et quatre groupes :


Groups.yml
#######################################

groups:
visiteur:
default: true
info:
build: false
prefix: '&b'
suffix: '&f'
permissions:
- 'mywarp.warp.sign.warp'
- 'SpawnControl.spawn.use'
- 'SpawnControl.groupspawn.use'


joueur:
default: false
info:
build: true
prefix: '&b'
suffix: '&f'
permissions:
- 'SpawnControl.sethome.basic'
- 'SpawnControl.home.basic'
inheritance:
- visiteur


admin:
default: false
info:
build: true
prefix: '&b'
suffix: '&f'
permissions:
- 'mywarp.warp.sign.create'
- 'mywarp.warp.sign.delete'
inheritance:
- visiteur
- joueur


superadmin:
default: false
info:
build: true
prefix: '&b'
suffix: '&f'
permissions:
- '*'
inheritance:
- visiteur
- joueur
- admin



Users.yml
#######################################

users:
AdminPseudo:
groups:
- superadmin
permissions:


Grany:
groups:
- admin
permissions:

C'est bien plus clair et simple qu'avant.


plugins/ <-- This is your plugins folder
Permissions/ <-- This is Permissions' folder under plugins/
mainworld/ <-- This is the folder containing the config of the world named "mainworld"
groups.yml <-- YAML file containing the groups in "mainworld"
users.yml <-- YAML file containing the users in "mainworld"

nether/ <-- Folder containing config of the world named "nether"
groups.yml <-- YAML file containing the groups in "nether"
users.yml <-- YAML file containing the users in "nether"

storageconfig.yml <-- Storage configuration.

omnilink
05/06/2011, 09h59
Saloute,

Je vais sûrement posé une question stupide, mais je n'arrive pas a faire en sorte que bukkit se lance au démarrage de mon serveur et reste lancé même si je ferme mon terminal, j'avais réussi avec différent script pour lancer le serveur sans bukkit mais avec cela relève du casse tête !
J'ai du raté un truc, mais je suis super mauvais en script et c'est mon premier contact avec linux, je capte pas très bien la chose :p
Si une âme charitable passe dans le coin ;)

Merci ! :p