已安装 nginx 中安装第三方模块及遇到的问题

刚在服务器中额外 nginx 安装了第三方模块 nginx-rtmp,因为是没有怎么管的 linode,而且之前还为了图省事,用了 apt-get 装,所以遇到了不少的问题,在这里分享一下~

流程

  1. apt-get source nginx #获取 nginx 源码
  2. ./configure #配置
  3. make #编译(注意在已安装 nginx 中不要 make install)
  4. cp objs/nginx /usr/sbin/nginx #替换二进制文件

遇到的问题

一、the public key is not available

在 apt-get update 时出现类似于:

  1. WARNING: The following packages cannot be authenticated!
  2.   nginx
  3. E: Some packages could not be authenticated

或在 apt-get source nginx 时出现类似于:

Code   ViewPrint
  1. W: GPG error: http://nginx.org trusty Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ABF5BD827BD9BF62

好像是公钥的验证问题,google 查资料,执行以下代码就可以了:

  1. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABF5BD827BD9BF62

将最后的那段 key 换成终端提示的无法验证的 key。

二、/usr/bin/ld: cannot find -lperl

这是由于 ld 在库链接是找不到库导致的。

而如提示 lperl 无法找到,即是无法找到 libperl.so 文件,安装相应的库即可。

但有时候在 /usr/lib/ 下有相应的库,只是文件名中带版本号,无法被 ld 找到,如 /usr/lib/ 下已经有了 libperl.so.5.18,只需要建立软链就行了~

Code   ViewPrint
  1. cd /usr/lib/
  2. ln -s libperl.so.5.18 libperl.so

三、Text file busy

在替换二进制文件:cp objs/nginx /usr/sbin/nginx 时,提示:

  1. cp: cannot create regular file ‘/usr/sbin/nginx’: Text file busy

将 nginx 暂时关闭即可:

  1. service nginx stop
  2. cp objs/nginx /usr/sbin/nginx
  3. service nginx start

如果关闭后仍然出现 Text file busy 提示,可以对 cp 添加强制参数:

  1. cp -rfp objs/nginx /usr/sbin/nginx

其中,-r 为强制拷贝。

四、reload: Job is not running: nginx

这一个问题让我非常郁闷😔,在编译完成之后,nginx 的反代静态文件功能都没了,访问目录下的文件都返回 404,同时在执行 service nginx restart 是返回空信息,执行 service nginx reload 时返回:reload: Job is not running: nginx。

到底是什么原因并不清楚- -这里提供两个解决方案:

1.杀死进程后启动

  1. killall nginx  
  2. service nginx start  

2.重启服务器

  1. reboot

具体的编译过程

下载第三方模块及源码

Code   ViewPrint
  1. cd ~
  2. git clone https://github.com/arut/nginx-rtmp-module.git #这里换成你想要安装的第三方模块
  3. apt-get source nginx

配置编译 nginx

Code   ViewPrint
  1. cd nginx-1.8.0 #替换成 nginx 源码目录名称
  2. nginx -V #将原有配置内容复制下来
  3. ./configure --prefix=/etc/nginx \
  4.                   [原有配置] \
  5.                   --add-module=../nginx-rtmp-module #第三方模块的目录
  6. make #已安装 nginx 编译模块不要 make install

替换二进制文件

  1. which nginx #查看 nginx 安装目录
  2. service nginx stop #暂时停止 nginx
  3. cp -rfp objs/nginx /usr/sbin/nginx #/usr/sbin/nginx 替换为 which 查询到的 nginx 目录
  4. service nginx start #启动 nginx

查看是否安装成功

  1. nginx -V

执行 nginx -V 后,如果能看到想要安装的第三方模块,就说明安装成功了。

如果我的文章对您有帮助,请我喝杯咖啡吧~

支付宝转账打赏⬆️

微信钱包转账打赏⬆️

目前评论:3   其中:访客  3   博主  0

  1. http://gzhytjy.com 0

    你:美丽中兼着可爱!聪明更有性格!善良又不失勇气!优点真的很多啊!开心吗?这条信息是人家发给我的,愚人节借给你看看!搞笑短信
    http://gzhytjy.com http://gzhytjy.com

  2. 韩国时尚购物起义 0

    “速食”文化中理财要有“复利”理念。

  3. 黑衣人 0

    写的不错,过年来看看,顶!d=====( ̄▽ ̄*)b

评论加载中...

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen: