On ne présente plus ce jeu hyper addictif qu'est Minecraft, son principal intérêt n'étant pas le graphisme mais bien l'aspect "sand game" qui nous confère des années de vagabondages sans fin :D
Petit récapitulatif de tuto trouvés à droite et à gauche pour faire une installation complète en mode service
Nous n'allons pas installer minecraft server à proprement parler mais un fork de minecraft qui embarque bien plus d'options pour le multijoueur : Bukkit.
Démarrage
Pour démarrer : connectez vous en root sur votre serveur
Installez la jre de java6 ainsi que screen qui servira au fonctionnement en tâche de fond de minecraft. Nous allons également préférer installer OpenJDK plutôt que le classique Java dans notre exemple.
sudo apt-get install openjdk-6-jre
sudo apt-get install screen
Dans mon cas je ne travail qu'avec l'éditeur emacs (d'autres préfèreront vim ou vi...), étape donc facultatif
sudo apt-get install emacs
Une fois l'installation terminée on va installer minecraft/bukkit.
cd /var
mkdir minecraft
cd minecraft
wget "XXXXX" -O "minecraft_server.jar"
Notez que pour obtenir la dernière version de bukkit, il faut consulter le site et chopper le lien wget pour leur dernière release dans la catégorie téléchargement recommandé. De plus j'ai renommé le jar en minecraft_server par pure fainéantise pour la suite du tuto.
Premiers Tests
A ce stade de l'installation vous devez être capable de lancer deux commandes :
java -version
Doit vous retourner la version 1.6.x de OpenJDK installé
java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
Doit vous lancer votre serveur minecraft qui est à ce propos très long à démarrer la première fois vu qu'il génère 3 maps. Patience donc.
Mise en service
Placer son script en service nous épargnera de devoir conserver la console ouverte pour faire fonctionner le serveur.
Je remercie l'auteur de ce script : Xavier, je n'ai rien eu à faire d'autre que copier/coller ce script. Merci à lui.
emacs /etc/init.d/minecraft
Coller le code dedans :
#!/bin/bash
# /etc/init.d/minecraft
#Settings
SERVICE='minecraft_server.jar'
USERNAME="root"
MCPATH='/var/minecraft/'
BACKUPPATH='/var/minecraft/minecraft.backup/'
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 java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui"
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_saveoff() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running... suspending saves"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
sync
sleep 10
else
echo "$SERVICE was not running. Not suspending saves."
fi
}
mc_saveon() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running... re-enabling saves"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'"
else
echo "$SERVICE was not running. Not resuming saves."
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
}
mc_update() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running! Will not start update."
else
MC_SERVER_URL=http://minecraft.net/`wget -q -O - http://www.minecraft.net/download.jsp | grep minecraft_server.jar\ | cut -d \" -f 2`
as_user "cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL"
if [ -f $MCPATH/minecraft_server.jar.update ]
then
as_user "mv $MCPATH/minecraft_server.jar.update $MCPATH/minecraft_server.jar"
echo "Minecraft successfully updated."
else
echo "Minecraft update could not be downloaded."
fi
fi
}
mc_backup() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
# echo "$SERVICE is running! Will not start backup."
# else
echo "Backing up minecraft data"
if [ -d $BACKUPPATH/world_`date "+%m.%d.%Y"` ]
then
for i in 1 2 3 4 5 6
do
if [ -d $BACKUPPATH/world_`date "+%m.%d.%Y"`-$i ]
then
continue
else
as_user "cd $MCPATH && cp -r world $BACKUPPATH/world_`date "+%m.%d.%Y"`-$i"
break
fi
done
else
as_user "cd $MCPATH && cp -r world $BACKUPPATH/world_`date "+%m.%d.%Y"`"
fi
echo "Backing up the minecraft server executable"
if [ -f "$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`.jar" ]
then
for i in 1 2 3 4 5 6
do
if [ -f "$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`-$i.jar" ]
then
continue
else
as_user "cd $MCPATH && cp minecraft_server.jar \"$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`-$i.jar\""
break
fi
done
else
as_user "cd $MCPATH && cp minecraft_server.jar \"$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`.jar\""
fi
fi
echo "Backup complete"
}
#Start-Stop here
case "$1" in
start)
mc_start
;;
stop)
mc_stop
;;
restart)
mc_stop
mc_start
;;
update)
mc_stop
mc_backup
mc_update
mc_start
;;
backup)
mc_saveoff
mc_backup
mc_saveon
;;
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|update|backup|status|restart}"
exit 1
;;
esac
exit 0
Sauvegardez le fichier, et préparez le à l’exécution.
chmod 755 /etc/init.d/minecraft
Exécution
Le lancement du serveur se fait par cette commande :
/etc/init.d/minecraft start
D'autres commandes sont dispos :
- start
- stop
- restart
- status (donne l'état du serveur)
- backup
Voilà c'est finit. A vous la chasse au diamant.
via :
- les forums de firstheberg
- Ctr-alt-geek
- Bukkit