Войти или зарегистрироваться

Туториал Установка сервера на vds

  • Автор темы Автор темы SmokeD
  • Дата начала Дата начала
Полностью согласен тем более крон нужен только для запуска авто бекапа удаление старых бекапов и перезапуск сервера после бекапа если надо могу поставить коменты где что удалить надо....
И да если есть VPS например на debian или ubuntu или то там этот пакет ставится автоматически. Он может там отсутствовать только если его ЯВНО удалять админы.

SmokeD, Не в обиду но похожу вы даже с кронам и не знакомы что это такое выдержка из википедии

Плюс если у вас на винде нет Планировщика задач значит вы на маке сидите.

А сам скрипт проста облегчает жизнь запуск и остановку сервера например
чтоб остановить сервер не надо бежать в скрин а достаточна ввести
service minecraft stop
для запуска
service minecraft start
для перезапуска
service minecraft restart
Плюс если сервер будет перезагружен по тем или иным причинам то сервер майна без данного скрипта не запустится а тут хоть сервер 100000 перезагружай сервер майна будет запущен автоматически. так что думаю в туториал вверх темы надо поставить. если автор согласится поставить могу прокомментировать код и подробней написать как работать со скриптом.
1. - Такой я по природе. У меня на Линуксе 1 VDS и домашный сервер. Все. Подробностями строения ОС никогда не интересовался. Так юзаю Mac и Win8.
2. - Здесь я написал базовый уровень, не вдаваясь в подробности.
3. - Следующим постом опиши код, добавлю в тутор.
 
В памятку про screen добавьте:
openjdk лучше не юзать, раньше у меня стоял - сильно глючил, лучше скачать нормальную яву от oracle
[FIXED]Приходится, ибо поддержки оригинальной, Sun'овской явы в Ubuntu уже нету. Вроде есть какой то способ с alien'ом.
 
Наверное лучше выбирать CentOS а не Ubuntu
 
Наверное лучше выбирать CentOS а не Ubuntu
Это дело вкуса. Может он лучше ориентируется в CentOS, чем в Debian. Хотя у меня абсолютно на всех серверах стоит либо Debian, либо Ubuntu (если нужен GUI)

Установка на все три выше изложенные ОС отличается только установкой Java, дополнить это не сложно. А, так серверная бубунта менее прожорлива чем например CentOS. (проверял на тру VDS, разница около 100Мб, не суть конечно, но все-же)
 
Установка на все три выше изложенные ОС отличается только установкой Java, дополнить это не сложно. А, так серверная бубунта менее прожорлива чем например CentOS. (проверял на тру VDS, разница около 100Мб, не суть конечно, но все-же)
А есть какая-нибудь информация о разнице потребляемых ресурсов у Debian и серверной Ubuntu?
 
Код:
#!/bin/bash
# /etc/init.d/minecraft
# version 0.3.9 2012-08-13 (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='craftbukkit.jar' #названия файла сервера
USERNAME='root' # от которово пользывателя запускается сервер
WORLD='Oddworld_Medieval' #название папки с миром
MCPATH='/var/www/server3' # путь в какой папке расположен сервер
BACKUPPATH='/var/www/minecraft.backup' # путь в какой папке расположен сервер !
time_del='0344' # !!!ТОЛЬКА ЕСЛИ ДЕЛАЕТЕ БЕКАП час и минута ВМЕСТИ ВОСКОЛЬКО УДОЛЯТЬ СТАРЫЕ ФАЙЛЫ
day='1' # удолять файлы старшк указаных дней
MAXHEAP=1536 # максимум памети выделять
MINHEAP=580 # минимум памети выделять
HISTORY=750 # удерживать сколька памети
CPU_COUNT=1 #количество ядер
NAME_SCREEN='industrialminecraft' # имя скрина если используете несколько серверов
reset_backup='yes' #если после бекапа ресет серера не нежен пишем no
INVOCATION="java -Xmx${MAXHEAP}M -Xms${MINHEAP}M -XX:+UseConcMarkSweepGC \
-XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts \
-jar $SERVICE"
 
ME=`whoami`
as_user() {
  if [ $ME == $USERNAME ] ; then
    bash -c "$1"
  else
    su - $USERNAME -c "$1"
  fi
}
 
mc_start() {
  if  pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "$SERVICE is already running!"
  else
    echo "Starting $SERVICE..."
    cd $MCPATH
    as_user "cd $MCPATH && screen -h $HISTORY -dmS $NAME_SCREEN $INVOCATION"
    sleep 7
    if pgrep -u $USERNAME -f $SERVICE > /dev/null
    then
      echo "$SERVICE is now running."
    else
      echo "Error! Could not start $SERVICE!"
    fi
  fi
}
 
mc_saveoff() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "$SERVICE is running... suspending saves"
    as_user "screen -p 0 -S $NAME_SCREEN -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'"
    as_user "screen -p 0 -S $NAME_SCREEN -X eval 'stuff \"save-off\"\015'"
    as_user "screen -p 0 -S $NAME_SCREEN -X eval 'stuff \"save-all\"\015'"
    sync
    sleep 10
  else
    echo "$SERVICE is not running. Not suspending saves."
  fi
}
 
mc_saveon() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "$SERVICE is running... re-enabling saves"
    as_user "screen -p 0 -S $NAME_SCREEN -X eval 'stuff \"save-on\"\015'"
    as_user "screen -p 0 -S $NAME_SCREEN -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'"
  else
    echo "$SERVICE is not running. Not resuming saves."
  fi
}
 
