понедельник, 7 февраля 2011 г.

Makefile

Команда make
Предположим нам нужно сделать исполняемый файл programma из исходниых файлов main.cpp function.cpp и заголовочного function.h. Для создадим файл makefile.

vitaliy@fox:~/$ nano makefile
programma : main.o function.o
                    g++ -o programma main.o function.o

main.o : main.cpp function.h
             g++ -c main.cpp

function.o : function.cpp function.h
                g++ -c function.cpp

clean : 
           rm programma main.o function.o

makefile состоит из четырех частей каждая из честей строиться по следующему принципу:

цель : предпосылка
          команда

цель - это обычно файл который генерирует программа make.
предпосылка- это файл который используеться как вход для создания цели
команда- это действие которое выполняет make.

В примере выше clean необходим в будущем для удаление программы, а именно файлов programma main.o function.o.  

Теперь выполним команду make:

vitaliy@fox:~/$  make
g++ -c main.cpp
g++ -c function.cpp
g++ -o programma main.o function.o
Для удаления данных выполнить make clean:

vitaliy@fox:~/$  make clean
rm programma main.o function.oа


Можно также расширить возможность файла mikefile добавив цели install и   :

vitaliy@fox:~/$ nano makefile
programma : main.o function.o
          g++ -o programma main.o function.o

main.o : main.cpp function.h
          g++ -c main.cpp

function.o : function.cpp function.cpp
          g++ -c function.cpp

clean : 
          rm programma main.o function.o

install : 
         cp programma /usr/sbin/programma

uninstall : 
         rm -f /usr/sbin/programma 


l2jserver Install. Мануал по установке в Linux Debian.

В мануале описывается пошаговый процесс инсталляции java-сервера(эмулятора) онлайн-игры LineAge2 от команды разработчиков l2jserver.

СОДЕРЖАНИЕ:
1. Ссылки
2. Подготовка
3. Создание папки с сервером
4. Установка баз
5. Настройка конфигурационных файлов
6. Регистрация сервера
7. Запуск сервера
8. Останов сервера
9. Установка Community-сервера
10. Просмотр логов сервера
11. Полезные команды
1. ССЫЛКИ

http://trac.l2jserver.com/wiki/L2J_Install
http://forum.zone-game.info/showthread.php?t=122


2. ПОДГОТОВКА

Скачиваем файлы SERVER и DATAPACK проекта l2jserver с сайта http://www.l2jserver.com/nightly/ в свою домашнюю директорию.

L2J_DataPack-unstable.zip
13304 KByte
L2J_Server-unstable.zip
12499 KByte

Инсталяцию будем проводить через менеджер screen. Что бы, в случае если удаленная сессия прирветься, что бы мы смогли подключиться обратно к сессии и продолжить установку.

root@woolf:/opt/l2j# screen -S install



3. СОЗДАНИЕ  ПАПКИ С СЕРВЕРОМ

Создадим паку в которой будет находиться сам сервер:
root@woolf:/# mkdir /opt/l2j

Перейдем в нее:
root@woolf:/# cd /opt/l2j

Распакуем файлы SERVER и DATAPACK в созданную выше папку командой unzip:
root@woolf:/opt/l2j/login# unzip /home/vitaliy/Downloads/l2j/L2J_Server-unstable.zip -d /opt/l2j/
root@woolf:/opt/l2j/login# unzip /home/vitaliy/Downloads/l2j/L2J_DataPack-unstable.zip -d /opt/l2j/


4. УСТАНОВКА БАЗ

Создадим базы для сервера l2jdb и для комьюнити-боард l2jcb:
root@woolf:/opt/l2j/# mysql -u root -p

mysql> CREATE DATABASE l2jdb;
mysql> CREATE DATABASE l2jcb;

Теперь создадим два пользователя. Превый пользователь l2jdb_user для базы сервера l2jdb; и второй l2jcb_user для базы комьюнити-борад l2jcb:

GRANT ALL PRIVILEGES ON l2jdb.* TO 'l2jdb_user'@'localhost'
 IDENTIFIED BY 'your_password' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON l2jcb.* TO 'l2jcb_user'@'localhost'
 IDENTIFIED BY 'your_password' WITH GRANT OPTION;

Выходим из бызы:
mysql> quit

Теперь нам нужно проинсталировать базу. Для этого воспользуемся скриптом database_installer.sh в паке /tools

Перейдем в паку /tools
root@woolf:/opt/l2j/# cd /opt/l2j/tools

Сделаем скрипт выполняемым:
root@woolf:/opt/l2j/tools# chmod +x database_installer.sh

Вам понадобиться ввести те логины и пароли для баз l2jdb и l2jcb, которые были созданны в mysql выше.
При первой установке выбирайте F что значит full.
root@woolf:/opt/l2j/tools#  ./database_installer.sh




















.

5. НАСТРОЙКА КОНФИГУРАЦИОННЫХ ФАЙЛОВ

Сначала укажим логин и пароль для базы l2jdb дла гейм-сервера
root@woolf:/opt/l2j/tools# cd /opt/l2j/gameserver/config
root@woolf:/opt/l2j/gameserver/config# vi server.properties
...
Login = l2jdb_user            (ВНИМАНИЕ!!! Оставляйте пробел после знака равно "=")
# Database connection password
Password = your_password          (ВНИМАНИЕ!!! Оставляйте пробел после знака равно "=")
...

Теперь укажем логин и пароль для базы l2jdb дла логин-сервера
root@woolf:/opt/l2j/gameserver/config# cd /opt/l2j/login/config

root@woolf:/opt/l2j/login/config# vi loginserver.properties
...
Login = l2jdb_user               (ВНИМАНИЕ!!! Оставляйте пробел после знака равно "=")
# Database connection password
Password = your_password            (ВНИМАНИЕ!!! Оставляйте пробел после знака равно "=")
...


Теперь укажим ip-адрес нашего сервера

root@woolf:/opt/l2j/login/config# cd /opt/l2j/gameserver/config
root@woolf:/opt/l2j/gameserver/config# vi ipconfig.xml
...
gameserver address="195.234.200.171"
...


6. РЕГИСТРАЦИЯ СЕРВЕРА

Зарегестрируем сервер.
Переходим в:
root@woolf:/opt/l2j/tools# cd /opt/l2j/login/

Делаем скрипт выполняемым:
root@woolf:/opt/l2j/login# chmod +x ./RegisterGameServer.sh

Запускаем скрипт. Выбираем пункты 2, 1 потом 5.
root@woolf:/opt/l2j/login# ./RegisterGameServer.sh
______
GSRegister
1 - Register GameServer
2 - List GameServers Names and IDs
3 - Remove GameServer
4 - Remove ALL GameServers
5 - Exit
Choice: 2
1    | Bartz              | Free    |
2    | Sieghardt          | Free    |
3    | Kain               | Free    |
4    | Lionna             | Free    |
126  | 126                | Free    |
127  | ???                | Free    |
_______________________
GSRegister
1 - Register GameServer
2 - List GameServers Names and IDs
3 - Remove GameServer
4 - Remove ALL GameServers
5 - Exit
Choice: 1
Enter desired ID:
5

Скапируем полученный hexid.txt в папку гейм-сервера /gameserver/config/
root@woolf:/opt/l2j/login# cp /opt/l2j/login/hexid.txt /opt/l2j/gameserver/config/



7. ЗАПУСК СЕРВЕРА

Сделаемы скрипты запуска исполняемыми с помощбю команды "chmod +x"

root@woolf:/opt/l2j/login# cd /opt/l2j/login
root@woolf:/opt/l2j/login# chmod +x ./startLoginServer.sh
root@woolf:/opt/l2j/login# chmod +x ./LoginServer_loop.sh

root@woolf:/opt/l2j/login# cd /opt/l2j/gameserver
root@woolf:/opt/l2j/gameserver# chmod +x ./startGameServer.sh
root@woolf:/opt/l2j/gameserver# chmod +x ./GameServer_loop.sh

Теперь, наконец, запускаем наш сервер. Выполняем скрипты логин-сервера и гейм-сервера:

root@woolf:/opt/l2j/gameserver# ./startLoginServer.sh
root@woolf:/opt/l2j/gameserver# ./startGameServer.sh



8. ОСТНОВ СЕРВЕРА

    Для останова сервера необходимо остоновить выполнение скриптов запуска, а также java програм. Для этого, снчала, просмотрите номер процесса (pid_pocess) скриптов и java-программ командой ps ax, а потом выполните команду kill с ключом -9 или -15 для всех процессов по очереди.


root@woolf:/opt/l2j# ps ax|grep Ser
21996 pts/1    S
22086 pts/3    S+     0:00 /bin/sh ./startCommunityServer.sh
22087 pts/3    Sl+    0:05 java -Xms128m -Xmx128m -cp ./../libs/*:l2jcommunity.jar com.l2jserver.communityserver.L2CommunityServer
23852 pts/5    S      0:00 /bin/bash ./GameServer_loop.sh
23855 pts/5    Sl     2:12 java -Djava.util.logging.manager=com.l2jserver.util.L2LogManager -Xms1024m -Xmx1024m -cp ./../libs/*:l2jserver.jar com.l2jserver.gameserver.GameServer



а)      root@woolf:/opt/l2j# kill -TERM 23855           [Рекомендуеться]
         или что тоже самое:
         root@woolf:/opt/l2j# kill -15 23855
"kill -15 pid_pocess"Сигнал SIGTERM (номер 15) вызывает «вежливое» завершение программы. Получив этот сигнал, программа может выполнить необходимые перед завершением операции (например, высвободить занятые ресурсы). Получение SIGTERM свидетельствует не об ошибке в программе, а о желании ОС или пользователя завершить ее.


б)       root@woolf:/opt/l2j# kill -KILL 23855
          или что тоже самое:
          root@woolf:/opt/l2j# kill -9 23855
 "kill -9 pid_pocess"Сигнал SIGKILL (номер 9) завершает работу программы. Программа не может ни обработать, ни игнорировать этот сигнал. Применяйте этот сигнал если программа не отвечает на запросы или находиться в зависшем сосотояние.

Либо останавливаем или перезапускаем гейм-сервер через GM-панель в клиенте.

Приостоновить(фриз) работу сервера можно командами:

root@woolf:/opt/l2j# kill -STOP 23855
root@woolf:/opt/l2j# kill -CONT 23855


Также можно повысить или понизить приоритет процессов командой nice. Диапазон значений приоритета, от -20 (найвысший) до +19(найменьший)
root@woolf:/opt/l2j# nice -2 23855 
Эта команда повысит приоритет процесса до "-2" 



9. УСТАНОВКА COMMUNITY-СЕРВЕРА

инструкция: http://l2jserver.com/wiki/Community_Board_Server
Комьюнити-сервер по умаолчанию не устанавливается, поэтому его нада установливать отдельно после установки гейм-сервера и дата-пака.

1. Скачать и скомпелировать из SVN(http://svn.l2jserver.com/trunk/L2_CommunityServer) community-сервер. Распаковать полученный файл l2j-community.zip в папку с сервером /opt/l2j/ при этом заменяя те файлы которые нобходимо.
root@woolf:/# unzip /home/vitaliy/workspace/CommunityServer/build/l2j-community.zip -d /opt/l2j/



2. Изменить значения параметров CommunityServerHexId/CommunityServerSqlDpId в файле gameserver/config/CommunityServer.properties Значения взять из файла gameserver/config/hexid.txt
root@woolf:/opt/l2j# nano /opt/l2j/gameserver/config/CommunityServer.properties

....
EnableCommunityBoard = True     (ВНИМАНИЕ!!! Оставляйте пробел после знака равно "=")
CommunityServerHostname = localhost
CommunityServerPort = 9013
CommunityServerSqlDpId = 1       (ВНИМАНИЕ!!! Оставляйте пробел после знака равно "=")
CommunityServerHexId = 478ac9e43f345f95dc345b0cdc60e935      (ВНИМАНИЕ!!! Оставляйте пробел)
.... 



3. Изменяем параметр  sqlDPId в файле ommunity/data/top/servertopdir.xml
root@woolf:/opt/l2j/cb_sql# nano /opt/l2j/community/data/top/servertopdir.xml
....
server dir="bartz" sqlDPId="1"      !!! НЕНУЖЕН ПРОБЕЛ после знака "="
....


4. Далее проимпортировать табилцы из папки /opt/l2j/cb_sql в базу l2jcb.

Перехоидм в папку с файлами:

root@woolf:/# cd /opt/l2j/cb_sql/

Заходим в mysql
root@woolf:/# mysql -u root -p

Переходим в базу 2jcb:
mysql> use l2jcb;
Database changed

Просмотрим таблицы:
mysql> SHOW TABLES;
Empty set (0.00 sec)

Импортируем таблицы в базу:
mysql> source clan_introductions.sql
Query OK, 0 rows affected (0.17 sec)

mysql> source comments.sql
Query OK, 0 rows affected (0.10 sec)

mysql> source forums.sql
Query OK, 0 rows affected (0.06 sec)

mysql> source posts.sql
Query OK, 0 rows affected (0.08 sec)

mysql> source registered_gameservers.sql
Query OK, 0 rows affected (0.06 sec)

mysql> source topics.sql
Query OK, 0 rows affected (0.07 sec)

mysql> SHOW TABLES;
+---------------------------+
| Tables_in_l2jcb      |
+---------------------------+
| clan_introductions |
| comments            |
| forums                 |
| posts                   |
| registered_gameservers |
| topics                  |
+--------------------------+
6 rows in set (0.00 sec)

mysql> quit
Bye

База готова для использования.



5. Пропишем в базе l2jcb в таблице registered_gameservers параметры CommunityServerHexId и CommunityServerSqlDpId. Для этого зайдите в базу при помощи mysql, phpmyadmin или navicat и внесите данные:



6. Прописать логин и пароль к базе l2jcb для комьюнити-сервера:
root@woolf:/opt/l2j# nano /opt/l2j/community/config/communityserver.properties
....
Login = l2jcb_user          (ВНИМАНИЕ!!! Оставляйте пробел после знака равно "=")
Password = your_password              (ВНИМАНИЕ!!! Оставляйте пробел после знака равно "=")
....

7. Теперь необходимо сделать скрипт запуска исполняемым:

root@woolf:/# chmod +x  /opt/l2j/community/startCommunityServer.sh

Комьюнити-сервер готов к запуску!



10. ПРОСМОТР ЛОГОВ СЕРВЕРА

Команды для гейм-, логин-, и комьюнити- серверов. Каждую команду открывать в новом окне программы screen (Ctrl+A и потом "с"):

root@woolf:/opt/l2j# tail -f /opt/l2j/gameserver/log/stdout.log
root@woolf:/opt/l2j# tail -f /opt/l2j/login/log/stdout.log
root@woolf:/opt/l2j# tail -f /opt/l2j/community/log/stdout.log


11. ПОЛЕЗНЫЕ КОМАНДЫ
полезные команды 
Использование программы screen

Просмотр процессов сервера:
root@woolf:/opt/l2j# ps ax|grep Ser

Остонов вервера:
root@woolf:/opt/l2j# kill -TERM pid_pocess
root@woolf:/opt/l2j# kill -KILL pid_pocess

Приостановить работу процессов:
root@woolf:/opt/l2j# kill -STOP pid_pocess
root@woolf:/opt/l2j# kill -CONT pid_pocess

Можно повысить или понизить приоритет процессов (http://rus-linux.net/MyLDP/BOOKS/MDK-10/process-priority.html). Диапазон значений приоритета, от -20 (найвысший) до +19(найменьший).
Эта команда повысит приоритет процесса до "-2":
root@woolf:/opt/l2j# nice -2 pid_pocess