Мануал по поднятию CS 1.6 сервера под Linux, (c) сделано dcsk специально для c-s.net.ua |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
|
![]() |
Мануал по поднятию CS 1.6 сервера под Linux, (c) сделано dcsk специально для c-s.net.ua |
![]() |
![]()
Сообщение
|
![]() |
Первое - давайте учить матчасть.
1. Что мы будем использовать для работы с серваком? Первое: шелл клиент. 1.1.1 Если вы уж привыкли к виндам, то милости просим в WinSCP. Он предлагает фактически уникальную возможность заливки/выливки файлов через ssh. Это очень удобно т.к. например у меня на сервере нет фтп. 1.1.2 Нам все-таки нужен нормальный консольный клиент. Довольно удобно в связке с WinSCP работает PuTTY. Краткий список команд шелла который вам может понадобится: Код vi [filename] - ясно :) mkdir [dirname] - делаем директорию cd [dir] - переходим в дир. mv - (move) - передвигать файлы cp - (copy) - копировать rm (-rf) [dir] - команда удаления. Рекомендую если удаляем директорию, то использовать ключи -rf для рекурсивного удаления (r) и игнорирования всех ошибок и вопросов(f). chmod - изменение прав на запуск. Если коротко, то делайте 777 и не ошибетесь. Опять-таки используем ключ -R (именно большая) для рекурсивного удаления. chown - изменение владельца. Вроди все. ) Согласитесь, теперь перед нами стоит вопрос чем редактировать файлы? 1.2.1 Если вы выбрали WinSCP, то в принципе это не проблема - там есть встроеный редактор файлов. Но если все-таки вы выбрали шелл, то: 1.2.2 Vi - Выбор настоящих админов. Другое дело что его понять - не один день. На его тему есть даже шутка - "Vi имеет два режима работы - бибикать и все портить". В принципе не рекомендую. Итак, будем считать что первый пункт пройден - и мы таки зашли на сервер и готовы его мучать. To be continued.... ![]() |
![]() |
|
![]() |
![]()
Сообщение
|
![]() |
PS забыл картинки... Ловите...
Прикрепленные файлы:
![]() ![]() |
![]() |
|
![]() |
![]()
Сообщение
|
![]() |
2.1 давайте сделаем нового юзера для запуска серверов(потому что запускать под рутом ето изврат)
Код useradd games У меня он называется геймс, хотя можно назвать как хотите :) 2.2 Ставить сервак я буду в /usr/games/hlds_dm (т.к. как раз нужен ЦСДМ сервак :)) ) Код stp-b:~# mkdir /usr/games/hlds_dm stp-b:~# chown games:games /usr/games/hlds_dm stp-b:~# cd /usr/games/hlds_dm/ Под рутом ясное дело. 2.3 После чего нам его права уже не понадобятся Код su games Итак, скачиваем наш сервак с оффа. Код stp-b:/usr/games/hlds_dm# wget http://storefront.steampowered.com/download/hldsupdatetool.bin 2.4 Даем файлу права на исполнение и выполняем его Код chmod +x hldsupdatetool.bin Код ./hldsupdatetool.bin Так как нам наплевать на вальв и его соглашения, то вводим yes :) После чего лично у меня вышли такие 2 последние строчки: Код Enter 'yes' to accept this agreement, 'no' to decline: yes extracting steam.tar.Z...done Если у вас не такое - то лучше задайте вопрос что сделали не так. 2.5 У нас после етого появился файлик readme.txt: Код Half-Life Dedicated Server (Steam) Update Tool [4.07.05] HldsUpdateTool is an application that will update an existing Half-Life Dedicated Server installation to the latest version or will download the latest version (from scratch) if an existing version is not found. To save time/bandwidth downloading files, it's better to install HldsUpdateTool into the root folder of an existing Half-Life Dedicated Server installation. Installation ------------ 1) Creating an account It is no longer necessary to have a Steam account to use this tool. 2) Getting the latest version of the Dedicated Server To download the latest version of the dedicated server to your machine: a) Open a command prompt. b) Change to the directory where the HLDS Update Tool is installed. c) Run the HLDS Update Tool with the "update" command: >HldsUpdateTool.exe -command update -game <game> -dir <installdir> <game> "cstrike", "dmc", "dod", "ricochet", "tfc", "valve", "Counter-Strike Source", or "hl2mp" <installdir> is the path where you want the files installed e.g. . (for the current directory) or c:\hlserver e.g. >HldsUpdateTool.exe -command update -game cstrike -dir . or >HldsUpdateTool.exe -command update -game cstrike -dir c:\hlserver (NOTE: that will be ./steam instead of HldsUpdateTool.exe for Linux users) d) Steam remembers the options you use, so when you need to update next time you only need to run: >HldsUpdateTool.exe -command update <game> e) You can also install multiple copies of the server by specifying a different <installdir>. f) Half-Life mods (eg cstrike, dod) and Source mods (eg hl2mp) must be installed to separate directories 3) Updating your Dedicated Server If your dedicated server becomes out-of-date you will see the following message in your server console and in the server log: "Your server needs to be restarted in order to receive the latest update." To update, stop your dedicated server and run the update commands described in Section 2 (above). 4) Help To see this info and info about other options of the tool, run it with "-?" and it will print them on the screen. About Steam ----------- Steam is a broadband business platform for direct software delivery and content management. At its core, Steam is a distributed file system and shared set of technology components that can be implemented into any software application. Privacy ------- Valve respects the privacy of its users. The details of our privacy policy can be viewed at: http://www.valvesoftware.com/privacy.htm FAQ --- 1) Q: No one is connecting to my server/I get errors when I try to connect to my server. A: Run the HLDS Update Tool with the "update" command to make sure you have the most recent version. 2) Q: When I first run the HldsUpdateTool I see a message about "Could not create file: Permission denied". What's wrong? A: The HldsUpdateTool has the ability to auto-update itself, but to do this it must be able to overwrite itself. Make sure the Windows user you're logged-in as has permission to overwrite the "HldsUpdateTool" executable. 3) Q: Where can I get help? A: Join the Steampowered forums or one of the Valve Server Admin Mailing lists: http://www.steampowered.com/forums http://list.valvesoftware.com/mailman/listinfo Мой совет - сделать такую команду: Код rm hldsupdatetool.bin&&rm readme.txt Все равно ети 2 файла нам не понадобятся. 2.6 Ура, мы таки дошли до забирания будущего нашего сервера с вражеской територии. :) 2.6.1 Забираем файлы , которые надо стиму: Код ./steam Теперь можно ознакомится с тем что оно может. Код stp-b:/usr/games/hlds_dm# ./steam Checking bootstrapper version ... Use: steam -command <command> [parameters] [flags] Commands: update: Install or update HLDS parameters: -game <game> - Game name: use 'list' to see available games -dir <installdir> - HLDS Install dir (if dir not specified, will use value from last run of tool) flags: -verify_all - Verify all HLDS files are up to date -retry - Automatically retry every 30 seconds if the Steam Network is busy -remember_password - Remember password (if a username is supplied) For example: steam -command update -game cstrike -dir /hlds version: View installed versions list: View available games Optional parameters for all commands: -username <username> - Steam account username (only needed to access limited content) -password <password> - Steam account password (only needed to access limited content) 2.6.2 Забираем сам сервер: Код stp-b:/usr/games/hlds_dm# ./steam -command update -game cstrike -dir /usr/games/hlds_dm/ После чего можно попить чай - в зависимости от канала сервера. Код Downloading: /usr/games/hlds_dm/\valve\valvecomm.lst Downloading: /usr/games/hlds_dm/\valve\violence.cfg Downloading: /usr/games/hlds_dm/\valve\xeno.wad HLDS installation up to date stp-b:/usr/games/hlds_dm# У меня процесс закончился так. Теперь у нас есть работающий СТИМ цс 1.6 сервер. Код stp-b:/usr/games/hlds_dm# vi /usr/games/hlds_dm/cstrike/server.cfg И настраиваем под себя.Список настроек: Код server.cfg //Server name hostname "Название сервера на латине" - имя вашего сервера, которое будет видно в списке серверов //Rcon password rcon_password "ркон пасс" - пароль для управления сервером (д.б. известен только вам) //settings mp_allowspectators 1 - на сервере можно присутствовать спектатором mp_autocrosshair 0 - автоаим (примитивный AimBot) mp_autokick 0 - кик с сервера простаивающих игроков или Тимкиллеров mp_autoteambalance 1 - автобаланс команд (перевес в количестве игроков одной команды над другой не может превышать количества игроков указанных командой mp_limitteams) mp_buytime 0.5 - время закупки оружия в начале раунда в минутах mp_c4timer 35 - время в сек. до взрыва установленной бомбы mp_chattime 10 - Количество секунд, на которое сервер позволяет игрокам писать в общий чат после конца карты и до загрузки новой mp_decals 200 - Количество отображаемых одновременно дыр от выстрелов , пятен крови и т.д mp_fadetoblack 0 - включение после вашей смерти черного экрана до окончания раунда mp_falldamage 1 - управляет кол-вом снимаемых HP при падении (но она по-моему уже давно убрана из HLDS) mp_flashlight 1 - использование фонарика mp_forcecamera 0 - установка камеры наблюдения за своей комадой после смерти mp_forcerespawn 1 - принудительный быстрый респаун для убитого клиента (если убили не можешь двинутся с того места) mp_fraglimit 0 - количество фрагов, при достижении которого игра на карте будет завершена mp_freezetime 2 - время невозможности движения игрока в начале раунда в секундах mp_footsteps 1 - слышимость шагов (при беге) mp_friendlyfire 1 - повреждения при стрельбе по своим mp_hostagepenalty 0 - количество убитых заложников до применения бана в игре mp_limitteams 1 - максимальное количество превышения игроков одной команды над другой (от 1 и до бесконечности ) mp_maxrounds 0 - максимальное количество раундов, при достижении которого игра на карте будет считаться законченной mp_playerid 1 - This variable controls what players see when they put their crosshair over an enemy, a hostage, or a teammate mp_spawnprotectiontime 10 - кик игрока, сделавшего тимкилл в начале раунда в течении этого количества секунд mp_roundtime 3 - время раунда в минутах mp_startmoney 800 - стартовое количество денег в начале игры на карте mp_timelimit 30 - длительность игры на одной карте в минутах mp_tkpunish 0 - применение санкций при ТимКиле (пропуск следующего раунда) mp_winlimit 0 - количество выигрышей одной команды при достижении которого игра на карте считается законченной sv_airaccelerate 10 - задает значение сопротивления воздуха sv_allowdownload 1 - возможность скачивания с сервера недостающих карт и т.д. sv_allowupload 0 - возможность закачивания на сервер файлов игроков (спрей-логов, карт и т.д.) sv_alltalk 0 - разговор в микрофон доступен всем играющим на сервере (включая трупы) sv_cheats 0 - разрешение использования читов sv_consistency 1 - проверка клиента, чтобы на сервере могли играть только со стандартными моделями ,звуками и.т.д sv_contact ваша почта - контакный почтовый адрес администратора сервера sv_enableoldqueries 1 - старый метод запросов для совместимости с программами статистики (например Психостат) sv_footsteps 1 - слышимость шагов (при беге) sv_friction 4 - Трение на карте sv_gravity 800 - Гравитация карты sv_maxrate 20000 - максимальная пропускная способность сетевого канала сервера с учетом клиентской стороны (значение считается по формуле) sv_maxspeed 320 - скорость движения игрока по карте sv_maxunlag 0.5 - максимальная лаг компенсация в секундах sv_maxupdaterate 40 - Ограничивает частоту обновлений сервера. Чем выше значение,тем больше пакетов будет послано клиентам (зависит от sv_maxrate и также считается по формуле ) sv_minrate 0 - минимальная пропускная способность сетевого канала sv_minupdaterate 10 - нижний предел частоты обновления сервера sv_password "пароль" - пароль только для входа на сервер, например, на клановый сервер. Не должен совпадать с ркон паролем! sv_pausable 0 - возможность паузы на сервере sv_rcon_banpenalty 15 - количество в минутах блокирования доступа к серверу при неправильном определенном количестве попыток ввода ркон пароля sv_rcon_maxfailures 5 - максимальное количество неправильно введенного rcоn_password-а (затем BAN) sv_rcon_minfailures 5 - минимальное количество неправильно введенного rcоn_password-а (затем BAN) sv_rcon_minfailuretime 30 - время, после которого счетчик (sv_rcon_maxfailures) сбрасывается sv_specaccelerate 5 - настройка режима спектатора в режиме "привидения" sv_specnoclip 1 - настройка режима спектатора в режиме "привидения" sv_specspeed 3 - настройка режима спектатора в режиме "привидения" sv_stats 1 - сбор статистики использования процессора sv_stepsize 18 - размер шага игрока (если поставить 100-150 то можно на de_aztec, например, из воды прямо к бомбе подняться или на подвесной мост ) sv_stopspeed 75 - скорость остановки игрока sv_timeout 30 - время ожидания ответа от клиента в секундах по истечении которого клиент будет отключен sv_unlag 1 - возможность компенсации лагов sv_voiceenable 1 - разрешить использовать микрофон или нет decalfrequency 10 - время в секундах, через которое игроки могут наносить на поверхности своё следующее спрей-лого host_framerate 0 - задает sys_tickrate сервера (аналог -tickrate в ярлыке запуска) (с) перто Ну и не забываем пропатчить наш сервер под ностим Цитата Для тех, у кого сервера на Linux, сделал нормальный патч (на Питоне) на основе своего старого nowon патча, который плюс к тому же исправляет некоторые дополнительные вещи: Исправляет работу в режиме LAN без использования Steam (так называемый no-WON patch) (нужен например, если у пользователей попросту нет Интернета), а также исправляет работу последних версий Cheating Death. Также я выключил дурацкое сообщение "NET_SendPacket ERROR:" которое у меня частенько выводится из-за того, что центральный сервер Valve недоступен из нашей локальной сети. Работает для библиотек engine_XXX.so, включая engine_amd64.so для версий начиная как минимум с версии 16 (Февраль 2005) вплоть до Linux Server Engine version 29 (Январь 2006), и с большой вероятностью будет работать для следующих версий (пока Valve опять что-нибудь не придумает чтобы усложнить жизнь честным пользователям). Большое спасибо Hand за то, что сделал самую сложную часть работы (а именно, нашел конкретные места с проверками) :-) Также в архиве есть скрипт steam_update, который обновляет в автоматическом режиме сервер через STEAM, тут есть такая тонкость, что перед обновлением неплохо бы восстановить первоначальное содержимое файлов engine_XXX.so, иначе он их скачивает по новой. Ну а после обновления, естественно, он их обратно исправляет (уже новые версии). Инструкция по эксплуатации внутри скриптов :-) (в кодировке 1251, уж такую я кодировку у себя в Linux использую, и другим рекомендую). Сам патч в аттаче. О запуске и донастройке расскажу в следующей части ;)
Прикрепленные файлы:
|
![]() |
|
![]() |
![]()
Сообщение
|
![]() |
Итак, будем считать что случилось чудо и мы таки поставили ностим сервер. :)
3.1 Запуск сервера. Перед тем как доустанавливать всякие прибамбасы рекомедую сделать тестовый запуск. Код ./hlds_run -console +sv_lan 1 -insecure -game cstrike -nomaster +maxplayers 16 +port 27015 +map de_dust2 +ip 127.0.0.1 -pingbooster 1 +sv_lan 1 -insecure -nomaster - ети ключи запуска для обхода защиты. sv_lan обязателен на ломаных серверах. -game cstrike - запускаем сервер именно контры. +maxplayers 16 - макс. к-во игроков +port 27015 - порт для игры +map de_dust2 - карта -pingbooster 1 - linux сервер содержит встроеный бустер - от 0 до 3 (0 - наим. нагрузка) Еще рекомендую заюзать такой шелл скрипт - конечно не без недостатков(убивает сразу все сервера ![]() Код #!/bin/bash RETVAL=0 path="/usr/games/hlds_l" start() { #start deamons if [ -d $path ]; then echo -n $"Starting CS server: " cd $path ./hlds_run -console +sv_lan 1 -debug -insecure -game cstrike -nomaster +maxplayers 16 +port 27015 +map de_dust2 +ip cs1.cstrike.com.ua -pingbooster 1 -pidfile cs.pid& touch ./cs.run echo -n "[ ok ] " else echo -n "[ FAILD ] " fi } stop() { if [ -f $path/cs.run ]; then killall hlds_run killall hlds_i486 killall hlds_amd cd $path rm -R ./cs.run echo "Stpoing CS server [ ok ] " else echo -n "Stoping CS [ FAILD ] " fi } status() { cd $path; pid=`$path/cs.pid`; if [ -f $path/cs.pid ]; then echo -n "CS 1.6 Main server is Up and "; echo -n "Runing "; fi } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|restart|status}" exit 1 esac exit $RETVAL Путь Код path="/usr/games/hlds_l" и Код ./hlds_run -console +sv_lan 1 -debug -insecure -game cstrike -nomaster +maxplayers 16 +port 27015 +map de_dust2 +ip cs1.cstrike.com.ua -pingbooster 1 -pidfile cs.pid& touch ./cs.run ключи запуска перед заливкой на сервак рекомендую поправить. :) заливаем в /etc/init.d/ (у меня - /etc/init.d/cs ) - и делаем Код chmod 777 /etc/init.d/cs (под root ом) теперь можно зайти под юзером, под которым у нас сервак - и запустить-таки. :) Код su games /etc/init.d/cs start Теперь можно за свою работу чесно потестить сервер :) полчаса. Когда наигрались, можно ставить metamod и amxmodx: Качаем первое и второе соответственно с www.metamod.org и www.amxmodx.org . делаем папки для метамода и амхx: Код mkdir cstrike/addons mkdir cstrike/addons/amxmodx mkdir cstrike/addons/metamod Заменяем в cstrike/liblist.gam Код gamedll_linux "dlls/cs_i386.so" на Код gamedll_linux "addons/metamod/dlls/metamod_i386.so" .Metamod установлен. Теперь амхx: создаем файл cstrike/addons/metamod/plugins.ini и в него помещаем: Код linux addons/amxmodx/dlls/amxmodx_mm_i386.so Итак, у нас установлен amxmodx и metamod. :) После чейнджмапа они заработают. О конфигурировании амхx я расскажу в следующей статье. |
![]() |
|
![]() |
![]()
Сообщение
|
![]() ![]() |
Хорошая статья, я долго парился с сервисом, а тут прикольно реализовано, но у меня на SLES10 была пара глюков, которые я благополучно устранил.
Вот что я прописал: Код #!/bin/bash
# Copyright (c) 2007 Omega Sector. All rights reserved. # # Author: Stanislav Batnikov <Sobig@omega-sector.kz> # # /etc/init.d/omega-online-nosteam-pub-1 # # ### BEGIN INIT INFO # Provides: omega-online-nosteam-pub-1 # Description: Counter-Strike 1.6 NoSteam linux dedicated server starting service ### END INIT INFO RETVAL=0 path="/srv/games/nosteam/omega-online-pub-1" start() { if [ -d $path ]; then cd $path ./hlds_run +sv_lan 1 -debug -insecure -game cstrike -nomaster +maxplayers 24 +port 27001 +ip 10.10.27.10 +exec pub.cfg +map de_dust2 -pingbooster 1 -pidfile pub.pid& touch ./pub.run fi } stop() { if [ -f $path/pub.run ]; then killall hlds_run killall hlds_i686 cd $path rm -R pub.pid rm -R ./pub.run fi } status() { cd $path; [ -f $path/pub.pid ] } . /etc/rc.status rc_reset case "$1" in start) start rc_status -v ;; stop) stop rc_status -v ;; status) status rc_status -v ;; restart) stop start rc_status -v ;; *) echo $"Usage: $0 {start|stop|restart|status}" exit 1 esac rc_exit exit $RETVAL |
![]() |
|
![]() |
![]()
Сообщение
|
![]() |
Если только стартовать, то можно вообще не мучатся
Код path="/srv/games/nosteam/omega-online-pub-1" user="games" su $user cd $path ./hlds_run +sv_lan 1 -debug -insecure -game cstrike -nomaster +maxplayers 24 +port 27001 +ip 10.10.27.10 +exec pub.cfg +map de_dust2 -pingbooster 1 -pidfile pub.pid& =) ИМО. |
![]() |
|
![]() |
![]()
Сообщение
|
![]() ![]() |
Если только стартовать, то можно вообще не мучатся Код path="/srv/games/nosteam/omega-online-pub-1" user="games" su $user cd $path ./hlds_run +sv_lan 1 -debug -insecure -game cstrike -nomaster +maxplayers 24 +port 27001 +ip 10.10.27.10 +exec pub.cfg +map de_dust2 -pingbooster 1 -pidfile pub.pid& =) ИМО. Ага, а если мне надо на том же железе поднять 8 hltv? :) Приходится 2 сервера выключать. Кстати, тут не сказано, как запускать разные процессы из одной папки с игрой и при этом не убивать все сразу. Могу выложить, если кому надо. |
![]() |
|
![]() |
![]()
Сообщение
|
![]() |
Скинь, интересно...
А то реально неудобно при 3 серверах на одной машине. |
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
|
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
Если чесно то не х*** не понел что к чему млять.
![]() |
![]() |
|
![]() |
![]()
Сообщение
|
![]() ![]() |
Если чесно то не х*** не понел что к чему млять. ![]() Если не сталкивался с Линуксом, то лучше не ставить ничего на нем. |
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
|
|
|
![]() |
![]()
Сообщение
|
![]() |
А у мну такая проблема
Enter 'yes' to accept this agreement, 'no' to decline: yes sh: uncompress: command not found [gamecs@j-fan hlds_dm]$ Че за фигня?... Linux Fedora Core 6 |
|
|
![]() |
![]()
Сообщение
|
![]() |
Код yum install uncompress попробуй, у тебя просто архиватора нет.
|
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
Сегодня-завтра напишу, а то дел много. Я сейчас вообще не парюсь, сделал {start|stop|status|restart} на каждый сервер и наслаждаюсь. а как сделать так чтобы сервера включались в с crontab ? иногда бывает что свет мигнет и сервак перезагружается... а кажый раз включать его не удобно |
|
|
![]() |
![]()
Сообщение
|
![]() |
/etc/rc.d/
Не в кронтаб, а лучше в автозапуск. =) |
|
|
![]() |
![]()
Сообщение
|
![]() |
Где можно скачать CS 1.6 под Debian 3.1(i386) в UA-IX.
ЗЫ: Комп с дебианом не подключен к инету... Что делать в таком случае? |
|
|
![]() |
![]()
Сообщение
|
![]() |
|
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
Зря вы неучите, если неразу несидел в линуксе нзначит что он несможет, руки всё могут, неделайте нез кого лохов.. Типа ДАЖЕ НЕПЫТАЙСЯ
Учиться всегда нужно, и почти неважно что, чем большее тем умнее и опытнее... Кстате вопрос, есть сервер на Линуксе, и патч 26, сервер лоижться этими экплоитами, как закрыть дыру? Или как пропатчить серв? Спасибо! |
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
что делать если такое вышло? Все раз 15 проверял, и делал заново! И не чего
![]() /usr/CountraStrike/hlds_run: line 342: 19693 Ошибка сегментирования $HL_CMD Add "-debug" to the /usr/CountraStrike/hlds_run command line to generate a debug.log to help with solving this problem Сбт Окт 13 13:13:20 EEST 2007: Server restart in 10 seconds |
|
|
![]() ![]() |