[Counter-Strike : Source] на OC Linux

Здесь хранится вся документация по созданию выделенных серверов
Сообщение
Автор
Аватара пользователя
kolobok66rus
Капитан
Капитан
Сообщения: 266
Зарегистрирован: 29.10.2010
Поблагодарили: 4 раза

#1 Сообщение 10.05.2011, 02:58

Этот мануал посвящён новичкам , которые хотели бы иметь свой выделенный сервер на ОС Linux

Для начала создания вы должны определиться сколько у вас будет серверов и в какой папке они будут находиться. Я буду предоставлять вам материал исходя из того что сервер будет находится в папке server. Второй более важный момент , это среда - будь она просто текстовая , будь она KDE или GNOME . Тут мы вам скажем одно, если вы опытный пользователь Пингвинов , то вы можете это сделать на чистой ОС , если вы новичок то настоятельно вам рекомендуем использовать графическую среду , какую именно вы определяйтесь сами , но данный материал будет написан для консольной и графической версий. И так что мы имеем ? А мы имеем ОС Debian 6.0.1 x64 , так же этот материал подойдёт для систем Ubuntu и Kubuntu. Для новичков использующих графическую среду , все ниже описанные команды нужно будет вводить в терминале с правами пользователя root.

ПРИМЕЧАНИЕ : Все вводимые команды нужно вводить от пользователя root.
Как переключить консоль на root
Для новичков , которые до сих пор не знают как переключиться на root , вам необходимо ввести команду :
После этого вас спросят ввести пароль root , а для пользователей Ubuntu , перед этим необходимо создать пароль root (если вы этого не сделали ещё раньше ) , для чего необходимо набрать команду :

Код: Выделить всё

sudo passwd 
После чего вас попросят ввести ваш текущий пароль , и ввести новый пароль для root пользователя , ну и повторить для точности.

Для начала создадим папку для нашего будущего сервера. В нашем случае это будет папка server , для этого пишем команды :

Код: Выделить всё

mkdir server
cd server
Команда mkdir создаёт папку server , а cd перемещает вас в неё.
Значит мы создали папку для нашего сервера , теперь нам предстоит создать так называемое ядро сервера (билд) , для чего нам поможет утилита hldsupdatetool

hldsupdatetool

Описание : Утилита предназначена для создания и обновления выделенных серверов компании VALVE
Автор : Компания VALVE
Официальный сайт : http://www.steampowered.com

Теперь нам надо установить эту утилиту , для чего набираем команду :

Код: Выделить всё

wget http://www.steampowered.com/download/hldsupdatetool.bin
Эта команда скачивает с официального сайта саму утилиту :

Изображение

Теперь в нашей папке server появляется hldsupdatetool.bin , если хотите то можете зайти и проверить , далее :

Код: Выделить всё

chmod +x hldsupdatetool.bin
Этой командой мы даём знать что файл hldsupdatetool.bin исполняемый для всех групп и пользователей.

Код: Выделить всё

./hldsupdatetool.bin
Эта команда начинает установку самой утилиты . При запуске установки вам предложат принять лицензионное соглашение :

Изображение

Для принятия соглашения вам необходимо набрать yes , после чего утилита установиться и выдаст об этом сообщение : extracting steam.tar.Z...done

ПРИМЕЧАНИЕ : Для пользователей 64-битных систем , а в частности Ubuntu , у вас возможно появится ошибка : bash: ./hldsupdatetool.bin: No such file or directory . Во избежании этого вам необходимо установить кое какие библиотеки , для чего вам нужно набрать команду :

Код: Выделить всё

apt-get install ia32-libs
Ну что утилиту установили , теперь можно и приступать к созданию основы сервера (билд , ядро). Утилита работает на командной основе , то есть её надо запускать с определёнными параметрами , о которых мы вам сейчас и расскажем. Напоминаем что эта утилита может устанавливать и обновлять множество серверов компании VALVE , поэтому мы будем описывать только сервер Counter-Strike:SOURCE. Те команды и параметры , которые нам не понадобятся мы не будем описывать в этом материале. И так приступим , для запуска утилиты с параметрами мы создадим некий файл update.sh , в который мы и в пишем все эти параметры. Этот файл в дальнейшем так же нам будет служить в качестве обновления сервера. Для этого набираем команду (напоминаем что вы должны находится в папке server ) :

Код: Выделить всё

nano update.sh
Этим самым мы создадим файл update.sh и перенесёмся в редактор этого файла , после чего нам необходимо вставить туда строку :

Код: Выделить всё

./steam -command update -game "Counter-Strike Source" -dir ../server -verify_all
./steam - говорит нам запустить уже установленную утилиту hldsupdatetool
-command update - запустить обновление или установку (изменять ничего не требуется)
-game "Counter-Strike Source" - тип сервера , в нашем случае Counter-Strike Source (изменять ничего не требуется)
-dir ../server - путь к папке сервера (путь к этой папке изменяйте на свой )
-verify_all - проверяет на наличие последних обновлённых файлов сервера , основываясь на информации от разработчика (изменять ничего не требуется)

Если вы делаете шаг за шагом как у нас , то у вас должно выглядеть вот так :

Изображение

Теперь сохраняем нажав Ctrl+O на вопрос о сохранении жмём ввод и выходим из редактора нажав Ctrl+X. Для того чтобы запустить наш файл ему необходимо добавить права , для чего вводим команду :

Код: Выделить всё

chmod +x update.sh
После чего запускаем наш файл простой командой :

Код: Выделить всё

./update.sh
Если вы всё сделали правильно , то у вас должна запуститься утилита и если вы запустили её первый раз , то она для начала обновит сама себя :

Изображение

После чего вам необходимо запустить файл второй раз , при этом утилита начнёт искать недостающие файлы в вашей папке сервера и качать их вам напрямую с официального сайта загрузки :

Изображение

Ну а в нашем случае , она будет качать абсолютно все файлы сервера , так как мы создаём его с нуля. Помните мы говорили вам , что эта утилита будет служить так же и обновлением ? Совершенно верно , если произойдут какие-то обновления со стороны разработчиков , ты вы смело запускайте файл update.sh , утилита найдёт не обновлённые файлы , скачает и заменит их в вашем сервере. Ну а сейчас вам остаётся только ждать , ждать конца загрузки файлов - это зависит от вашей скорости , ширины канала и вашего месторасположения. Как говорит Grizli и пусть трещит ваш провайдер :)
По окончанию загрузки и проверки всех файлов , утилита автоматически остановится. Но мы вам настоятельно рекомендуем ещё раз запустить update.sh , для того чтобы утилита ещё раз проверила все файлы , и если что то у вас не загрузилось или произошёл незаметный обрыв связи с интернетом , то утилита исправит это недоразумение. Как говориться проверка лишней не бывает. После всего у вас папке сервера появятся новые файлы и папки.

Ну что же , мы поздравляем вас ! Вы установили основу сервера (билд,ядро).

Ну что же вам наверно не терпится запустить свой сервер и зайти на него поиграть ? Ну что же , давайте запустим созданный нами сервер. Для этого нам необходимо снабдить основу (билд,ядро) некоторой информацией и настройками.Для начала нам необходимо создать файл для запуска , назовём его start.sh , который необходимо создавать рядом с файлом srcds_run , то есть в папке orangebox . Ну что , переходим в папку orangebox и пишем команду :

Код: Выделить всё

nano start.sh
ПРИМЕЧАНИЕ : Для тех кто не помнит , переход из папки в паку осуществляется командой cd

И так , вставляем туда текст следующего содержания :

Код: Выделить всё

