前几天,刚好有个需求,需要往服务器上上传一些图片,可是公司之前就没这种业务。虽然现在普遍的分布式文件存储方案很多,fastds,ceph,tfs,gfs等,而且云上的存储更加无脑,OSS,S3这些,只要你开通一下,然后照着官方的例子传参调用即可,随用随传,而且更加直观方便。但是心血来潮,想到了以前用nginx一样也可以上传文件啊,于是查了下现有nginx的编译模块,动手,搞!
搞了半天,卡在了编译这个upload的时候各种报错,网上搜了半天,答案几乎都是照葫芦画瓢,根本不顶用。所以特意写下这篇随笔记录,虽然这东西没啥人用了,但是万一也有和我一样想安装的人,至少可以真的正确的有个参照。
本篇文章只做填坑用,完整流程,网上很多。
安装过程,千篇一律,废话不多说,看好nginx的版本,upload模块的下载地址,编译的时候注意好路径。以下内容,你百度和我百度没啥区别,随手一贴:
下载upload模块:
cd /opt
wget http://www.grid.net.ru/nginx/download/nginx_upload_module-2.2.0.tar.gz
解压:
tar -zxvf nginx_upload_module-2.2.0.tar.gz
下载nginx:
下载nginx,版本很多,主要不是这个模块的问题,很多是openssl或者你需要的模块,必须要多少多少版本,这个需要先看下你自己都编译了哪些:
查看nginx已经编译过的模块:
nginx -V
这个是安装完,最简单的默认模块配置。
下载,安装,编译:
wget http://nginx.org/download/nginx-1.12.0.tar.gz
tar zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
./configure --prefix=/usr/local/nginx(这里填你要的路径) --add-module=../nginx_upload_module-2.2.0(这里填upload模块的路径)
make
make install
如果一切顺利,到此就可以打卡了。
然鹅,如果你没那么幸运的话,就一个错一个错的慢慢整。
先贴三个常见的,安装前必须要的,如果你没安装,肯定报错。(不同Linux系统可能包名不同,大概一搜安装就好)
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install zlib1g-dev
sudo apt-get install openssl libssl-dev
继续编译,如果出现什么什么Werror,objs/Makefile什么的,就去到你的Makefile把那个词干掉就行。
sudo vim Makefile
最后,大bug了,什么由于历史悠久吧,没人更新吧,反正,到这一步,基本找半天资料也没啥有用的。
fatal error: md5.h: No such file or directory
compilation terminated.
答案在这,直接拿走: