作者:王华涛
acl服务器模块acl_master,通过配置文件的配置项来控制工作进程的运行。下面以例子ioctl_echo3来讲解如何配置运行。
1)下载acl源码包acl.3.0.3.src.tgz
2) #tar xzvf acl.3.0.3.src.tgz将包进行解压。
3)在acl/dist/master目录下执行命令:
#chmod a+x setup.sh
#./setup.sh /opt/acl
/opt/acl是将程序发布到这个目录下。
执行脚本后,将自动建立相应子目录在/opt/acl路径下。
4)将ioctl_echo3拷贝到/opt/acl/libexec/目录下
5)将ioctl_echo3的配置文件ioctl_echo.cf拷贝到/opt/acl/conf/service目录下。
6)将ioctl_echo.cf中的程序名修改为ioctl_echo3
ioctl_echo.cf的配置内容如下:
service server {
master_disable = no
master_service = 127.0.0.1:5001
master_type = inet
master_private = n
master_unpriv = n
master_chroot = n
master_wakeup = -
master_maxproc = 2
master_prefork = 2
master_command = ioctl_echo3
master_log = /opt/acl/var/log/ioctl_echo.log
ioctl_use_limit = 100
ioctl_idle_limit = 120
ioctl_pid_dir = /opt/acl/var/pid
ioctl_queue_dir = /opt/acl/var
ioctl_rw_timeout = 120
ioctl_buf_size = 8192
ioctl_max_accept = 25
ioctl_owner = root
ioctl_delay_sec = 0
ioctl_delay_usec = 500
ioctl_event_mode = select
ioctl_max_threads = 250
ioctl_stacksize = 0
ioctl_access_allow = 127.0.0.1:255.255.255.255, 127.0.0.1:127.0.0.1
ioctl_quick_abort = 1
app_client_idle_limit = 12
debug_mem = 1
}
main.cf的配置内容如下:
default_process_limit = 250
owner_user = root
master_owner = root
owner_group = root
service_throttle_time = 60
process_name = acl_master
buf_size = 81920
rw_timeout = 60
event_delay_sec = 1
event_delay_usec = 5000
daemon_directory = /opt/acl/libexec
log_file = /opt/acl/var/log/acl_master
service_directory = /opt/acl/conf/service
queue_directory = /opt/acl/var
pid_file = /opt/acl/var/pid/acl_master.pid
scan_subdir = 0
7)在/opt/acl/sh目录下执行start.sh就可以启动acl_master进程和ioctl_echo3进程了。
8) 通过telnet 127.0.0.1 5001进行验证
评论
#0 0x0000003099030265 in raise () from /lib64/libc.so.6
#1 0x0000003099031d10 in abort () from /lib64/libc.so.6
#2 0x00000030990296e6 in __assert_fail () from /lib64/libc.so.6
#3 0x000000000040524e in acl_msg_fatal (fmt=0x437df7 "%s(%d)->%s: exec %s: %s")
at src/stdlib/acl_msg.c:307
#4 0x000000000042283c in acl_master_spawn (serv=0xdf1b500)
at src/master/framework/master_spawn.c:237
#5 0x000000000043211b in master_prefork (serv=0xdf1b500)
at src/master/framework/master_avail.c:52
#6 acl_master_avail_listen (serv=0xdf1b500)
at src/master/framework/master_avail.c:104
#7 0x00000000004218b7 in acl_master_start_service (serv=0xdf1b500)
at src/master/framework/master_service.c:58
#8 0x000000000041ffbe in acl_master_config ()
at src/master/framework/master_conf.c:113
#9 0x000000000040430d in main (argc=5, argv=<value optimized out>)
at src/master/daemon/master.c:152
每次都会在acl_msg_fatal core掉 这是为什么???忘求解答
问题解决了 是配置文件的问题
#0 0x0000003099030265 in raise () from /lib64/libc.so.6
#1 0x0000003099031d10 in abort () from /lib64/libc.so.6
#2 0x00000030990296e6 in __assert_fail () from /lib64/libc.so.6
#3 0x000000000040524e in acl_msg_fatal (fmt=0x437df7 "%s(%d)->%s: exec %s: %s")
at src/stdlib/acl_msg.c:307
#4 0x000000000042283c in acl_master_spawn (serv=0xdf1b500)
at src/master/framework/master_spawn.c:237
#5 0x000000000043211b in master_prefork (serv=0xdf1b500)
at src/master/framework/master_avail.c:52
#6 acl_master_avail_listen (serv=0xdf1b500)
at src/master/framework/master_avail.c:104
#7 0x00000000004218b7 in acl_master_start_service (serv=0xdf1b500)
at src/master/framework/master_service.c:58
#8 0x000000000041ffbe in acl_master_config ()
at src/master/framework/master_conf.c:113
#9 0x000000000040430d in main (argc=5, argv=<value optimized out>)
at src/master/daemon/master.c:152
每次都会在acl_msg_fatal core掉 这是为什么???忘求解答
root@17kailu:/acl# make install
begin copy file...
cp -f lib_acl/master/acl_master ./dist/master/libexec//
cp -f lib_acl/lib/lib_acl.a ./dist/lib//
cp -Rf lib_acl/include/* ./dist/include/acl/
cp -f lib_protocol/lib/lib_protocol.a ./dist/lib//
cp -Rf lib_protocol/include/* ./dist/include/protocol/
cp -f lib_acl_cpp/lib/lib_acl_cpp.a ./dist/lib//
cp -Rf lib_acl_cpp/include/acl_cpp/* ./dist/include/acl_cpp/
看了下我的uname -a
Linux 17kailu 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2 x86_64 GNU/Linux
uname -s
Linux
uname -p
unknown
发现没有复制正确的文件到指定位置
看来在安装脚本在 Debian 下有问题,你可以修改一下
root@17kailu:/acl# make install
begin copy file...
cp -f lib_acl/master/acl_master ./dist/master/libexec//
cp -f lib_acl/lib/lib_acl.a ./dist/lib//
cp -Rf lib_acl/include/* ./dist/include/acl/
cp -f lib_protocol/lib/lib_protocol.a ./dist/lib//
cp -Rf lib_protocol/include/* ./dist/include/protocol/
cp -f lib_acl_cpp/lib/lib_acl_cpp.a ./dist/lib//
cp -Rf lib_acl_cpp/include/acl_cpp/* ./dist/include/acl_cpp/
看了下我的uname -a
Linux 17kailu 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2 x86_64 GNU/Linux
uname -s
Linux
uname -p
unknown
发现没有复制正确的文件到指定位置
再将例子中make好的程序放到该 目录 下,再去执行sh/start.sh 报没有找到acl_master
像这种问题怎么解决呢,看了下setup.sh脚本,是/acl/dist/master/libexec/对应版本下文件,但我发现/acl/dist/master/libexec/对应版本下是没有文件的
你还可以参考另一篇部署的文章:http://zsxxsz.iteye.com/blog/1773413
再将例子中make好的程序放到该 目录 下,再去执行sh/start.sh 报没有找到acl_master
像这种问题怎么解决呢,看了下setup.sh脚本,是/acl/dist/master/libexec/对应版本下文件,但我发现/acl/dist/master/libexec/对应版本下是没有文件的
你可以在 acl/lib_acl 下 make,然后 make install,这样 acl_master 程序会被拷贝到 acl/dist/master/libexec/linux64(或linux32)目录下,然后将你写的程序也拷贝至相同目录下,同时将配置文件拷贝至 acl/dist/master/conf/service 下,这样就可以运行 ./setup.sh 了,这个 setup.sh 脚本会拷贝程序及配置文件至你指定的目录,同时将配置文件中的路径进行替换。
再将例子中make好的程序放到该 目录 下,再去执行sh/start.sh 报没有找到acl_master
像这种问题怎么解决呢,看了下setup.sh脚本,是/acl/dist/master/libexec/对应版本下文件,但我发现/acl/dist/master/libexec/对应版本下是没有文件的
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
Ï̳߳صÄ×î´óÏß³ÌÊý
ioctl_max_threads = 250
# Ï̵߳ĶÑÕ»¿Õ¼ä´óС£¬µ¥Î»Îª×Ö½Ú£¬0±íʾʹÓÃϵͳȱʡֵ
ioctl_stacksize = 0
# ÔÊÐí·ÃÎÊ udserver µÄ¿Í»§¶ËIPµØÖ··¶Î§
ioctl_access_allow = 127.0.0.1:255.255.255.255, 127.0.0.1:127.0.0.1
# µ± acl_master Í˳öʱ£¬Èç¹û¸ÃÖµÖÃ1Ôò¸Ã³ÌÐò²»µÈËùÓÐÁ¬½Ó´¦ÀíÍê±Ï±ãÁ¢¼´Í˳ö
ioctl_quick_abort = 1
## app_main.c ÐèÒªµÄ²ÎÊýÏî
# ¿Í»§¶ËÁ¬½ÓµÄ×î´ó¿ÕÏÐʱ¼ä·§Öµ
app_client_idle_limit = 12
像这种
本机系统centos6.2,acl版本acl.3.0.13.tgz,本机已经是utf-8编码,其他中文文件没有乱码,可不可以去掉中文,用英文表示