Linux Server RU
From SA-MP Wiki
Contents |
Linux Server
Первоочередные требования
Вам нужен сервер Linux с доступом к shell'у, доступ по ftp, libstdc++5 или libstdc++6, и SSH-клиент, такой как Putty для соединения с сервером.
Поднятие сервера
Загрузка файлов
Первым делом зайдите на 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:
#!/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-скриптов (спасибо Noosferatu (пост по теме))
Скрипт номер 1 startgtaserver.sh:
#!/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:
#!/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
Только измените пути в обоих скриптах на ваши, и после этого Вы можете запустить Ваш сервер, введя
gtaserver start
остановить сервер, введя
gtaserver stop
и, наконец, перезапустить его, введя
gtaserver restart
Ошибка при запуске "No such file or directory"
Проблема возникает при запуске samp`а на платформе x64. Для того что бы запустить сервер необходимо установить в вашу систему нужные библиотеки.
Для Debian: "apt-get install ia32-libs" Для Ubuntu: "sudo apt-get install ia32-libs"