本文出处https://shenyifengtk.github.io如有转载请说明出处如果你和我一样,作为一个勤奋的Java出身,除了实现项目功能很多,还需要兼顾项目的部署、运维。要在新服务器上安装新的Nginx,请在安装前阅读在线教程。面对五花八门的教程和各种安装方法,你总会想知道什么是最好的方法,或者说什么方法最好,什么最适合你?下面一起来分析下Nginx的各种安装方式,适合那种情况。在Ubuntu/Debian系统上使用系统二进制源方式安装sudoapt-getinstallnginx或者RedHat/CentOS系统sudoyuminstallnginx这是最简单最快的方式,但不是最好的方式。下面说说主要问题。优点所有安装二进制依赖都已经处理好了,不用担心兼容性问题,Nginx的连接配置开箱即用,用户权限不需要处理,这篇已经为你写好了,不用担心关于Nginx的bug维护和升级问题,直接拿最新的系统就可以了。卸载很简单,一条命令即可。日志维护简单,每日日志自动截断,压缩文件保存。缺点:不能选择安装版本,不能选择编译模块。扩展函数变得很麻烦,需要重新编译。类别结构复杂,配置文件在/etc/下,部署文件在/var/www下。重启服务和修改配置需要root权限,安装后可以直接使用。但是如果你的服务器是在生产环境中使用,正在开发和逐步完善中,不推荐这种方式。以后可能会加入第三方模块,届时必须编译安装(如下所述)。重启服务器时,不要使用root用户,而是使用sudo简单获取root。如果你的服务器是用来部署一些静态文件的,主要是一些web空间,平时使用ftp工具部署文件,这种方式肯定没有问题。编译安装的优缺点我就不写了,基本上就是把上面的倒过来。要使用这种方式安装,必须要懂一点Linux编译知识,只有中等Linux用户才能驾驭。网上看了大部分教程,直接在/usr/local/安装编译依赖并不好。如果以后我们要卸载这些依赖,会觉得很麻烦。不是直接在分类下删除的问题。一些Linux发行版会将安装文件写入配置文件。我不知道在哪里可以找到这些配置文件。如果依赖的版本影响到其他软件,如何处理版本问题。我们就是想安装Nginx,结果问题一大堆。编译环境准备在开始之前,请确保您的Linux已准备好gcc、make、wget、g++软件。创建一个分类存放下载的文件,进入目录下载依赖库源文件下载openssl主要用于ssl模块加密,支持htpswgethttps://www.openssl.org/source/openssl-1.0.2s.tar.gz下载pcre实现地址重定向,地址重写,localtion指令和正则表达式支持wgethttps://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz下载zlibgzip压缩模块wgethttps://zlib。net/zlib-1.2.11.tar.gz下载Nginxwgethttp://nginx.org/download/nginx-1.17.1.tar.gz用tar解压所有文件ls*.tar.gz|xargs-n1tarxzvf编译选项一个使用./configure设置各种Nginx参数的脚本,包括源和配置文件的路径、编译器选项、连接处理方法和模块列表。该脚本通过创建编译代码和安装Nginx开源所需的Makefile来实现这一点。参数说明--prefix=Nginx安装目录设置的所有相对路径的基本位置和其他配置脚本选项的路径设置。默认值/usr/local/nginx--sbin-path=Nginx二进制执行文件的名称,默认值:/sbin/nginx--conf-path=Nginx的名称配置文件。但是,您始终可以在启动时通过在nginx命令行上使用选项指定不同的文件来覆盖此值。默认值:conf/nginx.conf-c--pid-path=nginx.pid文件的名称,用于存储nginx主进程的进程ID。安装后,可以使用Nginx配置文件中的pid指令更改文件名的路径。默认值:/logs/nginx.pid--error-log-path=错误、警告和诊断数据的日志文件的名称。安装后,可以使用Nginx配置文件中的error_log指令更改文件名。默认值:/logs/error.log--http-log-path=HTTP服务器请求的主日志文件的名称。安装后,始终可以使用Nginx配置文件中的access_log指令更改文件名。默认值:/logs/access.log--user=Nginx运行进程的所有者。安装后,可以使用Nginx配置文件中的用户指令更改名称。默认:nobody--group=namenginx运行进程的owner用户组。安装后,可以使用NGINX配置文件中的用户指令更改名称。默认值:由--user选项设置的值--with-pcre=PCRE库源代码的路径,这是位置指令和重写模块中正则表达式支持所必需的--with-pcre-jit使用“即时编译”支持(pcre_jit命令)构建PCRE库--with-zlib=zlib库的源代码路径,Gzip模块需要此路径--with-http_ssl_modul启用HTTPS支持--with-http_v2_moduleenableHTTP/2request支持的编译参数太多,就不一一列举了。有兴趣的同学可以去nginx官网参考编译安装/configure\--with-openssl=../openssl-1.0.2s\--with-pcre=../pcre-8.43\--with-zlib=../zlib-1.2.11\--with-pcre-jit--user=admin\--prefix=/home/admin/nginx\--with-http_ssl_module\--with-http_v2_module输出如下信息,说明依赖没有问题Configurationsummary+usingPCRElibrary:../pcre-8.43+usingOpenSSLlibrary:../openssl-1.0.2s+usingzliblibrary:../zlib-1.2.11nginx路径前缀:“/home/admin/nginx”nginx二进制文件:“/home/admin/nginx/sbin/nginx”nginx模块路径:“/home/admin/nginx/modules”nginx配置前缀:“/home/admin/nginx/conf"nginx配置文件:"/home/admin/nginx/conf/nginx.conf"nginxpid文件:"/home/admin/nginx/logs/nginx.pid"nginx错误日志文件:"/home/admin/nginx/logs/error.log"nginxhttp访问日志文件:"/home/admin/nginx/logs/access.log"nginxhttp客户端请求正文临时文件:"client_body_temp"nginxhttp代理临时文件:"proxy_temp"nginxhttpfastcgi临时文件:"fastcgi_temp"nginxhttpuwsgi临时文件:"uwsgi_temp"nginxhttpscgi临时文件:"scgi_temp"编译普通makeinstallmakeinstall设置权限因为linux设置用户不能占用1024以下的端口,直接启动nginx会出现权限不足的错误,将nginx分配给root用户,并分配特殊权限sudochownrootnginxsudochmodu+snginx