将Apache http 服务器改写为Socket 的Server.docx
《将Apache http 服务器改写为Socket 的Server.docx》由会员分享,可在线阅读,更多相关《将Apache http 服务器改写为Socket 的Server.docx(9页珍藏版)》请在冰豆网上搜索。
将Apachehttp服务器改写为Socket的Server
将Apachehttp服务器改写为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-dav--disable-filters--disable-proxy--disable-generators
删除module目录下除http,cache路径外其他的module(其他目录下只有makefile)
修改./modules.c文件只留下core_module,mpm_worker_module,http_module
修改Makefile中只留的install-(install-confinstall-errorinstall-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_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__
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-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/callcenter_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.mksrclib/apr/build/apr_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=-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=-lpthread
//hp可以不改
./build/libtool
./srclib/apr/libtool
./srclib/apr-util/xml/expat/libtool
增加AR_FLAGS="-X64cru"
server/Makefile:
EXPORT_DIRS=$(top_srcdir)/include$(top_srcdir)/os/$(OS_DIR)$(top_srcdir)/modules/http
把include下struct.h,define.hcopy到include路径下
修改include下httpd.h的conn_rec结构,增加:
longin_len;
char*in_buffer;
/*发送缓存长度*/
longout_len;
char*out_buffer;
char*send_buff;
char*recv_buff;
intconnfd;
charhead_buff[80];
char*head;
char*send_pos;
longsend_left;
char*recv_pos;
longrecv_left;
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_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_handle(ap_core_output_filter_handle,net,NULL,net->c);
worker.c中增加:
pthread_mutex_tenv_mutex=PTHREAD_MUTEX_INITIALIZER;
pthread_cond_tenv_cond=PTHREAD_COND_INITIALIZER;
注意modules/http下的modules.mk一定要齐.
2.2.0日志汉字问题解决?
修改server/log.c文件的log_error_core函数:
把
#ifndefAP_UNSAFE_ERROR_LOG_UNESCAPED
if(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-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);
server/Makefile修改:
export_files:
tmp=export_files_unsorted.txt;\
rm-f$$tmp&&touch$$tmp;\
fordirin$(EXPORT_DIRS);do\
ls$$dir/*.h>>$$tmp;\
done;\
sort-u$$tmp>$@;\
rm-f$$tmp
把EXPORT_DIRS_APR去掉了,因为在include下都有需要的.h文件,并且去掉include下os.hmod_core.hunixd.h
#这三个文件在modules/http/mod_core.h和os/unix/os.hos/unix/unixd.h因此去掉下面部分
#fordirin$(EXPORT_DIRS_APR);do\
#ls$$dir/ap[ru].h>>$$tmp;\
#ls$$dir/ap[ru]_*.h>>$$tmp;\
#done;\
把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:
14:
58
安装./configure--prefix=/product2/boss/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-dav--disable-filters--disable-proxy--disable-generators
删除module目录下除http,cache路径外其他的module(其他目录下只有makefile)
修改./modules.c文件只留下core_module,mpm_worker_module,http_module
修改Makefile中只留的install-(install-confinstall-errorinstall-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_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__
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-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/callcenter_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.mksrclib/apr/build/apr_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=-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=-lpthread
//hp可以不改
./build/libtool
./srclib/apr/libtool
./srclib/apr-util/xml/expat/libtool
增加AR_FLAGS="-X64cru"
server/Makefile:
EXPORT_DIRS=$(top_srcdir)/include$(top_srcdir)/os/$(OS_DIR)$(top_srcdir)/modules/http
把include下struct.h,define.hcopy到include路径下
修改include下httpd.h的conn_rec结构,增加:
longin_len;
char*in_buffer;
/*发送缓存长度*/
longout_len;
char*out_buffer;
char*send_buff;
char*recv_buff;
intconnfd;
charhead_buff[80];
char*head;
char*send_pos;
longsend_left;
char*recv_pos;
longrecv_left;
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_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_handle(ap_core_output_filter_handle,net,NULL,net->c);
worker.c中增加:
pthread_mutex_tenv_mutex=PTHREAD_MUTEX_INITIALIZER;
pthread_cond_tenv_cond=PTHREAD_COND_INITIALIZER;
注意modules/http下的modules.mk一定要齐.
2.2.0日志汉字问题解决?
修改server/log.c文件的log_error_core函数:
把
#ifndefAP_UNSAFE_ERROR_LOG_UNESCAPED
if(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-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);
server/Makefile修改:
export_files:
tmp=export_files_unsorted.txt;\
rm-f$$tmp&&touch$$tmp;\
fordirin$(EXPORT_DIRS);do\
ls$$dir/*.h>>$$tmp;\
done;\
sort-u$$tmp>$@;\
rm-f$$tmp
把EXPORT_DIRS_APR去掉了,因为在include下都有需要的.h文件,并且去掉include下os.hmod_core.hunixd.h
#这三个文件在modules/http/mod_core.h和os/unix/os.hos/unix/unixd.h因此去掉下面部分
#fordirin$(EXPORT_DIRS_APR);do\
#ls$$dir/ap[ru].h>>$$tmp;\
#ls$$dir/ap[ru]_*.h>>$$tmp;\
#done;\
把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