文档章节

Nginx初步-2: 添加nginx-upload-module模块

 如月王子
发布于 2014/08/22 14:34
字数 1005
阅读 3.7K
收藏 1

行业解决方案、产品招募中!想赚钱就来传!>>>

为什么?

因为显示上传进度的需要。而PHP官方的进度支持不适用于Nginx+PHP via FastCGI。相关文章请参考使用Session来跟踪上传进度。该文最后的Warning表示Nginx会自己处理上传,而PHP就只能得到一个最终结果,不能跟踪过程。最后一个跟帖(来自s.zarges)也给出相同的警告。这样,就不得不找别的办法,比如APC之类。而我选择了nginx-upload-module。


关于nginx-upload-module

这个模块由vkholodkov于5年前开发,现在已经不更新N久了。其源代码位于:https://github.com/vkholodkov/nginx-upload-module/tree/2.2。这是文档。直接下载源代码

下载完成后,解压:

tar xvfz nginx_upload_module-2.0.11.tar.gz


需要打补丁

代码恒久远,八哥永流传。多少年过去了,许多代码变得面目全非,许多更失去了本来面目,只剩下那一砣砣的八哥,提醒我们曾经辉煌的过往。现在的Nginx相对5年前,已经修改了很多东西,比如ngx_http_read_request_body_t已经删除了to_write成员,而该成员被nginx-upload-module所需要。其结果就是nginx-upload-module无法编译。关于该问题的讨论请参考这个链接。我们要感谢这个哥们:davromaniak,他修改了nginx-upload-module,修正了错误,使之可以通过编译。这是他的关于该问题修正的博文。我们要做的就是下载他的修改,给nginx-upload-module打补丁。

下载的Patch文件名为 davromaniak.txt

打补丁使用以下命令:

cp darvromaniak.txt [nginx_upload_module所在目录]
patch ngx_http_upload_module.c davromaniak.txt


将模块编译进Nginx

先从这个链接下载Nginx源码。然后编译:

cd nginx-1.5.8

./configure --prefix=. --sbin-path=nginx --conf-path=config/nginx.conf --pid-path=logs/nginx.pid --error-log-path=logs/error.log --with-cc-opt="-D FD_SETSIZE=4096" --with-debug --add-module=../nginx_upload_module-2.0.11 --add-module=../nginx-upload-progress-module-0.9.1
make
make install


在短暂的等待后,编译和安装就完成了,可以重启Nginx。


遇到的问题:

我使用了比较旧的nginx-upload-module(2.0),如果你使用的是新的2.2,遇到什么问题,请自行解决。

  1. prefix的选项,如果我们指定–prefix=/cygdrive/d/nginx,那么最后脱离Cygwin环境运行,会发现root无法指向其它磁盘上的目录,所以这里使用了相对路径,而且指定了可执行文件nginx在根目录下,而不是默认的sbin/nginx。

  2. FD_SETSIZE=4096,网上都说了,是将select模式的最大worker_connections加大。如果不加此参数将可能出现以下的错误提示:[emerg] 2496#0: the maximum number of files supported by select() is 64的错误提示。这表示FD_SETSIZE的值比nginx配置文件中worker_connections指令所指定的值小,你可以把nginx.conf里的worker_connections选项改小一些,比如44,加了–with-cc-opt=”-DFD_SETSIZE=4096”后就不会碰到这问题 。

  3. 我参考的文章中 --conf-path 参数都是 conf/nginx.conf,这个是默认的。但是这样指定的话,在make install的时候会报:cp: "conf/koi-win" 与"./conf/koi-win" 为同一文件的错误。因为我们是在源码文件夹中编译的,里面有conf这个文件夹,而 make install 的时候又会将源码文件夹中的conf/nginx.conf拷贝到目标文件夹,但我们命令中 --prefix 指定的就是当前文件夹,因此会报错。解决办法就是编译的时候将配置文件指定到其他名称的文件夹中(如本例中的 config/)。

  4. 编译成功后,在Cygwin下运行正常,但如果要脱离Cygwin,需要从cygwin/bin下拷贝cygwin1.dll,cyggcc_s-1.dll,cygz.dll,cygcrypto-0.9.8.dll,cygcrypto-1.0.0.dll,cygpcre-0.dll,cygpcre-1.dll,cygcrypt-0.dll这几个dll到nginx目录下。

补充:

nginx-upload-module(2.2)如果遇到在函数‘ngx_http_upload_merge_ranges’中: 

/usr/local/app/nginx_upload_module-2.2.0/ngx_http_upload_module.c:1682:22: 错误:变量‘result’被设定但未被使用 [-Werror=unused-but-set-variable] 

就把Makefile文件里的 -Werror去掉


重启Nginx的脚本

@echo off 
echo Stoping nginx… 
taskkill /F /IM nginx.exe 
echo Validating nginx.conf… 
nginx.exe -t -c conf/nginx.conf 
echo Starting nginx… 
nginx.exe -c conf/nginx.conf 
tasklist | findstr nginx


参考:

http://www.jb51.net/softjc/37172.html

http://www.tech126.com/cygwin-nginx/

http://wiki.nginx.org/InstallOptions#Notes


粉丝 15
博文 177
码字总数 3194
作品 0
淮安
私信 提问
加载中
请先登录后再评论。
记一次失败的Perl + Nginx + FastCGI 配置过程

这两天心血来潮,不知道为什么和 Perl + Nginx + FastCGI 配置 耗上了。但是失败了,记录如下: 1)安装Nginx 1.4.3 ,我的是WINDOWS 7 系统,修改配置文件如下: location ~ .(pl|cgi|perl)?...

通吃岛-低手哥
2013/10/27
1.5K
7
用vertx实现高吞吐量的站点计数器

工具:vertx,redis,mongodb,log4j 源代码地址:https://github.com/jianglibo/visitrank 先看架构图: 如果你不熟悉vertx,请先google一下。我这里将vertx当作一个容器,上面所有的圆圈要...

jianglibo
2014/04/03
3.9K
3
树莓派(Raspberry Pi):完美的家用服务器

自从树莓派发布后,所有在互联网上的网站为此激动人心的设备提供了很多有趣和具有挑战性的使用方法。虽然这些想法都很棒,但树莓派( RPi )最明显却又是最不吸引人的用处是:创建你的完美家用...

异次元
2013/11/09
5.2K
8
基于 ThinkPHP 的内容管理系统--歪酷CMS

歪酷网站管理系统(歪酷CMS)是一款基于THINKPHP框架开发的PHP+MYSQL网站建站程序,本程序实现了文章和栏目的批量动态管理,支持栏目无限分类,实现多管理员管理,程序辅助功能也基本实现了常见的文...

鲁大在线
2013/02/19
6.9K
1
PHP web 服务器--YACS

YACS 是一个强大的 PHP 脚本,可以让你维护一个动态的 Web 服务器。 特性: - Runs on your own server, or on a shared web site - Post articles with web forms, by e-mail, or remotely ......

匿名
2013/03/18
847
0

没有更多内容

加载失败,请刷新页面

加载更多

Smartbi数据分析工具处理大数据性能如何?

为什么需要跨库整合能力 Smartbi支持多种数据源轻松接入,基本涵盖了市面上所有主流的数据库。无可否认多元的数据连接能力使Smartbi能快速连接现有数据源,构建统一的数据分析平台。但在项目...

osc_w0uxg75l
28分钟前
0
0
深入Vue 底层原理以及运行机制

Vue,React 这样的框架可以说是现在前端的必备技能,一个刚入门两三个月的前端都是要会Vue的,而且随着Vue3.0发布日程的推进,使用的人群变得多了,开始想去了解它。 Vue这么受大众接受,那么...

五月君
今天
13
0
好用的Excel大数据分析工具

为什么需要Excel分析 自助BI使得BI不再是高管领导的专利,促成了BI的平民化,更是BI的发展趋势。但自助BI工具的选择却并不简单,很多厂商推出了自己的自助分析工具,但在企业的使用过程中,实...

osc_vuza8uho
28分钟前
6
0
企业玩转DevOps转型:由弱到强,只需7步

【摘要】 在参考业界方法并总结客户成功故事的基础上,本文提出了“七步法”路线图,希望能帮助更多的企业顺利进行DevOps转型。 从2009年诞生,DevOps已经悄然走过了10多个年头。Gartner在技...

华为云开发者社区
29分钟前
0
0
浙江日报丨AI赋能,如何抢占“智”高点

  今天在杭州市余杭区秒优服饰智能工厂,机器人将订单所需的面料辅料精准送到各个吊挂生产线,每台机器、每个工人的具体任务、实时进度等都化为大数据,显示在工厂的大屏幕上。作为一家今年...

osc_wfvuuuju
30分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部