mc_stop() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "Stopping $SERVICE"
    as_user "screen -p 0 -S $NAME_SCREEN -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'"
    as_user "screen -p 0 -S $NAME_SCREEN -X eval 'stuff \"save-all\"\015'"
    sleep 10
    as_user "screen -p 0 -S $NAME_SCREEN -X eval 'stuff \"stop\"\015'"
    sleep 7
  else
    echo "$SERVICE was not running."
  fi
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "Error! $SERVICE could not be stopped."
  else
    echo "$SERVICE is stopped."
  fi
}
 
mc_backup() {
  mc_saveoff
 
  i=2 #(  )
find $BACKUPPATH -type f -mtime +$i -exec rm -f {} \;
 
  NOW=`date "+%Y-%m-%d_%Hh%M"`
  BACKUP_FILE="$BACKUPPATH/${WORLD}_${NOW}.tar"
 
    time=`date +%H%M`
    if [ "$time" -eq "$time_del" ]
    then
    cd /var/www/minecraft.backup
    find /var/www/minecraft.backup/* -mtime +$day -print0 | xargs -0 rm -rf
    else
    echo 'ne prishlo vremja udoolat';
    fi
     
  echo "Backing up minecraft world..."
  as_user "tar -C \"$MCPATH\" -cf \"$BACKUP_FILE\" $WORLD"
 
  echo "Backing up $SERVICE"
  as_user "tar -C \"$MCPATH\" -rf \"$BACKUP_FILE\" $SERVICE"
 
  mc_saveon
 
  echo "Compressing backup..."
  as_user "gzip -f \"$BACKUP_FILE\""
  echo "Done."
  as_user "screen -p 0 -S $NAME_SCREEN -X eval 'stuff \"say SERVER RESTART IN 10 SECONDS...\"\015'"
  echo "SERVER RESTART IN 10 SECONDS..."
  sleep 10
   
    if [ $reset_backup == 'yes' ]
    then
    echo 'reset servaka proizvodit nando'
    mc_stop
    mc_start
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
    then
      echo "$SERVICE is running."
    else
      echo "$SERVICE is not running."
    fi
    else
    echo 'reset servaka proizvodit ne nando'
    fi
}
 
mc_command() {
  command="$1";
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    pre_log_len=`wc -l "$MCPATH/server.log" | awk '{print $1}'`
    echo "$SERVICE is running... executing command"
    as_user "screen -p 0 -S $NAME_SCREEN -X eval 'stuff \"$command\"\015'"
    sleep .1 # assumes that the command will run and print to the log file in less than .1 seconds
    # print output
    tail -n $[`wc -l "$MCPATH/server.log" | awk '{print $1}'`-$pre_log_len] "$MCPATH/server.log"
  fi
}
 
#Start-Stop here
case "$1" in
  start)
    mc_start
    ;;
  stop)
    mc_stop
    ;;
  restart)
    mc_stop
    mc_start
    ;;
  backup)
    mc_backup
    ;;
  status)
    if pgrep -u $USERNAME -f $SERVICE > /dev/null
    then
      echo "$SERVICE is running."
    else
      echo "$SERVICE is not running."
    fi
    ;;
  command)
    if [ $# -gt 1 ]; then
      shift
      mc_command "$*"
    else
      echo "Must specify server command (try 'help'?)"
    fi
    ;;
 
  *)
  echo "Usage: $0 {start|stop|backup|status|restart|command \"server command\"}"
  exit 1
  ;;
esac
 
exit 0
 
1. Параметра nogui в бакките вообще нет.
2. Сделай возможность управлять несколькими серверами, удобнее будет.
про но гуи понял уберу..
а управлять предлагаешь service minecraft server1 start
service minecraft server2 start Задумка неплоха на досуге подумаю как организовать.
а вообще что мешает продублировать этот файл стока скока серверов и назвать файлы по названию серверов то на то и получится )))) далее в переменной NAME_SCREEN написать название сервера для скрина и всё вауля управляем хоть 100 серверами главное файл дублировать... как идея?
 
Ск
А есть какая-нибудь информация о разнице потребляемых ресурсов у Debian и серверной Ubuntu?
Скажу тат есть 2 впс на обоих стоит Дебиан 6
про крутую где под 3 гига рама думаю цифарки не интересуют.
Скажу про впс где стоит серв специально для узка круга людей где играем.
CPU usage 6% user, 0% kernel, 0% IO, 94% idle
Real memory 748.68 MB total, 505.13 MB used
Virtual memory 1.43 GB total, 66.27 MB used
37.97 GB total, 17.44 GB used
учитывая что там ещё amp запущен
И данный серв спокойна выдержывает 5 человек и лагов минимум... данные цыфорки помагли.....
 
Всё до предела просто...
apt-get install sun-java7-jre
Если бы..
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
E: Не удалось найти пакет sun-java7-jre
 
Если бы..
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
E: Не удалось найти пакет sun-java7-jre

Извините за мою самоуверенность. Попробуйте так:

su -
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" > /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" >> /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
apt-get update
apt-get install oracle-java7-installer
exit
 
Извините за мою самоуверенность. Попробуйте так:

su -
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" > /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" >> /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
apt-get update
apt-get install oracle-java7-installer
exit
Не могли бы Вы между командами строки пропускать. а то не очень понятно..
 
Назад
Верх