Пятница, 03.04.2020, 20:21:35

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » SA-MP » SA-MP wiki » О сервере Linux
О сервере Linux
 Дата: Четверг, 18.02.2010, 20:39:46 | Сообщение # 1

limkverd
Администраторы



Статус Offline
Регистрация 06.09.2009
Сообщений 60
Рейтинг 701
Последние награды
Первоочередные требования

Вам нужен сервер Linux с доступом к shell'у, доступ по ftp, libstdc++5 или libstdc++6, и SSH-клиент для соединения с сервером.

Поднятие сервера

Загрузка файлов

Первым делом зайдите на http:/sa-mp.com/download.php и скачайте сервер Linux, libstdc++5 или libstdc++6, в зависимости от того, чт озапущено на вашем сервере. Я рекомендую скачать libstdc++6 чтобы проверить для начала, работает ли. Затем поместите через FTP файлы на ваш сервер, используя любимый FTP-клиент.

Настройка вашего сервера

После того, как вы скачали файлы, откройте их вашим любимым SSH-клиентом и залогиньтесь. Переместитесь в папку, куда вы установили сервер (например, я использую /home/daniel/sampsvr - ваша папка может быть другой), введя cd /your/directoy/sampsvr. Используя ваш любимый текстовый редактор, например, Pico или Nano, отредактируйте server.cfg и измените hostname (имя сервера), RCON password (пароль на RCON) и др., более подробную информацию вы можете найти в справке по server.cfg и на странице Продвинутое управление сервером. Если вы отредактировали ваш линуксовский конфигурационный файл в Windows, то прежде чем запустить сервер, введите "dos2unix server.cfg", иначе у вас будут проблемы с rcon.

Запуск сервера

После того, как вы сконфигурировали server.cfg должным образом, просто запустите севрер одним из следующих способов. Каждый способ имеет описание под картинкой. Я покажу три наиболее популярных способа запуска сервера. Небольшой SSH-скрипт для поддержания работоспособности вашего сервера может быть найден внизу этой страницы.

ПРИМЕЧАНИЕ: Убедитесь, что вы установили разрешения для samp022svr и укажите, если вы хотите запустить интернет-сервер! Если вы не сделаете этого, то получите ошибку запрета разрешений.

Способ первый

В первом способе используется команда nohup command для поддержания работоспособности сервера. nohup - это команда Linux, запускающая программу, которая будет игнорировать сигналы SIGHUP - сигналы отключения. Это означает, что сервер будет продолжать работать после того, как вы закроете ранеее открытое окно SSH. Амперсанд & в конце комманды означает, что сервер должен работать в фоновом режиме, таким образом вы можете продолжать выполнение комманд даже после запуска сервера SA-MP.

nohup ./samp022svr &

Подробный лог может быть найден в файле nohup.out, который будет создан в папке, где вы выполнили команду (в данном случае "/home/gta"). Nohup устанвлен на большинстве Linux-серверов.

Способ второй

Втрой метод позволяет процессу сервера SA-MP идти в фоновом режиме. Преимущество состоит в том, что вы можете продолжать работу в shell-среде, таким образом вам не нужно открывать другое окно. На некоторых Linux-серверах процесс будет выполняться до тех пор, пока окно SSH не закроется, но не во всех случаях.

./samp022svr &

Здесь нет лог-файлов и прочих других. Shell вернет PID стартовавшего процесса, 9251 на примере выше. Этот метод поддерживается всеми Linux-серверами.

Способ третий

Этот метод самый оригинальный и наиболее легкий для понимания. Сервер будет рабоать на виду, и все ошибки будут выводится прямо на экран (например, segmentation faults). Но имейте в виду, что нормальный вывод, которй есть в Windows-сервере, не будет виден на Linux-сервере.

./samp022svr

Сервер выключится после при закрытии окна. Этот метод лучше всего подходит для написания скриптов и/или в целях отладки, т.к. он вполне ясный.

ПРИМЕЧАНИЕ: Если вы скачали версию libstdc++6 с сайта SA:MP и получили ошибку о том, что libstdc++6 не может быть найден, просто скачайте версию libstdc++5 с вебсайта SA:MP и используйте ее. Описанный выше сервер выдает "libstdc++6 cannot be found", и на скриншоте он запущен с использованием libstdc++5.

Поддержка работоспособности сервера

С небольшим количеством опций против выхода сервера из строя (anti-crash options) есть большая вероятность получения ошибок "Segmentation Fault" и любых других ошибок, сгенерированных вашим режимом игры. Это приведет к завершению работы сервера и Вам придется самим его снова запустить. Все, что вам нужно для использования ниже описанной программы, это среда Linux и возможность использования cron'a. Эта программа проверит, запущен ли процесс samp01b, и если это не так, запустит его вновь. Вам нужно уставовить следующий crontab:

*/5 * * * * /путь/к/samp/checksamp.sh

checksamp.sh:

Code

#!/bin/sh
   
  PROCESS_COUNT=$(ps -fu root | grep samp01b | grep -v grep | wc -l)
  case $PROCESS_COUNT in
  0) /путь/к/samp01b &
  ;;
  1) #OK, программа уже выполняется
  ;;

  *) #OK, запущено несколько экземпляров программы
  ;;
  esac

Убедитесь, что у вас правльно выставлены все пути, иначе скрипт не будет работать. На данный момент скрипт не может обрабатывать несколько серверов SA-MP на одной машине, зато превосходно работает, когда толкьо один запущен. Требуется с помощью chmod устанвить права/разрешения на файл checksamp.sh в 0755 (+x)!

Вы также можете перезапустить сервер при помощи этой пары shell-скриптов

Скрипт номер 1 startgtaserver.sh:

Code
#!/bin/bash
export GTA_PATH=/home/sampsvr
cd $GTA_PATH
while [ true ]; do
cat {$GTA_PATH}/server_log.txt >> {$GTA_PATH}/full_server_log.txt
rm {$GTA_PATH}/server_log.txt
touch {$GTA_PATH}/server_log.txt
./samp022svr
done

Он работает непосредственно с исполняемым кодом сервера

Второй скрипт, названный gtaserver.sh:

Code
#!/bin/bash
   
  server_start() {
  /home/sampsvr/startgtaserver.sh & # замените полным путем и именем запускаемого скрипта
  }  
   
  server_stop() {
  killall startgtaserver.sh # имя вашего запускаемого скрипта
  killall samp01b # нужно добавить путь к killall, если он не прописан в $PATH
  }  
   
  server_restart() {
  server_stop
  sleep 1
  server_start
  }
  case "$1" in
  'start')
  server_start
  ;;
  'stop')
  server_stop
  ;;
  'restart')
  server_restart
  ;;
  *)
  echo "usage $0 start|stop|restart"
  esac

этот запускается из /usr/local/bin

Толкьо измените пути в обоих скриптах на ваши, и после этого Вы можете запустить Ваш свервер, введя

Code

gtaserver start

остановить сервер, введя

Code

gtaserver stop

и, наконец, перезапустить его, введя

Code

gtaserver restart
Форум » SA-MP » SA-MP wiki » О сервере Linux
  • Страница 1 из 1
  • 1
Поиск: