将Apache http 服务器改写为Socket 的Server.docx

上传人:b****6 文档编号:7788826 上传时间:2023-01-26 格式:DOCX 页数:9 大小:16.30KB
下载 相关 举报
将Apache http 服务器改写为Socket 的Server.docx_第1页
第1页 / 共9页
将Apache http 服务器改写为Socket 的Server.docx_第2页
第2页 / 共9页
将Apache http 服务器改写为Socket 的Server.docx_第3页
第3页 / 共9页
将Apache http 服务器改写为Socket 的Server.docx_第4页
第4页 / 共9页
将Apache http 服务器改写为Socket 的Server.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

将Apache http 服务器改写为Socket 的Server.docx

《将Apache http 服务器改写为Socket 的Server.docx》由会员分享,可在线阅读,更多相关《将Apache http 服务器改写为Socket 的Server.docx(9页珍藏版)》请在冰豆网上搜索。

将Apache http 服务器改写为Socket 的Server.docx

将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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1