起因:在ubuntu中使用nginx的时候由于使用apt安装的软件,需要给nginx安装模块。需要重新编译。
在使用nginx -V 查看到apt安装是的 ./configure 的参数 中有要用的模块(http_gzip_static_module),但是好像没有安装上去。所以拿这些参数重新编译nginx,得到编译后软件替换已经安装的。
./configure
--with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-H4cN7P/nginx-1.14.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2'
--with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC'
--prefix=/usr/share/nginx
--conf-path=/etc/nginx/nginx.conf
--http-log-path=/var/log/nginx/access.log
--error-log-path=/var/log/nginx/error.log
--lock-path=/var/lock/nginx.lock
--pid-path=/run/nginx.pid
--modules-path=/usr/lib/nginx/modules
--http-client-body-temp-path=/var/lib/nginx/body
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-proxy-temp-path=/var/lib/nginx/proxy
--http-scgi-temp-path=/var/lib/nginx/scgi
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi
--with-debug --with-pcre-jit
--with-http_ssl_module
--with-http_stub_status_module
--with-http_realip_module
--with-http_auth_request_module
--with-http_v2_module
--with-http_dav_module
--with-http_slice_module
--with-threads
--with-http_addition_module
--with-http_geoip_module=dynamic
--with-http_gunzip_module
--with-http_gzip_static_module
--with-http_image_filter_module=dynamic
--with-http_sub_module
--with-http_xslt_module=dynamic
--with-stream=dynamic
--with-stream_ssl_module
--with-mail=dynamic
--with-mail_ssl_module
软件:
nginx 1.14.0
ubuntu 18.06
编译过程
-
下载apt相同版本的nginx源码包传到服务器
http://nginx.org/download/
-
获取apt安装时的编译参数
nginx -V 得到 ./configure 后的参数 里面有 http_gzip_static_module 可选择哪些需要安装哪些不需要。 with ,without
-
在nginx源码目录下运行
sudo ./configure 加上面得到的参数
遇到的问题
-
无GCC编译器
错误 ./configure: error: C compiler cc is not found 安装 sudo apt install build-essential
-
依赖包pcre安装
error ./configure: error: the HTTP rewrite module requires the PCRE library. 安装 sudo apt-get install libpcre3 libpcre3-dev
-
依赖包openssl安装
error ./configure: error: SSL modules require the OpenSSL library 安装 sudo apt-get install openssl libssl-dev
-
依赖包zlib安装
error ./configure: error: the HTTP gzip module requires the zlib library 安装 sudo apt-get install zlib1g-dev
-
libxml2, libxslt 库
error ./configure: error: the HTTP XSLT module requires the libxml2/libxslt 安装 sudo apt-get install libxslt1-dev
-
GD库
error ./configure: error: the HTTP image filter module requires the GD library. 安装 sudo apt install libgd-dev
-
libgeoip-dev
error ./configure: error: the GeoIP module requires the GeoIP library. 安装 sudo apt install libgeoip-dev
-
-
编译
make 不要 make install 编译完成后 在源码目录下会生成objs文件夹内含有编译完成的nginx程序
-
取objs文件下的nginx文件替换 /usr/sbin/ 下的nginx文件 重启nginx完成新模块的添加
备份 sudo cp /usr/sbin/nginx /usr/sbin/nginx.bak 替换 sudo cp objs/nginx /usr/sbin/nginx 重启 sudo service nginx restart
最后测试新加的模块是否成功,这里使用的是 静态压缩模块 http_gzip_static_module。