Используем leto_db сервер на UBUNTU

Вот решил поделиться. На Sourceforge этого проекта есть cvs, но у меня хитрый прокси и я не смог настроить. Короче, скачал через Веб последний архив и распаковал в папку ~/sources/letodb. затем исправил пути в файле Makefile.linux (принимаю, что Харбор установлен по умолчанию в /usr/local)

~/sources/letodb$ cat Makefile.linux
------------------------------------------------------------------------------------------------------------------------

# $Id: Makefile.linux,v 1.15 2010/06/10 05:12:11 alkresin Exp $
# Building of librddleto.a

# uncomment this line if you want to build letodb with xharbour
#XHARBOUR = yes

ifeq ($(HB_ROOT),)
HRB_DIR = /usr/local/
else
HRB_DIR = $(HB_ROOT)
endif

ifeq ($(XHARBOUR),)
HRB_LIBS= -lhbvm -lhbrtl -lhbcpage -lhblang -lhbrdd -lhbrtl -lhbvm -lhbmacro -lhbpp -lgtstd -lrddntx -lrddcdx -lrddfpt -lhbcommon -lhbsix
else
HRB_LIBS= -lvm -lrtl -lcodepage -llang -lrdd -lrtl -lvm -lmacro -lpp -lgtstd -ldbfntx -ldbfcdx -ldbffpt -lcommon -lhbsix -lpcrepos
endif

LIB_DIR = $(HRB_DIR)/lib/harbour
INC_DIR = include
OBJ_DIR = obj/linux
LETO_LIB_DIR = lib
LETO_BIN_DIR = bin

SERVER_DIR=source/server
CLIENT_DIR=source/client
COMMON_DIR=source/common

CFLAGS = -Wall -O3

vpath %.a $(LIB_DIR)
vpath %.o $(OBJ_DIR)
vpath %.c $(OBJ_DIR):$(SERVER_DIR):$(CLIENT_DIR):$(COMMON_DIR)
vpath %.prg $(SERVER_DIR):$(CLIENT_DIR):$(COMMON_DIR)

$(OBJ_DIR)/%.c : %.prg
    $(HRB_DIR)/bin/harbour -n -w -es2 -q0 -d__LINUX__ -d__LINUX_DAEMON__ -I$(HRB_DIR)/include/harbour -I$(INC_DIR) -o$@ $<

%.o : %.c
    gcc $(CFLAGS) -c -I$(INC_DIR) -I$(HRB_DIR)/include/harbour -o $@ $<

$(OBJ_DIR)/%.o : %.c
    gcc $(CFLAGS) -c -I$(INC_DIR) -I$(HRB_DIR)/include/harbour -o $@ $<


$(LETO_LIB_DIR)/%.a ::
    ar rc $@ $^

all: \
   $(LETO_LIB_DIR)/librddleto.a \
   $(LETO_BIN_DIR)/letodb

$(LETO_LIB_DIR)/librddleto.a : \
   $(OBJ_DIR)/leto1.o \
   $(OBJ_DIR)/letomgmn.o \
   $(OBJ_DIR)/hbip.o \
   $(OBJ_DIR)/net.o \
   $(OBJ_DIR)/common_c.o \
   $(OBJ_DIR)/blowfish.o \
   $(OBJ_DIR)/rddsys.o

$(LETO_BIN_DIR)/letodb : \
   $(OBJ_DIR)/server.o \
   $(OBJ_DIR)/common.o \
   $(OBJ_DIR)/hbip.o \
   $(OBJ_DIR)/common_c.o \
   $(OBJ_DIR)/blowfish.o \
   $(OBJ_DIR)/letocore.o \
   $(OBJ_DIR)/letofunc.o \
   $(OBJ_DIR)/letoacc.o \
   $(OBJ_DIR)/letovars.o \
   $(OBJ_DIR)/leto_lnx.o \
   $(OBJ_DIR)/errint.o \
   $(OBJ_DIR)/errorsys.o
    gcc $^ -o$(LETO_BIN_DIR)/letodb -L$(LIB_DIR) -Wl,--start-group $(HRB_LIBS) -Wl,--end-group -lm -lpthread

clean:
    -(rm -fR obj/linux/* lib/* bin/* )

----------------------------------------------------------------------------------
Далее, создаем папки ./lib , ./obj/linux и собираем сервер

make -fMakefile.linux

в папке bin появляется бинарник, а в папке lib - библиотека.
Следующий этап - сборка тестового примера. для этого идем с папку tests и делаем следующее:

hbmk2 -l../lib/librddleto.a test_ta.prg

конфигурируем сервер (делаем letodb.ini)

~/sources/letodb/tests$ cat ../bin/letodb.ini
[MAIN]
Port = 2812
Log = letodb.log
DataPath = /home/user/data/
EnableFileFunc = 1
ShareTables = 0
 

создаем папку /hime/user/data/ и запускаем server:

bin/letodb start

в letodb.log появляется запись о запуске сервера

запускаем тестовый пример

~/sources/letodb/tests$ ./test_ta
  
Start                                                                                                                                                                              
Files has been created
Files has been opened and indexed
Records has been added          
Records has been changed
End
                    

в созданной папке появились файлы:


-rw-rw-rw- 1 user user   3072 2011-01-12 16:44 Nakl1.cdx
-rw-rw-rw- 1 user user    245 2011-01-12 16:44 Nakl1.dbf
-rw-rw-rw- 1 user user   1024 2011-01-12 16:44 Nakl1.fpt
-rw-rw-rw- 1 user user   3072 2011-01-12 16:44 Nakl2.cdx
-rw-rw-rw- 1 user user    415 2011-01-12 16:44 Nakl2.dbf
-rw-rw-rw- 1 user user   1024 2011-01-12 16:44 Nakl2.fpt

Еще хотелось бы решить проблему с правами, но это уже вопрос тонкой настройки, чтобы сервер запускался от выделенного пользователя и никто другой не мог бы использовать файлы БД.

Далее идем в папку ./utils/manager/ и собираем консоль управления сервером.

hbmk2 -l../../lib/librddleto.a console.prg

затем запустим ее и посмотрим, что она может:

./console 127.0.0.1:2812

  
Connecting to //127.0.0.1:2812/                                                                                                                                                    
Connected to Leto DB Server v.0.95
                                 
Users   current:           1   Max:            1                                                                                                                                   
Tables  current:           0   Max:            2
Time elapsed:   1 day 1 hour 28                
Operations:              173  
KBytes sent:               9
KBytes read:               4
Transactions All:          9   Bad:            0
Waiting current:       0.000   Max:        0.000
                                                                                                                                                                                   
Press ESC to quit, 1 - connection info, 2 - users list, 3 - tables, 9 - administration


тут можно посмотреть статистику работы, создать пользователей, сменить права.


1 комментарий:

Анонимный комментирует...

Спасибо за руководство по шагам !
Хотелось бы узнать как работает сервер, сколько клиентов используется. Ну и немного статистики...