免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4399 | 回复: 2
打印 上一主题 下一主题

[Web] 安装tengine的ndk模块总是失败 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-31 05:28 |只看该作者 |倒序浏览
centos6.4 64位+tengine1.4.4

安装过程如下

#建立目录
mkdir -p /usr/local/src/lemppackages/webserver
mkdir -p /usr/local/src/lemppackages/toolsoft

#先编译Luajit2.0
cd /usr/local/src/lemppackages/toolsoft
test ! -e LuaJIT-2.0.1.tar.gz && wget http://luajit.org/download/LuaJIT-2.0.1.tar.gz
tar -xf LuaJIT-2.0.1.tar.gz  
cd LuaJIT-2.0.1
make
make install PREFIX=/usr/local/luajit

#安装pcre
mkdir -p /usr/local/src/lemppackages/toolsoft/
cd /usr/local/src/lemppackages/toolsoft/
test ! -e pcre-8.32.tar.bz2 && wget ftp://ftp.csx.cam.ac.uk/pub/soft ... e/pcre-8.32.tar.bz2
tar -xf pcre-8.32.tar.bz2

cd /usr/local/src/lemppackages/toolsoft/pcre-8.32
./configure --prefix=/usr/local/pcre --enable-jit
make
make install

#添加用户
groupadd -f www-data
useradd -s /sbin/nologin -g www-data www-data

#编译安装 tengine
mkdir -p /usr/local/src/lemppackages/webserver
cd /usr/local/src/lemppackages/webserver
git clone https://github.com/alibaba/tengine.git
cd /usr/local/src/lemppackages/webserver/tengine
git clone https://github.com/alibaba/tengine.git




make -j2 && make install
接下来用静态和动态两种方法都安装失败了。
一种是dso方式

首先是静态编译
cd /usr/local/src/lemppackages/webserver/tengine

./configure \
--prefix=/usr/local/webserver/tengine \
--user=www-data --group=www-data \
--with-http_realip_module \
--with-http_addition_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_concat_module \
--with-pcre=/usr/local/src/lemppackages/toolsoft/pcre-8.32


而后动态加载。结果失败!
cd /usr/local/webserver/tengine/sbin/
./dso_tool --add-module=/usr/local/src/lemppackages/webserver/nginx_modules/ngx_devel_kit

提示
In file included from /usr/local/src/lemppackages/webserver/nginx_modules/ngx_devel_kit/src/ndk.c:6:
/usr/local/src/lemppackages/webserver/nginx_modules/ngx_devel_kit/src/ndk.h:36:27: error: ndk_config.h: No such file or directory
/usr/local/src/lemppackages/webserver/nginx_modules/ngx_devel_kit/src/ndk.h:52:29: error: ndk_includes.h: No such file or directory
/usr/local/src/lemppackages/webserver/nginx_modules/ngx_devel_kit/src/ndk.c:8:27: error: ndk_config.c: No such file or directory
/usr/local/src/lemppackages/webserver/nginx_modules/ngx_devel_kit/src/ndk.c:106: error: ‘ndk_http_commands’ undeclared here (not in a function)
make: *** [objs/src/src/ndk.o] Error 1
copying objs/ngx_devel_kit.so to /usr/local/webserver/tengine/modules/
cp: cannot stat `objs/ngx_devel_kit.so': No such file or directory


接下来。就打算用全静态编译。


下载模块
mkdir -p /usr/local/src/lemppackages/webserver/nginx_modules
cd /usr/local/src/lemppackages/webserver/nginx_modules

#下载 nginx devel kit
git clone https://github.com/simpl/ngx_devel_kit.git
#下载 nginx echo module
git clone https://github.com/agentzh/echo-nginx-module.git
#下载 lua-nginx-module 模块
git clone https://github.com/chaoslawful/lua-nginx-module.git


cd /usr/local/src/lemppackages/webserver/tengine
./configure --prefix=/usr/local/webserver/tengine \
--user=www-data --group=www-data \
--with-ld-opt="-Wl,-rpath,$LUAJIT_LIB" \
--with-luajit-inc=/usr/local/luajit/include/luajit-2.0 \
--with-luajit-lib=/usr/local/luajit/lib \
--add-module=/usr/local/src/lemppackages/webserver/nginx_modules/ngx_devel_kit \
--add-module=/usr/local/src/lemppackages/webserver/nginx_modules/echo-nginx-module \
--add-module=/usr/local/src/lemppackages/webserver/nginx_modules/lua-nginx-module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_dav_module \
--with-pcre=/usr/local/src/lemppackages/toolsoft/pcre-8.32

结果又报告
                /usr/local/src/lemppackages/webserver/nginx_modules/echo-nginx-module/src/ngx_http_echo_module.c
In file included from /usr/local/src/lemppackages/webserver/nginx_modules/ngx_devel_kit/src/ndk.c:6:
/usr/local/src/lemppackages/webserver/nginx_modules/ngx_devel_kit/src/ndk.h:36:27: error: ndk_config.h: No such file or directory
/usr/local/src/lemppackages/webserver/nginx_modules/ngx_devel_kit/src/ndk.h:52:29: error: ndk_includes.h: No such file or directory
/usr/local/src/lemppackages/webserver/nginx_modules/ngx_devel_kit/src/ndk.c:8:27: error: ndk_config.c: No such file or directory
/usr/local/src/lemppackages/webserver/nginx_modules/ngx_devel_kit/src/ndk.c:106: error: ‘ndk_http_commands’ undeclared here (not in a function)
make[1]: *** [objs/addon/src/ndk.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory `/usr/local/src/lemppackages/webserver/tengine'
make: *** [build] Error 2

碰到同样的错误!!

另外这个dso关键字居然也有问题

  1. cd /usr/local/webserver/tengine/sbin/
  2. ./dso_tool --add-module=/usr/local/src/lemppackages/webserver/nginx_modules/echo-nginx-module

  3. 结果生成了
  4. /usr/local/webserver/tengine/modules/ngx_http_echo_module.so

  5. 于是
  6. nginx.conf配置文件里加入

  7. dso {
  8.     load ngx_http_echo_module.so;
  9. }

  10. 而后在

  11. location /echo {
  12.     default_type 'text/plain';
  13.     echo 'hello echo';
  14. }
  15. 结果这个dso段落就导致了错误
  16. # /usr/local/webserver/tengine/sbin/nginx -t
  17. nginx: [emerg] "dso" directive is not allowed here in /usr/local/webserver/tengine/conf/nginx.conf:34
  18. configuration file /usr/local/webserver/tengine/conf/nginx.conf test failed
复制代码

论坛徽章:
0
2 [报告]
发表于 2013-08-22 16:56 |只看该作者
楼主问题我也遇到了,我的结论是,ndk是不能装成动态的,如果硬要装的话,打开dso_tool找到下面三行,注释掉即可
  1.     #if test -d $NGX_OBJS; then
  2.     #    rm -rf $NGX_OBJS
  3.     #fi
复制代码
但是装上是不能load的,因为这是提供给其他包使用的开发组件,不是nginx模块,比如set-misc-nginx-module会依赖该组件,但是用dso也是装不上set-misc-nginx-module,因为这两个设计的时候就没考虑到会编译成动态模块

报的两个错,就是因为上面那语句把objs删掉了的缘故。编成静态模块是可以的,但是楼主没成功是因为先编译成动态,objs下的几个头文件被删掉了。

最后一个问题,是因为新版的nginx没有启动,还是使用了不带dso语法的nginx做语法检查

论坛徽章:
0
3 [报告]
发表于 2013-08-28 00:52 |只看该作者
回复 2# zhijun_huang


    多谢!看来te的很多module是不支持动态化的。我现在还是不知道动态化有什么好处。您能否指点一二?谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP