原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接:https://app.yinxiang.com/shard/s17/nl/19391737/46aadb8f-5055-43c4-8a72-ad81cdd45c86

贴心备上Nginx相关 网盘安装包:

Nginx-upstream-fair-master(Nginx随机分发模块):

链接:https://pan.baidu.com/s/1vnI_dbHlJlaNbQ0AL3rk7Q
提取码:bdwi

Nginx-1.13.3.tar.gz:

链接:https://pan.baidu.com/s/1FJwOZQFloFS062vlWJsTQA
提取码:19t3

 
本篇博文,共解决以下问题:
1、如何在机器上熟练的安装部署Nginx
2、如何在一个机器上一次性安装多个 NGINX
3、在已经安装的 NGINX 上,如果进行 外部模块依赖的添加?而不是重装 nginx;如:在已安装好了的 nginx中,如何重新添加 fair 随机分发模块;
4、NGINX 的常见配置操作;
 
NGINX服务安装方式:
1、nginx的编译安装一般需要依赖如下环境:
yum install -y pcre-devel
yum -y install gcc make gcc-c++ wget
yum -y install openssl openssl-devel
所可能碰到的问题如下:
a):当然,并非所有的服务器上都缺少该依赖,也并非安装了上述依赖后,就不会缺少其它依赖,如果在安装的过程当中,存在缺少其它依赖的异常提示,则我们根据所提示缺失的依赖包,针对性进行安装即可;
b):安装上述依赖前,可以先提前查看该服务器是否存在该软件包,如果存在则无需重复安装,常用的yum命令如下:
列出所指定 gcc 软件包的列表信息(包括:软件包名称,版本,是否本机安装(分别包含两个VALUE值:installed,以及,epel ))
yum list gcc
 
得到当前gcc软件包的详细源信息(软件包的版本,大小,URL,Repo(当前软件包的信息: installed,则表示当前软件包已安装,epel/7/x86_64 则表示当前软件包信息来源于EPEL源仓库))
yum info gcc
 
通过epel源仓库搜索所有gcc的软件包
yum search gcc
 
表示通过epel源仓库下拉安装该gcc的软件包
yum install gcc
 
-y 表示安装该gcc软件包时,是否进行询问 is the ok [y/d/n],使用 -y 参数表示直接安装,无需询问
yum -y install gcc
 
查看当前yum所配置的所有源仓库的信息
ls /etc/yum.repos.d/
 
检查当前所有已安装的源
yum  repolist
 
(2019-09-25错误不是这个意思)检查当前是否已安装openssl
yum check openssl
 
给yum配置新的源仓库的方式:
https://blog.csdn.net/effort0806222/article/details/51095487
yum常见命令:https://blog.csdn.net/xueba8/article/details/79507460
 
