02-07-2011, 12:10 PM
Хочу предложить Вам гайд по поднятию, настройке и дальнейшем обновлении сервера AiON на Linux платформе.
Если четко придерживаться руководства, по окончанию его выполнения получите рабочий сервер команды Aion X Emu
Примечание:
1. Все действия буду описывать основываясь на собственном опыте на Mandriva Linux, в связи с этим некоторые команды могут отличаться от других Linux дистрибутивов.
2. В руководстве указываю создание отдельного раздела для сервера AiON (при установке Linux), но это не означает что вы не можете использовать это руководство не переустанавливая свою систему. Достаточно будет создать директорию для сервера ипропустить совет относящийся к созданию раздела.
1. Начнем.
Как и сказанно выше, Вам необходимо создать отдельный раздел для Вашего будущего сервера. У меня этот раздел имеет 9Гб пространства и нехватки свободного места я не ощущаю (храня на этом разделе и искодники и сами сервера) что вообщем-то и не мудренно. В дальнейшем описании я буду считать точкой монтирования /aion.
-- Файловую систему для этого раздела советую выбрать ReiserFS т.к. она позволяет обеспечить высокую производительность при работе с мелкими файлами. Прочитать о данной файловой системе можете к примеру на wikipedia
Из опыта: сравнивал видимую скорость работы на Ext4 и ReiserFS, последняя ощущается процентов на 40 быстрее.
2. Установка пакетов нужных для дальнейшей работы
-- для начала, по классике всех прочитаных мной руководств, обновим ситему если она того желает:
Примечание: выполните в терминале команду "su -" и введите пароль пользователя root или добавляйте перед следующими командами sudo
-- теперь приступим к установке пакетов
Примечание: Если предварительно вы подключите дополнительные источники обновлений, то сможете скачать с них более полноценную версию java нежели openJDK
3. Создадим отдельного пользователя Linux
Делают это что бы обезопасится от взлома рута и получения полного контроля над Linux
Введите пароль для созданого пользователя.
Войдите этим пользователем в систему
-- если вы находитесь в системе от имени root при помощи "su -", то сначала выйдите рутом(exit) и потом войдите пользователем aion
login aion
4. Приступаем к скачиванию исходников
Перейдем в наш раздел для сервера
Выполним следующую команду
-- дождавшись окончания выполним команду
и Вы должны будете увидеть
Сейчас путь к исходникам выглядит так:
Для собственного удобства дальше я делал следущее
и теперь путь выгладит так
т.е. я избавился от верхнего регистра в пути и одного лишнего перехода
5. Компилирование серверов
Переходим в папку Commons и компилируем ее первой, т.к. разработчики советуют это делать
Компилируем loginserver
Компилируем gameserver
Компилируем chatserver
6. Устанавливаем сервер
Для начала нам необходимо создать директорию где будут лежать наши сервера
далее распакуем скомпилированые сервера
7. Установка баз данных серверов
Вариант 1. PhpMyAdmin
Для простоты работы с БД предлагаю установить PhpMyAdmin, требуется наличие установленных иксов
Далее заходим в веб-интерфейс phpmyadmin и создаем две базы данных и импортируем данные из прилагающихся sql файлов
создадим пользователя БД aion и настроим ему права доступа к нашим базам.
Вариант 2. Вручную через терминал.
Создание БД и пользователя вручную
Войти в MySQL пользователем root
для создания БД выполните следующие команды
Теперь мы должны создать поьзователя БД для вашего сервера
Примечание: доступ к БД этим пользователем мы сможем получить только с локальной машины, если вы захотите работать с БД удаленно советую создать отдельного пользователя, к примеру admin, по тому же принципу mysql> CREATE USER 'server'@'%' IDENTIFIED BY 'yourpassword'; обратите внимание что вместо localhost указан %, это означает что пользователь сможет работать с БД с любого компьютера, как локального так и удаленного. Для этого пользователя советую провести более детальную настройку прав доступа
входим нашим пользователем
Вариант 3. Вручную 2
Импортировать базы вручную
LoginServer БД
GameServer БД
Импорт дроплиста в базу GameServer
8. Настройка/Конфигурация серверов
Теперь вы должны отредактировать конфиги ваших серверов
Конфиг loginserver
Тут находится файл database.properties измените его следующим образом
Конфиг gameserver
Здесь нужно изменить default.config и ipconfig.xml
default.config:
в ipconfig.xml найти строку и изменить ее - YOUR_EXTERNAL_IP_THERE на ваш внешний IP или домен
в NETWORK вам не нужно ничего менять, но вы должны установить идентификатор GameServer (gameserver.network.login.gsid = 1) и пароль gameserver, который будет использоваться для аутентификации LoginServer'ом (network.login.password = пароль).
Если вы хотите изменить имя GameServer, установите другой идентификатор (не вы не можете использовать пользовательское имя сервера, вы должны выбрать одно из предоставленых имен)
Теперь вы должны добавить идентификатор GameServer и пароль в БД LoginServer, измените 127.0.0.1 на ваш реальный IP или используйте * для разрешения соединения с любого IP:
Или через Navicat откройте БД логинсервера, зайдите в таблицу gameservers и добавьте эту запись вручную
9. Запуск Login и Game серверов + использование screen
Вариант1.
стандартный метод запуска Login и Game сервера
Запуск LoginServer
сделать скрипты исполняемыми
после запустить сервер
запуск GameServer
сделать скрипты исполняемыми
запустить сервер
Вариант2.
Запуск серверов с использованием screen
Войдите в консоли от имени пользователя root и установите пакет screen
Теперь нам надо создать два новых файла в каталогах LS и GS
Первый скрипт для loginserver:
и скопируйте туда следующее
и второй:
скопируйте в него это:
Теперь мы должны сделать их исполняемыми
Первый скрипт для gameserver:
копируем в него:
и второй:
копируем в него это:
Делаем скрипты исполняемыми
Вариант3, автозагрузка, автообновление, автообновление по расписанию.
Создадим два скрипта - скрипт автозапуска серверов и скрипт автообновления, который будет сразу много всего (остановка_работающих_серверов(демон) + обновление_исходников + компилирование_серверов + сохранение_конфигов_"живых"_серверов + установка_обновленых_серверов + конфигурирование_новых_серверов + запуск_серверов(демон))
Скрипт1, автозапуск серверов(автозагрузка):
Создадим файл aion в папке /etc/init.d
со следующим содержимым:
Сделаем его исполняемым и поставим в автозагрузку:
Скрипт2, автообновление:
с таким содержимым:
Сделаем его исполняемым
и поставим в крон для циклического выполнения
после открытия crontab, вставляем вот эту строчку:
10. Перезагрузка
Для верности всех наших махинаций перезагрузим машину.
после загрузки системы, входим и выполняем команду (если использовали автозагрузку)
если зашли root'ом
если закшли обычным пользователем
если увидим строки с примерно таким содержанием:
То это будет означать что автозагрузка работает.
На этой ноте соизволю откланяться. Если будут замечания/пожелания (желательна конкретика), буду рад принять к сведению, проверить и если это действенно добавить в это руководство.
За основу руководства взяты статьи:
Описание по поднятию быстрого сервера Aion на linux платформе
How To Install Aion X Emu on Linux
При копировании на другие ресурсы просьба указывать авторство и "статьи вдохновители"
Если четко придерживаться руководства, по окончанию его выполнения получите рабочий сервер команды Aion X Emu
Примечание:
1. Все действия буду описывать основываясь на собственном опыте на Mandriva Linux, в связи с этим некоторые команды могут отличаться от других Linux дистрибутивов.
2. В руководстве указываю создание отдельного раздела для сервера AiON (при установке Linux), но это не означает что вы не можете использовать это руководство не переустанавливая свою систему. Достаточно будет создать директорию для сервера ипропустить совет относящийся к созданию раздела.
1. Начнем.
Как и сказанно выше, Вам необходимо создать отдельный раздел для Вашего будущего сервера. У меня этот раздел имеет 9Гб пространства и нехватки свободного места я не ощущаю (храня на этом разделе и искодники и сами сервера) что вообщем-то и не мудренно. В дальнейшем описании я буду считать точкой монтирования /aion.
-- Файловую систему для этого раздела советую выбрать ReiserFS т.к. она позволяет обеспечить высокую производительность при работе с мелкими файлами. Прочитать о данной файловой системе можете к примеру на wikipedia
Из опыта: сравнивал видимую скорость работы на Ext4 и ReiserFS, последняя ощущается процентов на 40 быстрее.
2. Установка пакетов нужных для дальнейшей работы
-- для начала, по классике всех прочитаных мной руководств, обновим ситему если она того желает:
Примечание: выполните в терминале команду "su -" и введите пароль пользователя root или добавляйте перед следующими командами sudo
Код:
yum update
yum upgradeКод:
urpmi subversion ant unzip mysql openJDK3. Создадим отдельного пользователя Linux
Делают это что бы обезопасится от взлома рута и получения полного контроля над Linux
Код:
adduser aion
passwd aionВойдите этим пользователем в систему
-- если вы находитесь в системе от имени root при помощи "su -", то сначала выйдите рутом(exit) и потом войдите пользователем aion
login aion
4. Приступаем к скачиванию исходников
Перейдем в наш раздел для сервера
Код:
cd /aionКод:
sudo svn co https://subversion.assembla.com/svn/AIONXEMU/Код:
lsКод:
[root@mandriva aion]# ls
AIONXEMU/
[root@mandriva aion]#Код:
/aion/AIONXEMU/trunk/Commons(ChatServer | LoginServer | GameServer)Код:
mv AIONXEMU/trunk aionxemu
rm -rf AIONXEMU/Код:
/aion/aionxemu/Commons(ChatServer | LoginServer | GameServer)5. Компилирование серверов
Переходим в папку Commons и компилируем ее первой, т.к. разработчики советуют это делать
Код:
cd /aion/aionxemu/Commons
antКод:
cd ../LoginServer
antКод:
cd ../GameServer
antКод:
cd ../ChatServer
ant6. Устанавливаем сервер
Для начала нам необходимо создать директорию где будут лежать наши сервера
Код:
mkdir /aion/serverКод:
unzip /aion/aionxemu/LoginServer/build/ax_login.zip -d /aion/server
unzip /aion/aionxemu/GameServer/build/ax_gameserver.zip -d /aion/server
unzip /aion/aionxemu/ChatServer/build/ax_chat.zip -d /aion/server7. Установка баз данных серверов
Вариант 1. PhpMyAdmin
Для простоты работы с БД предлагаю установить PhpMyAdmin, требуется наличие установленных иксов
Код:
urpmi phpmyadminсоздадим пользователя БД aion и настроим ему права доступа к нашим базам.
Вариант 2. Вручную через терминал.
Создание БД и пользователя вручную
Войти в MySQL пользователем root
Код:
mysql -u root -pКод:
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входим нашим пользователем
Код:
mysql -u aion -p
mysql> USE ac_server_ls;
mysql> SOURCE /aion/server/loginserver/sql/aionx_ls.sql;
mysql> USE ac_server_gs;
mysql> SOURCE /aion/server/gameserver/sql/aionx_gs.sql;
mysql> SOURCE /aion/server/gameserver/sql/drops/droplist.sql;
mysql> \qИмпортировать базы вручную
LoginServer БД
Код:
cd /aion/server/loginserver/sql
mysql -u root -p -h localhost ac_server_ls < aionx_ls.sqlКод:
cd /aion/server/gameserver/sql
mysql -u root -p -h localhost ac_server_gs < aionx_gs.sqlКод:
cd /aion/server/gameserver/sql/drops
mysql -u root -p -h localhost ac_server_gs < droplist.sql8. Настройка/Конфигурация серверов
Теперь вы должны отредактировать конфиги ваших серверов
Конфиг loginserver
Код:
cd /aion/server/loginserver/config/networkКод:
# This is database url
database.url = jdbc:mysql://localhost:3306/ac_server_ls
# Database user
# Default: root (not safe)
database.user = aion
# Database password
# Default: no password (not safe)
database.password = "yourpassword"Код:
cd /aion/server/gameserver/config/default.config:
Код:
# ===================================
# DATABASE
# ===================================
# This is database url
database.url = jdbc:mysql://localhost:3306/ac_server_gs?useUnicode=true&charact$
# Database user
# Default: root (not safe)
database.user = aion
# Database password
# Default: no password (not safe)
database.password = your_password
...........................................
# ===================================
# NETWORK
# ===================================
# GameServer ID
gameserver.network.login.gsid = 1
# GameServer bind IP address (* for all available IP)
gameserver.network.client.host = *
# GameServer bind TCP port
gameserver.network.client.port = 7777
# RDC (Remote Data Call) bind IP address
gameserver.network.rdc.client.host = *
# RDC bind TCP port
gameserver.network.rdc.client.port = 732
# Online players limit
gameserver.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
gameserver.network.client.requiredlevel = 0
# LoginServer location
gameserver.network.login.address = localhost:9014
# LoginServer password for this GameServer
gameserver.network.login.password = PASSWORDв ipconfig.xml найти строку и изменить ее - YOUR_EXTERNAL_IP_THERE на ваш внешний IP или домен
Код:
<ipconfig default="YOUR_EXTERNAL_IP_THERE">в NETWORK вам не нужно ничего менять, но вы должны установить идентификатор GameServer (gameserver.network.login.gsid = 1) и пароль gameserver, который будет использоваться для аутентификации LoginServer'ом (network.login.password = пароль).
Если вы хотите изменить имя GameServer, установите другой идентификатор (не вы не можете использовать пользовательское имя сервера, вы должны выбрать одно из предоставленых имен)
Теперь вы должны добавить идентификатор GameServer и пароль в БД LoginServer, измените 127.0.0.1 на ваш реальный IP или используйте * для разрешения соединения с любого 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> \q9. Запуск Login и Game серверов + использование screen
Вариант1.
стандартный метод запуска Login и Game сервера
Запуск LoginServer
сделать скрипты исполняемыми
Код:
cd /aion/server/loginserver/
chmod +x StartLS.sh
chmod +x StartLS_loop.shКод:
./StartLS_loop.shсделать скрипты исполняемыми
Код:
cd /aion/server/gameserver/
chmod +x StartGS.sh
chmod +x StartGS_loop.shКод:
./StartGS_loop.shЗапуск серверов с использованием screen
Войдите в консоли от имени пользователя root и установите пакет screen
Код:
urpmi screenПервый скрипт для loginserver:
Код:
cd /aion/server/loginserver/
nano login.shКод:
java -Xms8m -Xmx32m -ea -Xbootclasspath/p:./libs/jsr166.jar -cp ./libs/*:ax-login-1.0.1.jar loginserver.LoginServerКод:
nano startLoginКод:
screen -A -m -d -S aion_loginserver_ID1 ./login.shКод:
chmod +x login.sh
chmod +x startLoginКод:
cd /aion/server/gameserver/
nano game.shКод:
java -server -Xms128m -Xmx1536m -ea -Xbootclasspath/p:./libs/jsr166.jar -cp ./libs/*:ax-game-1.0.1.jar gameserver.GameServerКод:
nano startGameКод:
screen -A -m -d -S aion_gameserver_ID1 ./game.shКод:
chmod +x game.sh
chmod +x startGameСоздадим два скрипта - скрипт автозапуска серверов и скрипт автообновления, который будет сразу много всего (остановка_работающих_серверов(демон) + обновление_исходников + компилирование_серверов + сохранение_конфигов_"живых"_серверов + установка_обновленых_серверов + конфигурирование_новых_серверов + запуск_серверов(демон))
Скрипт1, автозапуск серверов(автозагрузка):
Создадим файл aion в папке /etc/init.d
Код:
nano /etc/init.d/aionКод:
#!/bin/sh
#
# description: Start/stop Aion server
#
RUNPATH="/aion/server"
GAMEEXEC="java -server -Xms128m -Xmx1536m -ea -Xbootclasspath/p:./libs/jsr166.jar -cp ./libs/*:ax-game-1.0.1.jar gameserver.GameServer"
LOGINEXEC="java -Xms8m -Xmx32m -ea -Xbootclasspath/p:./libs/jsr166.jar -cp ./libs/*:ax-login-1.0.1.jar loginserver.LoginServer"
GAME_PID=$(ps ux | awk '/ae_gameserver/ && !/awk/ {print $2}')
LOGIN_PID=$(ps ux | awk '/ae_login/ && !/awk/ {print $2}')
start() {
if [ -z "$LOGIN_PID" ]; then
echo -n "Starting Aion X Emu Login Server..."
cd $RUNPATH/loginserver
screen -A -m -d -S aion.login $LOGINEXEC
echo "OK"
else
echo "Aion Login Server is already started..."
fi
if [ -z "$GAME_PID" ]; then
echo -n "Starting Aion X Emu Game Server..."
cd $RUNPATH/gameserver
screen -A -m -d -S aion.game $GAMEEXEC
echo "OK"
else
echo "Aion Game Server is already started..."
fi
return 0
}
stop() {
echo -n "Stoping Aion Services..."
if [ ! -z "$LOGIN_PID" ]; then
kill $LOGIN_PID
fi
if [ ! -z "$GAME_PID" ]; then
kill $GAME_PID
fi
sleep 30
echo "OK"
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo $"Usage: $0 (start|stop)"
exit 1
esac
exit $?Код:
chmod +x /etc/init.d/aion
ln -s /etc/init.d/aion /etc/rc6.d/S99aionКод:
nano /aion/aion-updateКод:
#!/bin/sh
#останавливаем демон aion
/etc/init.d/aion stop
#обновляем исходники
cd /aion/aionxemu
svn up
#компилируем сервера
cd trunk/Commons
ant
cd ../LoginServer
ant
cd ../GameServer
ant
cd ../ChatServer
ant
#создадим папки для резервного копирования (после первого запуска этот блок можно удалить/закоментировать)
mkdir /aion/server/config
mkdir /aion/server/config/loginserver
mkdir /aion/server/config/gameserver
mkdir /aion/server/config/chatserver
#удаляем резервные копии конфигов
rm -rf /aion/server/config/loginserver/config
rm -rf /aion/server/config/gameserver/config
rm -rf /aion/server/config/chatserver/config
#создаем бекап "живых" конфигов
cp -r /aion/server/loginserver/config /aion/server/config/loginserver/
cp -r /aion/server/gameserver/config /aion/server/config/gameserver/
cp -r /aion/server/chatserver/config /aion/server/config/chatserver/
#удаляем сервера
rm -rf /aion/server/loginserver
rm -rf /aion/server/gameserver
rm -rf /aion/server/chatserver
#устанавливаем скомпилированые сервера
unzip /aion/aionxemu/trunk/LoginServer/build/ax_login.zip -d /aion/server/
unzip /aion/aionxemu/trunk/GameServer/build/ax_gameserver.zip -d /aion/server/
unzip /aion/aionxemu/trunk/ChatServer/build/ax_chat.zip -d /aion/server/
#удаляем предустановленные конфиги
rm -rf /aion/server/loginserver/config
rm -rf /aion/server/gameserver/config
rm -rf /aion/server/chatserver/config
#конфигурируем сервера (возвращаем "живые" конфиги)
cp -r /aion/server/config/loginserver/config /aion/server/loginserver
cp -r /aion/server/config/gameserver/config /aion/server/gameserver
cp -r /aion/server/config/chatserver/config /aion/server/chatserver
#создаем папки для логов
mkdir /aion/server/loginserver/log
mkdir /aion/server/gameserver/log
#запускаем демон aion
/etc/init.d/aion startКод:
chmod +x /aion/aion-updateКод:
crontab -u root -eКод:
* 5 * * * /aion/aion-update10. Перезагрузка
Для верности всех наших махинаций перезагрузим машину.
Код:
rebootесли зашли root'ом
Код:
screen -rКод:
sudo screen -rКод:
12111.aion.login................
12090.aion.game.................На этой ноте соизволю откланяться. Если будут замечания/пожелания (желательна конкретика), буду рад принять к сведению, проверить и если это действенно добавить в это руководство.
За основу руководства взяты статьи:
Описание по поднятию быстрого сервера Aion на linux платформе
How To Install Aion X Emu on Linux
При копировании на другие ресурсы просьба указывать авторство и "статьи вдохновители"