#!/bin/sh
echo "Starting Classic CSS"
sleep 1
screen -A -m -d -S css-classic ./srcds_run -console -game cstrike -port 27019 +map de_dust2 +maxplayers 24
echo "Starting Classic CSS" - выводит сообщение при запуске сервера (изменяйте на ваш вкус)
sleep 1 - делает паузу на 1 секунду (изменять не требуется)
screen -A -m -d -S - Это создаст сессию работы со screen, которая будет называться "css-classic" с которой все это будет запускаться.
css-classic - имя процесса - сеанса (изменяйте на ваш вкус)
-console - запустить консоль работы сервера (изменять не требуется)
-game cstrike - тип игры , а точнее основная папка сервера (изменять не требуется)
-port 27019 - UDP порт работы вашего сервера (если знаете что делаете то изменяйте , если нет то оставьте как есть)
+maxplayers 24 - максимальное число игроков на вашем сервере (изменяйте на свой вкус)
+map de_dust2 - начальная карта при запуске сервера (можете поставить другую , но она должна обязательно быть в папке maps и обязательно должна быть прописана в файле maplist.txt)

Изображение

ПРИМЕЧАНИЕ : screen – это полноэкранный оконный менеджер, который позволяет разделить физический терминал между несколькими независимыми процессами. Скорее всего, screen уже есть в вашей системе. Проверить это можно командой :

Код: Выделить всё

which screen
Если which не дал результатов, то установите screen при помощи команды :

Код: Выделить всё

apt-get install screen
И так , поехали дальше - сохраняем файл. Этому файлу необходимо присвоить права , набрав команду :

Код: Выделить всё

chmod +x start.sh 
Вот вам и готов файл для запуска вашего сервера , но запускать сервер не торопимся , так как сервер должен запуститься с настройками из файла server.cfg Хотим сразу вас предупредить , что этот файл не входит в дистрибутив разработчиков и поэтому нам нужно создать его самому. Но мы упростим вам задачу и выложим уже готовый для вас файл :

server.cfg

Описание : файл служит для настроек сервера
Автор : KOLOBOK
Загрузка : Для загрузки вам необходимо перейти в \server\orangebox\cstrike\cfg и выполнить команду :

Код: Выделить всё

wget http://www.uralwagon.su/FILES_UGP/EDITORS/SERVER_CFG/server.cfg
Изображение

Затем откройте файл с помощью команды :

Код: Выделить всё

nano server.cfg
И измените в нём следующие строки :

hostname "Classic Server CSS" - это имя вашего сервера , впишите своё имя (использовать только английский текст)
sv_contact "www.csmania.ru" - это данные о вас , а точнее о хозяине сервера (можно использовать почтовый ящик , например [email protected])
rcon_password "security" - пароль для удалённого управления вашим сервером , обязательно поменяйте на свой (использовать только английский текст или цифры)

Изображение

Сохраните файл. Далее нам необходимо создать ещё 2 файла , это banned_ip.cfg и banned_user.cfg , соответственно :

Код: Выделить всё

nano banned_ip.cfg
Сохраняем пустой как есть , выходим из редактора и :

Код: Выделить всё

nano banned_user.cfg
Так же сохраняем его пустой и выходим из редактора .

Эти файлы буду служить базой забаненных игроков , причём banned_ip.cfg - забаненных по IP адресу , а banned_user.cfg - по STEAM_ID. Файлы необходимо создать в той же папке , где находится server.cfg , в нашем случае тут : ..\server\orangebox\cstrike\cfg

Ну что скачали server.cfg ? Настроили его под себя ? Создали файлы banned_ip.cfg и banned_user.cfg ?

Вроде бы всё готово для запуска , но не торопитесь.. Давайте забежим немного вперёд и обсудим ещё 1 очень важную деталь..По умолчанию на сервер устанавливается 20 карт , и только 18 из них игровых , но в игре вы не когда не встретите эти 2 не игровые карты . Спросите почему ? Ответ прост , дело в том что сервер читает карты из файла maplist.txt , который находится тут : ..\server\orangebox\cstrike , а сами карты находятся тут : ..\server\orangebox\cstrike\maps (сама карта имеет расширение bsp) . Дак вот , самое главное правило по картам для сервера : "Карты которые находятся в списке файла maplist.txt , должны обязательно находится в папке maps ( ..\server\orangebox\cstrike\maps) и иметь точно такое же название с учётом регистра (голое название без расширения)" . И ещё один момент , цикл карт по умолчанию на сервере формируется на основе файла mapcycle.txt который находится тут : ..\server\orangebox\cstrike и тут же формируется второе правило : "Карты , которые находятся в списке файла mapcycle.txt должны обязательно быть в списке карт файла maplist.txt и иметь такие же имена с учётом регистра". Ну это мы вам на будущее , если вы вдруг захотите добавить не стандартные карты на сервер.

