~/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 комментарий:
Спасибо за руководство по шагам !
Хотелось бы узнать как работает сервер, сколько клиентов используется. Ну и немного статистики...
Отправить комментарий