a):当然,并非所有的服务器上都缺少该依赖,也并非安装了上述依赖后,就不会缺少其它依赖,如果在安装的过程当中,存在缺少其它依赖的异常提示,则我们根据所提示缺失的依赖包,针对性进行安装即可;
b):当前服务器版本为:CentOS Linux release 7.6.1810 (Core)(由于LZ服务器有使用Docker,所以对应的服务器版本较高,Docker要求所对应的服务器版本最好是,CentOS 7及以上版本;)
c):由于后续需要使用到外部的负载模块(随机分发),所以提前准备好 nginx-upstream-fair-master.zip,用于在安装Nginx时,直接指定新增对应的 module
解压缩当前nginx包
tar zxf nginx-1.13.3.tar.gz
进入当前解压缩后的nginx源代码目录
cd nginx-1.13.3
执行 configure脚本,此时则会进行所有相关依赖的检查,并最终在当前目录创建一个对应的 Makefile 的文件,基本信息如下所示:
./configure
日志信息如下:
checking for PCRE JIT support ... found
checking for zlib library ... found
creating objs/Makefile 上述的所有checking项完成后,将会创建对应的Makefile文件
Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
+ using system zlib library
此处显示所对应的默认nginx安装路径,path,binary,modules等安装后路径都有介绍说明;当然我们也可以不使用默认的安装路径,而是指定所对应的安装路径,方式如下:
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
--------------------------------------------------------------------------------------------------
通过上方直接执行 ./configure 已经可以清晰的看到所对应的路径及各种check信息,但是我们并没有在创建Makefile文件时指定新增外部的module依赖,也并没有指定对应的安装路径,所以此处重新执行 ./configure 生成一个新的Makefile文件,如下所示:
此处指定对应的nginx安装后的目录为:nginx-1,对应新增的第三方模块为:nginx-upstream-fair-master(此路径表示你的fiar的解压后的路径 );
./configure --prefix=/usr/local/nginx/nginx-1 --add-module=/opt/app/nginx/nginx-upstream-fair/nginx-upstream-fair-master
checking for sysconf(_SC_NPROCESSORS_ONLN) ... found
checking for openat(), fstatat() ... found
checking for getaddrinfo() ... found
configuring additional modules
此处新增了对应 fair 模块
adding module in /opt/app/nginx/nginx-upstream-fair/nginx-upstream-fair-master
+ ngx_http_upstream_fair_module was configured
checking for PCRE library ... found
checking for PCRE JIT support ... found
checking for zlib library ... found
重新创建了新的 Makefile文件
creating objs/Makefile
Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
+ using system zlib library
新指定的安装路径即变更为:/usr/local/nginx/nginx-1目录下
nginx path prefix: "/usr/local/nginx/nginx-1"
nginx binary file: "/usr/local/nginx/nginx-1/sbin/nginx"
nginx modules path: "/usr/local/nginx/nginx-1/modules"
nginx configuration prefix: "/usr/local/nginx/nginx-1/conf"
nginx configuration file: "/usr/local/nginx/nginx-1/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/nginx-1/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/nginx-1/logs/error.log"
nginx http access log file: "/usr/local/nginx/nginx-1/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
--------------------------------------------------------------------------------------
此处生成完对应的Makefile文件后,则执行make命令,进行编译,然后再执行对应的make install进行安装即可,如下所示:
1、make
此处使用 make 编译后,则将会在当前目录下生成 一个新的 objs 目录,其中包含了各种的 编译后文件(具体详情可以直接看执行make时所打印的日志进行分析即可,此处不做多余解释了),在所对应的新编译的 objs目录下,有一个重新生成了的 nginx 文件,此处是 3936KB;
如果:此处并不需要重新安装NGINX,而只是为了在已安装的 NGINX中,重新添加一个新的 fair 模块,则此处的 nginx 文件,直接拷贝到现有的已安装的 ngnix 目录下即可,此处操作如下:
首先暂停当前已启动的nginx
ngins -s stop
将当前新编译后的nginx bin文件,拷贝到当前已安装的nginx目录下,并覆盖原有的nginx文件(此处已安装的nginx路径为:/usr/local/nginx)
cp objs/nginx /usr/local/nginx/sbin/nginx
重新替换了对应的sbin nginx后,则重新执行当前nginx即可
nginx
需要注意:如果目的是为了安装fair模块,而重新编译的 nginx文件,则在编译之前生成Makefile文件时,需注意所设置的nginx安装路径,一定要是现有的nginx路径,否则会出现一些莫名的问题(即:在执行 ./configure时,所指定的安装路径参数,一定要与现有的nginx安装路径保持一致即可);
2、make install
执行make install 后,则将对应的nginx安装到指定目录下,此时则安装成功;(使用make install 后可以观察到,所使用的 install 安装,则也只是将此处objs所编译生成后的文件,以及原有的nginx下的conf文件等,拷贝到了,最初所指定的安装目录下,日志信息如下所示:)
cp objs/nginx ‘/usr/local/nginx/nginx-1/sbin/nginx‘
cp conf/mime.types ‘/usr/local/nginx/nginx-1/conf/mime.types.default‘
cp conf/nginx.conf ‘/usr/local/nginx/nginx-1/conf/nginx.conf.default‘
此处只是贴出来一部分日志;
所以,正是因为我们的make install命令,只是做了大部分的cp 拷贝操作,所以,当我们只是为了重新添加 module fair模块时,也只是把所对应的重新编译好的 sbin nginx文件,重新拷贝到已安装的nginx目录下代替原有的 sbin nginx文件,就可以直接使用的原因。
再所以,当我们,需要删除已安装的nginx时,则也只是直接删除对应所安装的目录下文件即可;(当然,如果是将nginx的sbin文件和其他配置项做了关联,则也直接清空掉即可;因为我们最终要使用,并且要用到的最重要的软件包,其实就是 手动 make 后的 sbin nginx文件(很重要))
通过上述的各种说明,相信后续如果再需要使用源码包来进行软件编译时,应该对于看到当前博文的童靴,都不再是任何问题了;并且对于nginx的编译安装,以及安装的方式,相信都已经有了一个更好的自身理解;