ПРИМЕЧАНИЕ : Для тех новичков , которые находятся в консольной версии и не знают как посмотреть что находится в той или иной папке , то для этого имеется команда :
Например в нашей папке maps при вводе команды ls , должен отобразиться список карт примерно так :

Изображение

Ну что проверили папку maps ? Проверили файлы maplist.txt и mapcycle.txt ? Правила не нарушены ? :) А кто их успел нарушить ? Мы ведь ещё не добавляли ни каких карт...:) Пришло время запускать сервер ... Запускаем файл start.sh , для этого переходим в /server/orangebox/ и выполняем команду :

Код: Выделить всё

./start.sh
Если вы всё сделали правильно , то ваш сервер должен запуститься в фоновом режиме , а вам в консоле написать : Starting Classic CSS . Вы заметите, что вас сразу же вернет в строку набора вашей системной оболочки. Это происходит из-за того, что сервер спокойно себе работает в сессии screen. Теперь вы можете спокойно отсоединиться/завершить вашу сессию удаленного контроля и сервер будет продолжать работать. Если вы хотите подключиться к сессии , то есть посмотреть консоль сервера , вам необходимо набрать команду :

Код: Выделить всё

screen -d -r css-classic
Изображение

Где css-classic - это вы уже сами догадались имя процесса- сессии , которое мы указывали в строке запуска. Для того чтоб вернуться в консоль своей системы из серверной консоли вам необходимо нажать Ctrl+A+D . Для того чтобы остановить ваш сервер , вам всего лишь нужно убить процесс , который использует нашу сессию , для этого необходимо набрать команду :
Эта команда выводит список всех запущенных процессов в ваше системе , в том числе и сервер :

Изображение

Ну что же ищем номер нашего процесса , а наш процесс находится под номером 2699 , ну что же убиваем его , набрав команду :

Код: Выделить всё

kill 2699
Всё , сервер остановлен . Вы можете это проверить набрав заново ps ax .

Я очень надеюсь что этот мануал может кому-нибудь помочь.

С уважением Алексей !
Последний раз редактировалось kolobok66rus 20.09.2011, 21:28, всего редактировалось 10 раз.

Аватара пользователя
xiloid
Капитан
Капитан
Сообщения: 341
Зарегистрирован: 30.10.2008
Поблагодарили: 3 раза

#2 Сообщение 10.05.2011, 09:34

Пару ремарок.

Код: Выделить всё

chmod +x hldsupdatetool.bin
Этой командой мы даём полные права на управление нашей утилитой (в системе Windows 7 это означает запустить с правами администратора).
Не совсем так. Метод +Х указывает chmod-у, что файл необходимо сделать исполняемым (от слова eXecute), для пользователя, группы и всех остальных. Так же нужно поступать с файлами "update.sh" и "start.sh" (если применяется создание файлов вручную, без всяких Гномов, gedit-ов и прочей ереси).
-pingboost 1 - бустер (если знаете что делаете то изменяйте , если нет то оставьте как есть)
Это анахронизм прошлых времен, для CS:S данного ключа не существует.

Аватара пользователя
kolobok66rus
Капитан
Капитан
Сообщения: 266
Зарегистрирован: 29.10.2010
Поблагодарили: 4 раза

#3 Сообщение 10.05.2011, 09:56

xiloid

Спасибо за совет , счас подправлю...
CPU -AMD Phenom II X6 1100T Black Edition (HDE00ZF) 3.3 ГГц
MEM -SAMSUNG DDR-III DIMM 4Gb <PC3-10600> x4 - 16Гб
OC - Linux Debian 6.0.1 amd_64

Мой сервер CS:GO [NO-STEAM] : 46.48.26.209:27022

AngeLex
Лейтенант
Лейтенант
Сообщения: 111
Зарегистрирован: 03.10.2009

#4 Сообщение 10.05.2011, 09:57

Мануал это конечно круто, но по-моему где-то тут я видел очень подробную инстру под линукс, написанную кем-то давно

Про пингбуст это да... прошлый век
В мире нет ничего ни хорошего, ни плохого; мы сами придумали всё это... В.Шекспир
мой проект http://games.2kom.ru

Аватара пользователя
kolobok66rus
Капитан
Капитан
Сообщения: 266
Зарегистрирован: 29.10.2010
Поблагодарили: 4 раза

#5 Сообщение 10.05.2011, 10:01

AngeLex

Ну я старался для новичков написать , которые используют Линукс в среде Гнома ...
Не бейте меня сильно если что не так....

С уважением Алексей !
CPU -AMD Phenom II X6 1100T Black Edition (HDE00ZF) 3.3 ГГц
MEM -SAMSUNG DDR-III DIMM 4Gb <PC3-10600> x4 - 16Гб
OC - Linux Debian 6.0.1 amd_64

Мой сервер CS:GO [NO-STEAM] : 46.48.26.209:27022

Аватара пользователя
cuttep
Капитан
Капитан
Сообщения: 446
Зарегистрирован: 26.06.2010
Откуда: http://www.evoplay.ru
Поблагодарили: 1 раз
Контактная информация:

#6 Сообщение 12.05.2011, 09:42

давно в линухе не видел иксов) .. думаю он будет полезен новичкам в ds

Аватара пользователя
jamaicada
Лейтенант
Лейтенант
Сообщения: 103
Зарегистрирован: 31.05.2009

#7 Сообщение 12.05.2011, 11:48

1. Перед описанием команд в bash скрипте, нужно указать интерпретатор с каким скрипт будет работать.
2. Если вы делаете cd в папку сервера, то уже незачем указывать путь до сервера. просто делаете

Код: Выделить всё

./steam -command update -game "Counter-Strike Source" -dir . -verify_all
3. Нет смысла при установке делать verify_all, да и по большому счету при апдейте тоже. Это в разы замедляет апдейт сервера.
Его стоит запускать если появились какие то проблемы.
4. Дефолтный порт для srcds не 27019, а 27015. Мне кажется правильнее от него начинать.

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#8 Сообщение 12.05.2011, 13:11

Довольно хороший мануал. Есть замечания по оформлению, но это со временем пофиксится, надеюсь.

Ради аллаха, не подсаживайте новичков на графику. Хороший сервер так не сделать.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
xiloid
Капитан
Капитан
Сообщения: 341
Зарегистрирован: 30.10.2008
Поблагодарили: 3 раза

#9 Сообщение 12.05.2011, 13:27

jamaicada писал(а):1. Перед описанием команд в bash скрипте, нужно указать интерпретатор с каким скрипт будет работать.
2. Если вы делаете cd в папку сервера, то уже незачем указывать путь до сервера. просто делаете

Код: Выделить всё

./steam -command update -game "Counter-Strike Source" -dir . -verify_all
3. Нет смысла при установке делать verify_all, да и по большому счету при апдейте тоже. Это в разы замедляет апдейт сервера.
Его стоит запускать если появились какие то проблемы.
4. Дефолтный порт для srcds не 27019, а 27015. Мне кажется правильнее от него начинать.
1. А вот и не нужно, будет использоваться интерпретатор по умолчанию и все будет прекрасно работать.
3. verify_all нужно делать всегда при обновлении, перепроверяются все контрольные суммы.
4. Совершенно всеравно какой порт сервера, лишь бы был не занят системой.

Добавлено спустя 12 минут 33 секунды:
NiGHt-LEshiY писал(а): Ради аллаха, не подсаживайте новичков на графику. Хороший сервер так не сделать.
+1, голая консоль + mc, больше ничего и не нужно.

AngeLex
Лейтенант
Лейтенант
Сообщения: 111
Зарегистрирован: 03.10.2009

#10 Сообщение 12.05.2011, 15:31

