[os]Установка Линукс И Запуск Сервера На Нем
Установка линукс (Ubuntu server 7.10 i386) и запуск сервера L2Emu IL на нем…
Описываю как что делал для себя...
Технические условия...
Комп:
Сеть:
внутренняя сеть - 192.168.0.0/255.255.255.0…
локалка – 10.211.22.200, 10.0.0.0/255.255.248.0
интернет - 78.107.239.220, 0.0.0.0/255.255.255.255
IP сервера - 192.168.0.5
На роутере добавлены Виртуальные серверы с IP 192.168.0.5 и TCP портами 7777, 2106, 80
Установка Ubuntu server 7.10… берем здесь http://mirror.yandex.ru/ubuntu-releases/gutsy/
1. Загружаемся с диска и жмем "Install to the Hard Drive"…
2. Затем идут региональные настройки, я везде выбрал "русский", "Россия" и т.п. От автоопределения клавы отказываемся… тип и раскладку клавиатуры я поставил "Русский"… переключение раскладок - Ctrl+Shift…
3. Во время настройки сети давим "Отмена" и выбираем "Настроить сеть вручную", IP – 192.168.0.5, Маска – 255.255.255.0, Шлюз – 192.168.0.1, DNS – 192.168.0.1…
4. Вводим имя компа – "server"…
5. Разметка диска… выбираем "Вручную"… и создаем 2 раздела: Swap и Файловую систему… Swap – 2Гб, первичный, начало диска, использовать как "Раздел подкачки"… Файловая система – все что осталось, первичный, Использовать как "Ext3", точка монтирования – "/", Метка ‘загрузочный’ – "вкл"…
6. Часовой пояс – "Москва", Системные часы показывают UTC? – "Да"…
7. Имя пользователя, учетная запись, 2 раза пароль…
8. При выборе сервера жмем "Tab"...
Ждем пока установится и перезагружаемся… Заходим в систему…
Теперь немого настроим систему…
1. Сначала поменяем пароль пользователя root… выполняем:
вводим пароль текущего пользователя, а затем 2 раза новый пароль для root… выполняем:
и заходим под рутом
2. Отредактируем файл с репозиториями…
надо закомментировать все строки deb-src и deb cdrom, для того чтобы система не качала исходники и не требовала диск с дистрибутивом… Жмем Ctrl+X выхода... сохраняемся...
3. Обновляем систему… выполняем:
затем перезагружаемся:
После перезагрезки снова заходим под рутом
Теперь приступим к установке программ…
1. Midnight Commander, двухоконный файловый менеджер, типа досовского Norton Commander или виндового FAR Manager…
2. Поддержка ZIP-архивов…
aptitude install zip
3. Браузер Elinks…
4. Java Development Kit 6…
Соглашаемся с лицензионным соглашением...
после окончания выполняем:
На 1е место вписываем /usr/lib/jvm/java-6-sun...
5. MySQL… выполняем:
указываем пароль на базу…
6. Веб-сервер Apache 2…
7. PHP 5…
8. ANT, программа для компилляции…
9. Subversion, программа, для получения исходников с SVN…
10. Maven, программа для компилляции сервера…
запускаем браузер
и вводим URL
сохраняем файл на диск /… выходим из браузера… Esc – File – Exit… Запускаем MC:
11. PhpMyAdmin, управление базами данных…
Сворачиваем MC комбинацией "Ctrl+O" и выполняем
после установки запускаем браузер и вводим URL
сохраняем файл (/) и выходим из браузера… Возвращаемся в MC ("Ctrl+O")Распаковываем полученный архив в папку /var/www/… и переименовываем полученную папку в phpmyadmin… потом нодо записать в эту папку файлы из аттача...
12. SSH, Удаленный доступ к файлам... сворачиваем MC и выполняем...
Теперь надо получить исходники и собрать из них сервер…
1.Качаем исходники… Переходим в корень диска, жмем F7 и создаем папку /l2emu… Сворачиваем MC… Переходим в созданную папку
затем качаем GameServer, LoginServer и DataPack
DiskW
Внимательнее с регистром букв, линукс придирчив к этому… Для ускорения процесса можно запускать скачки в разных сеансах… переключение сеансов осуществляется комбинациями Alt+{F1..F6}… Ждем пока все скачается… Разворачиваем MC и распаковываем архивы L2Emu_GameServer_IL.zip, L2Emu_LoginServer_IL.zip, L2Emu_DataPack_IL.zip из папки /l2emu/archives/ в папку /l2emu, в итоге в папке /l2emu должны появиться папки L2Emu_GameServer_IL, L2Emu_LoginServer_IL, L2Emu_DataPack_IL… Распаковка займет прилично времени… Потом надо скопировть папку .svn из /l2emu/archives/ в получившиеся папки…
2. Перед сборкой желательно немного заглянуть в исходники (для редактирования выбираем файл и жмем "F4"), а именно…
/l2emu/L2Emu_GameServer_IL/src/main/java/net/sf/l2j/gameserver/serverpackets/... здесь редактируем файлик NpcHtmlMessage.java… на 165 строке, надо заменить 8192 на 5120… это нужно для предотвращения падения клиента, от html’ок размером более 5кб (в винде можно 8кб, а в линуксе только 5кб…)… после изменений не будут работать некоторые окна админки… до изменений, клиент падал бы с критом…
/l2emu/L2Emu_GameServer_IL/src/main/java/net/sf/l2j/gameserver/handler/admincommandhandlers/… нам нужен файл AdminCTFEngine.java, здесь в блоке, начинающемся на 38 строке, 2 раза повторяются комманды ”admin_ctf_minlvl” и ”admin_ctf_maxlvl”… повтор надо стереть…
3. Приступим к сборке… Сворачиваем MC…
DiskW
JAVA_HOME=/usr/lib/jvm/java-6-sun/ ant
DataPack
JAVA_HOME=/usr/lib/jvm/java-6-sun/ ant
LoginServer
JAVA_HOME=/usr/lib/jvm/java-6-sun/ /mvn/bin/mvn –Dmaven.test.skip=true
GameServer
JAVA_HOME=/usr/lib/jvm/java-6-sun/ /mvn/bin/mvn –Dmaven.test.skip=true
4. Разворачиваем MC, создаем папку /server и распаковываем в нее архивы…
LoginServer - l2j-loginserver-dist.zip (/l2emu/L2Emu_LoginServer_CT1/target/)
GameServer – l2j-gameserver-dist.zip (/l2emu/L2Emu_GameServer_IL/target/)
DataPack – L2Emu_DataPack_IL.zip (/l2emu/L2Emu_DataPack_IL/build/)
5. После распаковки в папке /server, получилось 5 папок l2j-gameserver, l2j-loginserver, guides, tools и sql… Для удобства я переименовал папки l2j-gameserver и l2j-loginserver в game и login соответственно… а также перенес содерджимое папок game/dist и login/dist в game и login соответственно…
6. Распаковываем содержимое папки /diskw/www/ из архива DiskW - L2Emu_DiskW.zip (/l2emu/L2Emu_DiskW/build/) в /var/www/...
Устанавливаем базы
1. Немного подправим установщик баз… Идем в /server/tools/, редактируем файл database_installer.sh… в 1й строке надо поставить пробел между # и !/bin/bash, потом удалить все знаки ”^” и пустые строки, также заменить items_on_ground.sql, vip.sql и update_01 (…09) на itemsonground.sql, vipinfo.sql и update_1 (…9) соответственно… Сохраняем и выходим… Теперь дадим права на запуск этого файла… жмем F9 -> файл -> права доступа… отметить в 3х местах запуск/поиск и выбрать «Установить»…
2. Создаем базу ”Emu_DB”… Сворачиваем MC и выполняем:
(пробел между –p и паролем не ставится)...
3. Устанавливаем таблицы в базу… выполняем
./database_installer.sh
вводим данные для LS: хост (localhost), базу (Emu_DB), логин (root) и пароль… вводим то же самое для GS, затем подтверждаем создание конфига (y), отказываемся от бэкапа баз LS (n), выбираем полную установку (f)… отказываемся от бэкапа баз GS (n), выбираем полную установку (f)… от обновлений отказываемся (n)…
Настраиваем сервер…
1. идем в /server/login/config/network/ редактируем файл database.properties, здесь указываем пароль к базе
в этой же папке редактируем файл network.properties, здесь ставим
2. идем в /server/login/ очищаем от ”^” и пустых строк файлы register_gameserver.sh и account_manager.sh, даем им права на запуск… также очищаем от ”^” и пустых строк файл setenv.sh…
3. Сворачиваем MC и выполняем
./register_gameserver.sh
вводим 1…
Сздадим админа… выполняем
выбираем 1, username – admin, password, accesslvl – 200… жмем 5 для выхода…
4. Разворачиваем MC и редактируем loginserver_loop.sh… очищаем от ”^” и пустых строк… заменяем
на
для того, чтобы ход загрузки сервера отображался в консоли...
5. идем в /server/game/config/network/ редактируем файл database.properties, здесь указываем пароль к базе
в этой же папке редактируем файл network.properties,
ExternalHostname = 78.107.239.220
InternalHostname = 192.168.0.5
InternalNetworks = 192.168.0.0/255.255.255.0
OptionalNetworks = 78.107.239.220,0.0.0.0/255.255.255.255;10.211.22.200,10.0.0.0/255.255.248.0
6. идем в /server/game/ и очищаем очищаем от ”^” и пустых строк файлы setenv.sh и gameserver_loop.sh… также дать файлу gameserver_loop.sh права на запуск и заменить в нем
на
Выходим из MC (F10) и переходим к запуску сервера… Логин и Гейм серверы запускаем в разных сеансах
1. LoginServer…
./loginserver_loop.sh
2. GameServer…
./gameserver_loop.sh
Доступ к фалам...
Возможно кому-то удобнее все подготовит в винде, а на сервер перенести уже все готовое...
1. Можно записать в винде на болванку и перенести на сервер...
Чтобы монтировать и демонтировать CD надо создать .sh файл с правами на запуск следующего содержания
retval=`/bin/mount | grep /media/cdrom`
if [ -n "$retval" ];
then /bin/umount /media/cdrom 1> /dev/null 2> /dev/null
if [ "$?" -ne 0 ];
then echo "Can’t unmount CDROM"
else echo "Unmount CDROM"
eject /dev/cdrom
fi
else /bin/mount /media/cdrom 1> /dev/null 2> /dev/null
if [ "$?" -ne 0 ];
then echo "Can’t mount CDROM"
else echo "Mount CDROM"
fi
fi
2. Доступ по SSH... я пользуюсь SSH-клиентом WinSCP ( http://winscp.net/download/winscp406setupintl.exe )...
Там все просто... вводим хост (192.168.0.5), порт (22), логин и пароль пользователя системы... через несколько секунд получаем полный доступ к файлам на сервере ...
Доступ к базам...
1. phpMyAdmin... с удаленной машины в браузере вводим:
вводим логин и пароль... и делаем с базами что захотим...
2. Navicat... создаем новое подключение... хост - localhost, порт - 3306, логин и пароль доступа к базе... затем переходим на вкладку SSH... отмечаем галочку "Use SSH Tunnel"... хост - 192.168.0.5, порт - 22, логин и пароль пользователя системы... жмем "ОК" и подключаемся... делаем с базами, что захотим...
Обновлено: GameGuard Server пропал с свн...
Обновлено: доступ к файлам через SSH... доступ к базам с удаленной машины phpMyAdmin и Navicat...
выяснине опытным путем можно поставить 6144 (100% верно для камеля :) )
/server/login/
./loginserver_loop.sh
2. GameServer…
cd /server/game/
./gameserver_loop.sh
для запуска в фоновом режиме можно запустить с одного сенса, добавив в конце строки знак &
/server/login/loginserver_loop.sh &
2. GameServer…
cd /server/game/gameserver_loop.sh &
Мануал полезный - думал сам такое накорябать для Фрюхи, но повторяться наверное не стану.
Просто попытаюсь чуть поравить и дополнить:
1) Насчёт "З.Ы. Многие вещи, например, распаковка архивов (в линуксе распаковка ДатаПака после сборки, займет несколько часов),
редактирование конфигов (!!!НО не исполняемых файлов .sh!!!), ...."
- похоже автор попался на тупости работы миднайта с архивами содержащими кучу мелких файлов. Но это же не значит что команду
(
cp /l2emusvn/L2Emu_DataPack_CT1/build/L2Emu_DataPack_CT1.zip /opt/LA2K/tmp_rep/
cp /l2emusvn/L2Emu_LoginServer/l2emusvn/trunk/l2j-loginserver-dist.zip /opt/LA2K/tmp_rep/
cp /l2emusvn/L2Emu_GameServer/l2emusvn/trunk/l2j-gameserver-dist.zip /opt/LA2K/tmp_rep/
)
&& unzip "*.zip"
кто-то отменил 8-).
Далее - не забываем о великом благе Юниксовых ФС (EXTFS/UFS) - симлинках.
Согласитесь чем мувать - копить кучи файлов скажем выстраданных лично конфигов или заплат в ГеоХате ... Или потестить только что скомпиленный GS и обнаружив
недочёты тутже откатиться на пред версию без копирования или перекомпиляции.
Короче кто не знает - man ln ;)!
И ещё - внимательно следим за мессагами от db_installer - там могут быть утерянные вещи - в пылу сборки могут потеряться.
И особо отмечу насчёт "^M" - настоятельно рекомендую не поленться и наваять фильтр который пропустит *.sh *.java *.sql файлы
заменив концы строк 0xD0xA -> 0xA.
Что касается старта (скажем авто старта при загрузке серванта -)
Я не помню как там точно в линуксах но обвязку во Фре я в первом приближении нацарапал вот так :
l2emu_enable=${l2emu_enable-"NO"}
l2emu_prefix=${l2emu_prefix-"/usr/local"}
l2emu_user=${l2emu_user-"l2emu"}
. /etc/rc.subr
name="l2emu"
rcvar=`set_rcvar`
load_rc_config $name
required_dirs="/opt/L2EMU"
required_files="${l2emu_prefix}/gs.sh ${l2emu_prefix}/gls.sh "
start_cmd="l2emu_start"
stop_cmd="l2emu_stop"
l2emu_start() {
echo 'L2EMU LS start....!'
su -l $l2emu_user -c "cd ${l2emu_prefix}/login;./loginserver.sh"
su -l $l2emu_user -c "cd ${l2emu_prefix}/gameserver;./gameserver.sh"
echo 'L2EMU GS start....!'
exit 0
}
l2emu_stop() {
checkyesno l2emu_enable && echo "Stopping gameserver." && \
${l2emu_prefix}/gs.sh 'shutdown 0'
checkyesno l2emu_enable && echo "Stopping login-server." && \
${l2emu_prefix}/gls.sh shutdown
exit 0
}
run_rc_command "$1"
Соотв в /etc/rc.conf определил переменные определяющие от кого в каком каталоге и разрешен ли вообще запуск линейки.
Что такое gs.sh ? Обвязка за отправки комманд сервису через telnet-косоль. Согласитесь так его тушить корректней чем по killall -9 java 8)))
Короче man nc.
Где разрешить консоль думаю нарыть не трудно? (и думаю ясно всем что никого кроме локалхоста на неё пускать не стоит.)
Всё.
На последок я просто обязан выразить благодарность автору за удачное описание процесса и конечно
ОГРОМЕЙШИЙ РЕСПЕКТ участникам проекта L2EMU - imho имеющего все шансы стать лучшей из ява-сборок.
Вроде как, уже и 8.4 есть http://mirror.yandex.ru/ubuntu-releases/8.04/
Сколько времени прошло....
— Administrator

