《2022年2022年将Apachehttp服务器改写为Socket的Server》由会员分享,可在线阅读,更多相关《2022年2022年将Apachehttp服务器改写为Socket的Server(15页珍藏版)》请在金锄头文库上搜索。
1、将 Apache http 服务器改写为Socket 的 Server 安装./configure -prefix=/public/interface/callcenter -with-mpm=worker -with-program-name=callcenter -disable-mime -enable-static-support -disable-cache -disable-generators -disable-mappers -disable-ssl -disable-aaa -disable-experimental -disable-metadata -disable-da
2、v -disable-filters -disable-proxy -disable-generators 删除 module目录下除http,cache路径外其他的module(其他目录下只有makefile) 修改 ./modules.c文件只留下core_module,mpm_worker_module,http_module 修 改 Makefile中 只 留 的install-( install-conf install-error install-build) 只 保 留install-conf INSTALL_HEADERS 去掉没用的目录下的*.h 修改 ./build/con
3、fig_vars.mk BUILTIN_LIBS = modules/http/libmod_http.la 修改只剩下libmod_http.la MODULE_DIRS = http 修改只剩下http MODULE_CLEANDIRS = 修改为空EXTRA_CPPFLAGS = -U_STR_ -D_THREAD_SAFE -D_USE_IRS -qthreaded -q64 -D_XCOFF32_ -D_XCOFF64_ EXTRA_CFLAGS = -g -qHALT=E -qthreaded -q64 -D_XCOFF32_ -D_XCOFF64_ 名师资料总结 - - -精品资
4、料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 15 页 - - - - - - - - - EXTRA_LDFLAGS = -L/product1/boss/interface/callcenter_all/srclib/apr-util/xml/expat/lib EXTRA_LIBS =$(TUXDIR)/lib/wstpinit.o -L$(TUXDIR)/lib -lwsc -lbuft -lgpnet -lfml -lfml32 -lengine -lpthread -lnsl -lz -
5、lm -lcrypt -ldl EXTRA_INCLUDES = -I/product1/boss/UNIX_DEV/ -I$(TUXDIR)/include -I/product1/boss/interface/callcenter_all/include -I$(top_builddir)/srclib/pcre -I. -I$(top_srcdir)/os/$(OS_DIR) -I$(top_srcdir)/server/mpm/$(MPM_SUBDIR_NAME) -I$(top_srcdir)/modules/http -I/product1/boss/interface/callc
6、enter_all/srclib/apr/include -I/product1/boss/interface/callcenter_all/srclib/apr-util/include -I/product1/boss/interface/callcenter_all/srclib/apr-util/xml/expat/lib /hp可以不改build/apr_rules.mk srclib/apr/build/apr_rules.mkEXTRA_CFLAGS=-g -qHALT=E -q64 EXTRA_CPPFLAGS=-U_STR_ -D_THREAD_SAFE -D_USE_IRS
7、 -D_LARGEFILE64_SOURCE -D_XCOFF32_ -D_XCOFF64_ EXTRA_LDFLAGS=-Wl,-brtl -b64 EXTRA_LIBS=-lpthread EXTRA_INCLUDES= 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - - - - - - srclib/apr-util/build/rules.mk EXTRA_CFLAGS=-g -qHALT=E -q64 EXTRA_CPPFLAGS=-U
8、_STR_ -D_THREAD_SAFE -D_USE_IRS -D_LARGEFILE64_SOURCE -D_XCOFF32_ -D_XCOFF64_ EXTRA_LDFLAGS=-Wl,-brtl -b64 EXTRA_LIBS=-lpthread /hp可以不改./build/libtool ./srclib/apr/libtool ./srclib/apr-util/xml/expat/libtool 增加 AR_FLAGS=-X64 cru server/Makefile: EXPORT_DIRS = $(top_srcdir)/include $(top_srcdir)/os/$
9、(OS_DIR) $(top_srcdir)/modules/http 把 include下 struct.h,define.h copy到 include路径下修改 include下 httpd.h的 conn_rec结构 ,增加 : long in_len; char *in_buffer; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 15 页 - - - - - - - - - /* 发送缓存长度 */ long out_len; char *out_buffe
10、r; char *send_buff; char *recv_buff; int connfd; char head_buff80; char *head; char *send_pos; long send_left; char *recv_pos; long recv_left; apr_socket_t *client_socket; 修改 server/core.c的 core_pre_connection函数增加 : 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,
11、共 15 页 - - - - - - - - - c-in_len = 0; c-in_buffer = (char *)apr_pcalloc(c-pool, 1024 * 2+1); c-out_len = 0; c-out_buffer = (char *)apr_pcalloc(c-pool, 1024 * 300+1); c-in_len = 0; c-send_buff = (char *)apr_pcalloc(c-pool, 1024 * 300+1); c-recv_buff = (char *)apr_pcalloc(c-pool, 1024 * 2+1); c-clien
12、t_socket=csd; 注释 : ap_add_input_filter_handle(ap_core_input_filter_handle, net, NULL, net-c); ap_add_output_filter_handle(ap_core_output_filter_handle, net, NULL, net-c); worker.c中增加 : pthread_mutex_t env_mutex=PTHREAD_MUTEX_INITIALIZER; pthread_cond_t env_cond=PTHREAD_COND_INITIALIZER;注意 modules/ht
13、tp下的 modules.mk一定要齐 . 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 15 页 - - - - - - - - - 2.2.0 日志汉字问题解决?修改 server/log.c文件的log_error_core函数 : 把#ifndef AP_UNSAFE_ERROR_LOG_UNESCAPEDif (apr_vsnprintf(scratch, MAX_STRING_LEN - len, fmt, args) len += ap_escape_er
14、rorlog_item(errstr + len, scratch,MAX_STRING_LEN - len); #else len += apr_vsnprintf(errstr + len, MAX_STRING_LEN - len, fmt, args); #endif 注释掉:用: len += apr_vsnprintf(errstr + len, MAX_STRING_LEN - len, fmt, args); 取代注释掉最后的: ap_run_error_log(file, line, level, status, s, r, pool, errstr + errstrlen)
15、;server/Makefile修改 : export_files: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 15 页 - - - - - - - - - tmp=export_files_unsorted.txt; rm -f $tmp & touch $tmp; for dir in $(EXPORT_DIRS); do ls $dir/*.h $tmp; done; sort -u $tmp $; rm -f $tmp 把 EXPORT_DIRS_APR 去
16、掉了,因为在include下都有需要的.h 文件,并且去掉include下os.h mod_core.h unixd.h # 这三个文件在modules/http/mod_core.h 和 os/unix/os.h os/unix/unixd.h 因此去掉下面部分# for dir in $(EXPORT_DIRS_APR); do # ls $dir/apru.h $tmp; # ls $dir/apru_*.h $tmp; # done; 把 httpd-mpm.conf的内容加在httpd.conf后面- #将 apache编译成静态库连接./build/libtool 名师资料总结 -
17、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 15 页 - - - - - - - - - ./srclib/apr/libtool ./srclib/apr-util/xml/expat/libtool 改build_libtool_libs=no build_old_libs=yes 谢灵杰15:14:58 安装./configure -prefix=/product2/boss/interface/callcenter -with-mpm=worker -with-program
18、-name=callcenter -disable-mime -enable-static-support -disable-cache -disable-generators -disable-mappers -disable-ssl -disable-aaa -disable-experimental -disable-metadata -disable-dav -disable-filters -disable-proxy -disable-generators 删除 module目录下除http,cache路径外其他的module(其他目录下只有makefile) 修改 ./modul
19、es.c文件只留下core_module,mpm_worker_module,http_module 修 改 Makefile中 只 留 的install-( install-conf install-error install-build) 只 保 留install-conf INSTALL_HEADERS 去掉没用的目录下的*.h 修改 ./build/config_vars.mk BUILTIN_LIBS = modules/http/libmod_http.la 修改只剩下libmod_http.la MODULE_DIRS = http 修改只剩下http MODULE_CLEAND
20、IRS = 修改为空名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 15 页 - - - - - - - - - EXTRA_CPPFLAGS = -U_STR_ -D_THREAD_SAFE -D_USE_IRS -qthreaded -q64 -D_XCOFF32_ -D_XCOFF64_ EXTRA_CFLAGS = -g -qHALT=E -qthreaded -q64 -D_XCOFF32_ -D_XCOFF64_ EXTRA_LDFLAGS = -L/prod
21、uct1/boss/interface/callcenter_all/srclib/apr-util/xml/expat/lib EXTRA_LIBS =$(TUXDIR)/lib/wstpinit.o -L$(TUXDIR)/lib -lwsc -lbuft -lgpnet -lfml -lfml32 -lengine -lpthread -lnsl -lz -lm -lcrypt -ldl EXTRA_INCLUDES = -I/product1/boss/UNIX_DEV/ -I$(TUXDIR)/include -I/product1/boss/interface/callcenter
22、_all/include -I$(top_builddir)/srclib/pcre -I. -I$(top_srcdir)/os/$(OS_DIR) -I$(top_srcdir)/server/mpm/$(MPM_SUBDIR_NAME) -I$(top_srcdir)/modules/http -I/product1/boss/interface/callcenter_all/srclib/apr/include -I/product1/boss/interface/callcenter_all/srclib/apr-util/include -I/product1/boss/inter
23、face/callcenter_all/srclib/apr-util/xml/expat/lib /hp可以不改build/apr_rules.mk srclib/apr/build/apr_rules.mkEXTRA_CFLAGS=-g -qHALT=E -q64 EXTRA_CPPFLAGS=-U_STR_ -D_THREAD_SAFE -D_USE_IRS -D_LARGEFILE64_SOURCE 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 15 页 - -
24、 - - - - - - - -D_XCOFF32_ -D_XCOFF64_ EXTRA_LDFLAGS=-Wl,-brtl -b64 EXTRA_LIBS=-lpthread EXTRA_INCLUDES= srclib/apr-util/build/rules.mk EXTRA_CFLAGS=-g -qHALT=E -q64 EXTRA_CPPFLAGS=-U_STR_ -D_THREAD_SAFE -D_USE_IRS -D_LARGEFILE64_SOURCE -D_XCOFF32_ -D_XCOFF64_ EXTRA_LDFLAGS=-Wl,-brtl -b64 EXTRA_LIBS
25、=-lpthread /hp可以不改./build/libtool ./srclib/apr/libtool ./srclib/apr-util/xml/expat/libtool 增加 AR_FLAGS=-X64 cru server/Makefile: EXPORT_DIRS = $(top_srcdir)/include $(top_srcdir)/os/$(OS_DIR) $(top_srcdir)/modules/http 把 include下 struct.h,define.h copy到 include路径下名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
26、 - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 15 页 - - - - - - - - - 修改 include下 httpd.h的 conn_rec结构 ,增加 : long in_len; char *in_buffer; /* 发送缓存长度 */ long out_len; char *out_buffer; char *send_buff; char *recv_buff; int connfd; char head_buff80; char *head; char *send_pos; long send_left; char
27、*recv_pos; long recv_left; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 15 页 - - - - - - - - - apr_socket_t *client_socket; 修改 server/core.c的 core_pre_connection函数增加 : c-in_len = 0; c-in_buffer = (char *)apr_pcalloc(c-pool, 1024 * 2+1); c-out_len = 0; c-out_
28、buffer = (char *)apr_pcalloc(c-pool, 1024 * 300+1); c-in_len = 0; c-send_buff = (char *)apr_pcalloc(c-pool, 1024 * 300+1); c-recv_buff = (char *)apr_pcalloc(c-pool, 1024 * 2+1); c-client_socket=csd; 注释 : ap_add_input_filter_handle(ap_core_input_filter_handle, net, NULL, net-c); ap_add_output_filter_
29、handle(ap_core_output_filter_handle, net, NULL, net-c); worker.c中增加 : 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 15 页 - - - - - - - - - pthread_mutex_t env_mutex=PTHREAD_MUTEX_INITIALIZER;pthread_cond_t env_cond=PTHREAD_COND_INITIALIZER; 注意 modules/http下的
30、modules.mk一定要齐 . 2.2.0 日志汉字问题解决?修改 server/log.c文件的log_error_core函数 : 把#ifndef AP_UNSAFE_ERROR_LOG_UNESCAPEDif (apr_vsnprintf(scratch, MAX_STRING_LEN - len, fmt, args) len += ap_escape_errorlog_item(errstr + len, scratch, MAX_STRING_LEN - len); #else len += apr_vsnprintf(errstr + len, MAX_STRING_LEN
31、- len, fmt, args); #endif 注释掉:用: len += apr_vsnprintf(errstr + len, MAX_STRING_LEN - len, fmt, args); 取代名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 15 页 - - - - - - - - - 注释掉最后的: ap_run_error_log(file, line, level, status, s, r, pool, errstr + errstrlen);se
32、rver/Makefile修改 : export_files: tmp=export_files_unsorted.txt; rm -f $tmp & touch $tmp; for dir in $(EXPORT_DIRS); do ls $dir/*.h $tmp; done; sort -u $tmp $; rm -f $tmp 把 EXPORT_DIRS_APR 去掉了,因为在include下都有需要的.h 文件,并且去掉include下os.h mod_core.h unixd.h # 这三个文件在modules/http/mod_core.h 和 os/unix/os.h os/u
33、nix/unixd.h 因此去掉下面部分# for dir in $(EXPORT_DIRS_APR); do # ls $dir/apru.h $tmp; # ls $dir/apru_*.h $tmp; # done; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 15 页 - - - - - - - - - 把 httpd-mpm.conf的内容加在httpd.conf后面- #将 apache编译成静态库连接./build/libtool ./srclib/apr/libtool ./srclib/apr-util/xml/expat/libtool 改build_libtool_libs=no build_old_libs=yes名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 15 页 - - - - - - - - -