Показать сообщение отдельно
Непрочитано 30.01.2011, 15:44   #7
Аватар для sotariz
Пользователь

По умолчанию Re: AION X EMU + Ubuntu 10.04.1 Практикум

Цитата:
Сообщение от Zombie Посмотреть сообщение
Вот гайд взятый с форума Aion XEMU
Былобы хорошо если его бы перевели=)
Восстановил Dallas, написал teser
Написал teser

Привет ребята, есть простое пошаговое руководство как установить AiON-CORE на свежеустановленном Linux сервере. Также я добавил дополнительные главы из которых вы узнаете как использовать screen, cron, как настроить ежедневное/ежечасное создание локальных бекапов с последующей выгрузкой их на FTP-сервер.

Примечание:
Я буду использовать Ubuntu/Debian Linux в качестве примера, если вы используете Red Hat/Mandriva Linux и т.д. вы должны использовать команду yam вместо apt-get.

Сначала необходимо выполнить вход от имени пользователя root в консоли
1. Выполним обновление зависимостей
apt-get update
apt-get upgrade

2. Установить Subversion (для SVN), Java, Maven и Zip
apt-get install subversion sun-java6-jdk sun-java6-jre maven2 zip

3. Установить MySQL, Apache 2 и PHP5
tasksel install lamp-server

или
apt-get install php5 mysql-server apache2

Вам будет предложено ввести пароль для пользователя MySQL root, запомните его.

Что бы узнать какая версия Maven у вас установлена выполните следующую команду
mvn -version

4. Создайте нового пользователя Linux для запуска LoginServer и GameServer
adduser server

Войдите новым пользователем
login server

5. Скачать AionCore с SVN репозитория
cd /home/server/
svn co http://subversion.assembla.com/svn/ac-go/ ac-go

Для обновления с SVN до последней версии используйте команду
cd /home/server/ac-go/
svn up

6. Компиляция исходного кода с помощью Maven
Войди в вашей локальной копии SVN AionCore в директорию /trunk (все необходимые файлы находятся в этой директории, не общайте внимания на остальные)
cd /home/server/ac-go/trunk/

Сначала вы должны скомпилировать Commons (в течении компиляции скрипт будет много чего скачивать, будьте терпеливы)
cd AC-Commons
mvn

Затем компилируем LoginServer
cd ../AC-Login
mvn

После GameServer
cd ../AC-Game
mvn

Распакуйте скомпилированные иходники
Сначала создадим каталог для сервера
mkdir /home/server/test

Теперь мы можем начать распаковывать скомпилированные файлы

LoginServer
cd /home/server/ac-go/trunk/AC-Login/target
unzip ac-login-1.0.0.zip -d /home/server/test

GameServer
cd /home/server/ac-go/trunk/AC-Game/target
unzip ac-game-1.0.0.zip -d /home/server/test

8. Настройка базы данных MySQL (Войти от имени пользователя root)
Вам понадобиться какой-то клиент для того что бы создать БД и пользователя для вашего сервера AiON, вы можете выбрать любой, удобный вам, клиент

Вариант1. Создание БД и пользователя вручную

Войти в MySQL пользователем root
mysql -u root -p

Вы увидите
MySQL>

для создания БД выполните следующие команды
MySQL> CREATE DATABASE ac_server_ls;
MySQL> CREATE DATABASE ac_server_gs;

Теперь мы должны создать поьзователя БД для вашего сервера
mysql> USE mysql
mysql> CREATE USER 'server'@'localhost' IDENTIFIED BY 'yourpassword';

Теперь мы предоставляем ему полный доступ к двум созданым БД
mysql> GRANT ALL PRIVILEGES ON ac_server_ls.* TO 'server'@'localhost';
mysql> GRANT ALL PRIVILEGES ON ac_server_gs.* TO 'server'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> \q

Вариант2. Используем PhpMyAdmin
apt-get install phpmyadmin

Соединяемся с адресом http://localhost/phpmyadmin/ (замените localhost на ваш IP или доменное имя)
Входим, переходим в меню Привилегии и добавляем нового пользователя, устанавливаем имя пользователя, сомпьютер "localhost", жмем принять
Переходим в меню "Базы данных" и создаем две БД ac_server_ls и ac_server_gs
Редактируем созданного пользователя в меню Привилегии, выберите созданные БД и назначьте ему полный доступ

Вариант3. С помощью Navicat или других графических инструментов(Войти как root)
Для начала позвольте внешние подключения к серверу - вам нужно удалить MySQL resctriction в конфигурационном файле
Откройте /etc/mysql/my.cnf и найдите следующую строку
bind-address = 127.0.0.1
Закоментируйте эту строку, что бы она выглядела так
# bind-address = 127.0.0.1
После этого перезапустите ваш сервер MySQL
service mysql restart
или
/etc/init.d/mysql restart