2、安装完对应的依赖以后,则进行nginx包的解压缩及编译安装
a):此处使用的NGINX包为:nginx-1.13.3.tar.gz
b):当前服务器版本为:CentOS Linux release 7.6.1810 (Core)(由于LZ服务器有使用Docker,所以对应的服务器版本较高,Docker要求所对应的服务器版本最好是,CentOS 7及以上版本;)
c):由于后续需要使用到外部的负载模块(随机分发),所以提前准备好 nginx-upstream-fair-master.zip,用于在安装Nginx时,直接指定新增对应的 module
d):操作步骤如下:
解压缩当前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的编译安装,以及安装的方式,相信都已经有了一个更好的自身理解;
 
 
3、设置全局的nginx 命令(需注意的是:如果需要安装多个nginx服务,则此处便没有必要将nginx设置为全局命令了,建议使用nginx命令时,还是直接指定对应的nginx路径,然后进行执行,这样可以更好的区分当前所执行的到底是那个nginx服务;如:
/usr/local/nginx/nginx-1/sbin/nginx -t 
表示校验当前nginx-1的服务配置是否正确,(常用的nginx命令可以看下方说明;)
vi ~/.bash_profile
 
将对应的生成后的 nginx sbin目录,配置到对应的 path 中
PATH=$PATH:$HOME/bin:/usr/local/nginx/nginx-1/sbin/
export PATH
 
重新执行 ./bash_profile 使当前配置文件立即生效,则就可以直接使用nginx全局命令了
source ~/.bash_profile
4、常用的nginx命令:
 
 
nginx -t 校验当前nginx.conf语法是否正常
 
直接使用如下两个命令,表示启动nginx
nginx
/usr/local/nginx/sbin/nginx
nginx -c /usr/local/nginx/conf/nginx.conf
 
配置文件重载
nginx -s reload
/usr/local/nginx/sbin/nginx -s reload
 
关闭进程
nginx -s stop
/usr/local/nginx/sbin/nginx -s stop
 
平滑关闭nginx
nginx -s quit
/usr/local/nginx/sbin/nginx -s quit
 
# 查看nginx的安装状态,
/usr/local/nginx/sbin/nginx -V
 
 

Nginx安装(我觉得我这篇可能是全网最清晰的一篇安装步骤了)的更多相关文章

  1. WordPress安装篇(3):用宝塔面板在Linux上安装WordPress

    前面的文章已经介绍了如何在Windows环境安装WordPress,这篇文章来介绍在Linux环境怎样快速安装WordPress.大家都知道,Linux系统相对于Windows系统而言占用资源更少.更 ...

  2. WordPress安装篇(2):用宝塔面板在Windows上安装WordPress

    上一篇文章介绍了如何使用PHPStudy工具在Windows Server环境安装WordPress,接下来介绍一款更加强大的部署WordPress的集成工具--宝塔面板.宝塔面板不仅提供免费版本,还 ...

  3. Qt入门之基础篇 ( 一 ) :Qt4及Qt5的下载与安装

    转载请注明出处:CN_Simo. 导语: Qt是一个跨平台的C++图形界面应用程序框架.它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序.Qt很容易扩展,并且 ...

  4. .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了

    作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/9985451.html 本来这篇只是想简单介绍下ASP.NET Core MVC项目的(毕竟要照顾到很多新 ...

  5. net core体系-web应用程序-4asp.net core2.0 项目实战(CMS)-第二章 入门篇-快速入门ASP.NET Core看这篇就够了

    .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了   原文链接:https://www.cnblogs.com/yilezhu/p/9985451.ht ...

  6. Cloudera Manager安装之利用parcels方式安装单节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(CentOS6.5)(四)

    不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑          ...

  7. 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序

    如何在Visual Studio 2017中使用C# 7+语法   前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...

  8. 小白两篇博客熟练操作MySQL 之 第一篇

    小白两篇博客熟悉操作MySQL  之   第一篇 一.概述 1. 什么是数据库? 答: 储存数据的仓库, 如: 在ATM的事例中创建的一个db 目录, 称为数据库 2. 什么是Mysql, Oracl ...

  9. 《⑨也懂系列:MinGW-w64安装教程》著名C/C++编译器GCC的Windows版本(MinGW-w64在安装的时候可以选择版本,有图,一步一步)

    发布日期 2016年10月31日 分类 教程 标签 编程.软件 前言<⑨也懂系列:MinGW-w64安装教程>这篇文章由 rsreland (http://rsreland.net)于 2 ...

随机推荐

  1. 【Oracle】Oracle ASM管理监控命令

    目录 Oracle ASM管理监控命令 目的: 1.查看磁盘组 2.查看目前归档 3.查看ASM的磁盘路径 4. asmcmd Oracle ASM管理监控命令 目的: 查看目前Oracle ASM相 ...

  2. Java流程控制之(二)循环

    目录 while循环 do..while循环 for循环 while循环和for循环基本概念--直接上代码! while循环 int i = 0; while(i<10) { System.ou ...

  3. 洛谷P2670-扫雷游戏

    文章目录 原题链接 题面简述 输入格式 输出格式 思路 代码 原题链接 题面简述 在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格).玩家翻开一个非地雷格时,该格 ...

  4. 12、pytest -- 缓存:记录执行的状态

    目录 1. cacheprovider插件 1.1. --lf, --last-failed:只执行上一轮失败的用例 1.2. --ff, --failed-first:先执行上一轮失败的用例,再执行 ...

  5. Theano中的导数

    计算梯度 现在让我们使用Theano来完成一个稍微复杂的任务:创建一个函数,该函数计算相对于其参数x的某个表达式y的导数.为此,我们将使用宏T.grad.例如,我们可以计算相对于的梯度 import ...

  6. CTF中遇到的php

    1.if(eregi("hackerDJ",$_GET[id])) {   //eregi字符串对比 echo("<p>not allowed!</p& ...

  7. 从别人那里拿过来的工程,在Idea上打开时报错

    如果是这个错误:也许原因有很多种,但是不妨试一下⑴将给你项目工程的人的.idea文件夹删除,这样在你导入工程时,会生成一个属于你本地的.idea.⑵最好是使用SVN重新把项目工程检出(把项目下载下来, ...

  8. fsockopen用feof读取http响应内容的一些问题

    在前面三个例子中,都有这么一段代码: while (!feof($fp)) { // 读取文件/数据 //$content .= fgets($fp, 128); //$line = fread($f ...

  9. Spring Security OAuth2 Demo —— 授权码模式

    本文可以转载,但请注明出处https://www.cnblogs.com/hellxz/p/oauth2_oauthcode_pattern.html 写在前边 在文章OAuth 2.0 概念及授权流 ...

  10. 王晶:华为云OCR文字识别服务技术实践、底层框架及应用场景 | AI ProCon 2019

    演讲嘉宾 | 王晶(华为云人工智能高级算法工程师王晶) 出品 | AI科技大本营(ID:rgznai100) 近期,由 CSDN 主办的 2019 中国AI 开发者大会(AI ProCon 2019) ...