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 openJDK
3. Создадим отдельного пользователя 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
ant
6. Устанавливаем сервер
Для начала нам необходимо создать директорию где будут лежать наши сервера
Код:
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/server
7. Установка баз данных серверов
Вариант 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.sql
8. Настройка/Конфигурация серверов
Теперь вы должны отредактировать конфиги ваших серверов
Конфиг 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> \q
9. Запуск 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-update
10. Перезагрузка
Для верности всех наших махинаций перезагрузим машину.
Код:
reboot
если зашли root'ом
Код:
screen -r
Код:
sudo screen -r
Код:
12111.aion.login................
12090.aion.game.................
На этой ноте соизволю откланяться. Если будут замечания/пожелания (желательна конкретика), буду рад принять к сведению, проверить и если это действенно добавить в это руководство.
За основу руководства взяты статьи:
Описание по поднятию быстрого сервера Aion на linux платформе
How To Install Aion X Emu on Linux
При копировании на другие ресурсы просьба указывать авторство и "статьи вдохновители"