9. Импортирование LoginServer и GameServer SQL файлы в БД
Вариант1. Импортировать базы вручную
LoginServer БД
cd /home/server/test/loginserver/sql
mysql -u root -p -h localhost ac_server_ls < ac_server_ls.sql
GameServer БД
cd /home/server/test/gameserver/sql
mysql -u root -p -h localhost ac_server_gs < ac_server_gs.sql
Импорт дроплиста в базу GameServer
cd /home/server/test/gameserver/sql/drops
mysql -u root -p -h localhost ac_server_gs < drops.sql

Вариант2. Импорт с помощью Navicat
Скачать все SQL файлы в вашу локальную директорию
После в Navicat ПКМ на БД вашего LoginServer и импортировать файл ac_server_ls.sql из loginserver/sql
Выберите вашу БД GameServer и импортируйте ac_server_gs.sql из gameserver/sql и droplist.sql из gameserver/sql/drops

10. Настройка ваших LoginServer и GameServer
Теперь вы должны отредактировать сонфиги ваших серверов (login и game)
Конфиг LoginServer
cd /home/server/test/loginserver/config/network
Тут находится файл database.properties измените его следующим образом
# This is database url
database.url = jdbc:mysql://localhost:3306/ac_server_ls

# Database user
# Default: root (not safe)
database.user = server

# Database password
# Default: no password (not safe)
database.password = yourpassword

Конфиг GameServer
cd /home/server/test/gameserver/config/network
Здесь три файла которые нужно изменить
в database.properties измененить
# This is database url
database.url = jdbc:mysql://localhost:3306/ac_server_gs?useUnicode=true&charact$

# Database user
# Default: root (not safe)
database.user = server

# Database password
# Default: no password (not safe)
database.password = yourpassword

в ipconfig.xml найти строку и изменить ее - YOUR_EXTERNAL_IP_THERE на ваш внешний IP или домен
<ipconfig default="YOUR_EXTERNAL_IP_THERE">

в network.properties вам не нужно ничего менять, но вы должны отметить идентификатор GameServer (network.login.gsid = 1) и пароль GameServer, который будет использоваться для аутентификации LoginServer'ом (network.login.password = пароль).
Если вы хотите изменить имя GameServer, установите другой идентификатор (не вы не можете использовать пользовательское имя сервера, вы должны выбрать одно из предоставленых имен)
# Port that will be used to listen for client connections
network.client.port = 7777

# Host that will be used to listen for client connections
network.client.host = *

# Maximum online players on the server
network.client.maxplayers = 1000

# Required access level to enter gameserver
# If set to bigger than 0 only GM's are able to connect
# and normal players can't see server on serverlist
# Default = 0
network.client.requiredlevel = 0

# Address of login server
network.login.address = localhost:9014

# Id of this game server
network.login.gsid = 1

# Password of this game server
network.login.password = password

Теперь вы должны добавить идентификатор GameServer и пароль в БД LoginServer, измените 127.0.0.1 на ваш реальный IP
mysql -u server -p
mysql> USE ac_server_ls;
mysql> INSERT INTO `gameservers` (`id`, `mask`, `password`) VALUES (1, '127.0.0.1', 'password');
mysql> \q

Или откройте Navicat, ПКМ на БД LoginServer, выберите console и используйте для вставки ее для вставки вручную

11. Запуск Login и Game серверов + использование экрана
а) простой/по умолчанию путь как запустить Login и Game сервера
Запуск LoginServer
сделать скрипты исполняемыми
cd /home/server/test/loginserver/
chmod +x StartLS.sh
chmod +x StartLS_loop.sh
после запустить сервер
./StartLS_loop.sh

запуск GameServer
сделать скрипты исполняемыми
cd /home/server/test/gameserver/
chmod +x StartGS.sh
chmod +x StartGS_loop.sh
запустить сервер
./StartGS_loop.sh

б) сейчас я покажу вам спосо, на мой взгляд на много лучше, как запустить и управлять серверами/сервисами используя экран
Войдите в консоли от имени пользователя root и установите пакет screen
apt-get install screen
Теперь нам надо создать два новых файла в каталогах LS и GS
Первый скрипт для loginserver:
cd /home/server/test/loginserver/
nano login.sh
и скопируйте туда следующее
java -Xms8m -Xmx32m -ea -cp ./libs/*:ac-login-1.0.0.jar com.aionemu.loginserver.LoginServer
и второй:
nano startLogin
скопируйте в него это:
screen -A -m -d -S aion_loginserver_ID1 ./login.sh
Теперь мы должны сделать их исполняемыми
chmod +x login.sh
chmod +x startLogin

Первый скрипт для gameserver:
cd /home/server/test/Ac-Game/
nano game.sh
копируем в него:
java -Xms512m -Xmx1536m -ea -Xbootclasspath/p:./libs/jsr166.jar -javaagent:libs/ac-commons-1.0.0.jar -cp ./libs/*:ac-game-1.0.0.jar com.aionemu.gameserver.GameServer
и второй:
nano startGame
копируем в него это:
screen -A -m -d -S aion_gameserver_ID1 ./game.sh
Делаем скрипты исполняемыми
chmod +x game.sh
chmod +x startGame

И так, как это работает?
startLogin и startGame создают сценарии запускаются login.sh и game.sh которые будут работать в фоновом режиме. Теперь можно проверить процесс в любое время.
Запуск LS
cd /home/server/test/loginserver/
./startLogin
Запуск GS
cd /home/server/test/gameserver/
./startGame
Теперь вы можете просмотреть экраны коммандой
screen -r
он покажет вам список запущеных процессов в формате PID.screen_name и их состояния [atached] или [detached]
Это мой пример, что бы было понят как это выглядит:
server SGP :~/aion/test/ac-go/loginserver$ screen -r

There are several suitable screens on:
1392.aion_gs_test (28/11/10 01:17:17) (Detached)
7655.aion_gs_nezekan (27/11/10 16:26:07) (Detached)
6701.wow_azshara_gs (27/11/10 16:05:32) (Detached)
3256.lineage_ls_antharas (27/11/10 13:50:43) (Detached)
2894.lineage_gs_antharas (27/11/10 13:49:08) (Detached)
22315.aion_ls_test (25/11/10 16:51:57) (Detached)
27458.aion_gs_hellion (25/11/10 00:42:49) (Detached)
13704.ventrilo_server_231 (24/11/10 18:39:24) (Detached)
3553.wow_azshara_gs_restarter (24/11/10 11:35:28) (Detached)
3231.aion_ls_hellion (24/11/10 11:26:50) (Detached)
2804.aion_ls_nezekan (24/11/10 11:18:45) (Detached)

Вы видете что запущенно несколько серверов, так что команда sceen может быть очень полезной, для ataching screen вы просто вводите номер процесса.
screen -r 1392
эта команда выведет на экран состояние созданого нами сервера GS, и теперь мы можем наблюдать за ним или выключить его

Если вы не хоте продолжать наблюдать за работой GS нажмите Ctrl+D, это завершит вывод на экран состояния сервера

12.Бекап на локальную машину и загрузка на FTP-сервер
Когда вы имеете рабочий сервер, вы начинаете нуждаться в бекапах ваших БД что бы не потерять информацию о ваших игроках. Есть простой скрипт который будет сохранять указаные БД сжимать их и сохранять в отдельный каталог и другой скрипт который будет отправлять их (бекапы) на выбраные вами ftp-сервер. Я расскажу вам как использовать службу cron что бы запланировать это так как вам удобно.
Создадим директорию где будут лежать наши скрипты бекапа
cd /home/server
mkdir backup
cd backup
Теперь скачаем скрипты:
wget http://www.sun-aion.com/downloads/startBackup
wget http://www.sun-aion.com/downloads/backupmysql.sh
И создать каталог в нашей папке бекапов для хранения дампов БД (SQL dumps)
mkdir sql
ls
Вы должны будете увидеть содержимое папки backup - два файла startBackup и backupmysql.sh, и одну папку sql
starBackup - просто файл запуска, он будет выводит на экран ход выполнения операции
backupmysql.sh - это простой скрипт, который позволяет настраивать базы данных для резервного копирования в локальную папку с последующей отправкой на ftp-сервер
sql - это каталог в котором мы будем хранить наши резервные копии SQL

Теперь вы должны отредактировать конфигурационный в backupmysql.sh, вы должны сделать это по своему усмотрению, т.к. я все настройки прокомментировал поэтому он должен быть понятен всем, или можете оставить его содержимое "по умолчанию", если вы выполняли все согласно руководства

13. Использование Cron службы для резервного копирования сценария

14. Советы и хитрости
- Вы всегда должны запускать ваши сервера пользователем server, которого мы создали, но может произойти так что вы запускаете/компилируете/распаковываете от имени пользователя root и этим вы перезаписываете права на записать в файлы для пользователя server
Вы можете исправить это следующей командой:
chown -R server /home/server
- Если вы хотите использовать какой ни будь файловый менеджер, вы можете установить Midnight Commander (выполнив вход пользователем root)
apt-get install mc

Я закончу/исправлю/сделаю руководство читабельнее позднее. Однако оно может быть использовано уже.

Комментарии:
по NoobOne
Прекрасное руководство, спасибо.
Маленькое дополнение от меня:
Перед установкой пакетов
sun-java6-jdk sun-java6-jre
под Ubuntu, вы должны раскомментировать partner-repositories в sources.list
mcedit /etc/apt/sources.list
Найдите эту строку и удали в ее начале #, после сохраните изменения
deb http://archive.canonical.com/ubuntu maverick partner
deb-src http://archive.canonical.com/ubuntu maverick partner

Добавлено через 3 минуты
Заметка от меня, этот гайд был написан для CORE старой версии, т.к. сейчас что CORE что AXE работают отталкиваясь от ядра Engine компилирование необходимо проводить не Maven'ом а Ant'ом

Последний раз редактировалось sotariz; 30.01.2011 в 15:48. Причина: Добавлено сообщение
sotariz вне форума Ответить с цитированием