Могу скринов mc сделать, если надо :) чтоб было так сказать привычнее)))
В мире нет ничего ни хорошего, ни плохого; мы сами придумали всё это... В.Шекспир
мой проект http://games.2kom.ru

Аватара пользователя
kolobok66rus
Капитан
Капитан
Сообщения: 266
Зарегистрирован: 29.10.2010
Поблагодарили: 4 раза

#11 Сообщение 13.05.2011, 05:12

Доброе утро всем , значит надо немного мануал переделать , у меня у самого Гном стоит..только вот ребята мне не понятно немного, jamaicada пишет одно опровержение , xiloid другое...

NiGHt-LEshiY , спасибо ...но я наглядно показал как можно сделать это на графике , конечно голая консоль это само собой , но если новичок ещё не готов к консоле ?? Ну скажите мне что в этом мануале нужно переделать , чего добавить , чего удалить ...Буду стараться чтоб мануал был действительно полезным и правдоподобным...

С уважением Алексей !

Добавлено спустя 2 минуты 7 секунд:
Порт 27019 я указал , потому что когда я писал мануал , я делал всё то же самое что и писал , а 27015 у меня занят другим сервером....
CPU -AMD Phenom II X6 1100T Black Edition (HDE00ZF) 3.3 ГГц
MEM -SAMSUNG DDR-III DIMM 4Gb <PC3-10600> x4 - 16Гб
OC - Linux Debian 6.0.1 amd_64

Мой сервер CS:GO [NO-STEAM] : 46.48.26.209:27022

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#12 Сообщение 13.05.2011, 07:31

kolobok66rus
Новичок всегда готов к выполнению каких-либо действий, тем более хорошо описанных. А консоль или нет - в конечном счёте ему это сильно не усложнит задачу.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
xiloid
Капитан
Капитан
Сообщения: 341
Зарегистрирован: 30.10.2008
Поблагодарили: 3 раза

#13 Сообщение 13.05.2011, 08:56

kolobok66rus писал(а):Доброе утро всем , значит надо немного мануал переделать , у меня у самого Гном стоит..только вот ребята мне не понятно немного, jamaicada пишет одно опровержение , xiloid другое...
Это всего лишь придирки, не более того :D
kolobok66rus, ты ведь сам ведь знаешь, что указание интерпретатора в начале файла не обязательное условие, НО, jamaicada прав хотя бы в том, что если указать в файле интерпретатор, то появляется такая прелестная вещь как подсведка синтаксиса, что очень удобно при работе в MC, так как в Гномах всяких, текстовые редакторы сами подсвечивают синтаксис, как у тебя на скринах.
"-verify_all" - действительно не нужно убирать, все правильно у тебя описано, на скорость обновления это конечно влияет, в сторону увеличения естественно, но перепроверить файлы никогда не будет лишним, тем более что обновления относительно редкое явление, так что простой сервера на несколько минут дольше обычного особой роли не сыграет. :)
Порт - дело сугубо индивидуальное. Многие нехорошие программы для поломки серверов настроены на 27015 (ДОСеры всякие, эксплоиты), мнение не мое, но думаю оно достаточно грамотно обосновано.

Аватара пользователя
kolobok66rus
Капитан
Капитан
Сообщения: 266
Зарегистрирован: 29.10.2010
Поблагодарили: 4 раза

#14 Сообщение 13.05.2011, 20:41

Я понял вас, может сделать в мануале 2 под раздела , для гнома и для консоли ?
CPU -AMD Phenom II X6 1100T Black Edition (HDE00ZF) 3.3 ГГц
MEM -SAMSUNG DDR-III DIMM 4Gb <PC3-10600> x4 - 16Гб
OC - Linux Debian 6.0.1 amd_64

Мой сервер CS:GO [NO-STEAM] : 46.48.26.209:27022

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#15 Сообщение 13.05.2011, 20:54

Убери раздел про гном. Основа - консоль, т.к. действия можно будет выполнить на 99,5% юниксов.
Если у кого-то гном - несложно адаптировать описание под гном, там же почти нет отличий в инструкции.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Ответить