环境:centos7   nginx1.16.1(源码安装)

一、下载nginx源码包

  地址:http://nginx.org/en/download.html

  Mainline version(主线版本)Stable version(稳定版本)Legacy versions(传统老版本)

  下载稳定版:nginx-1.16.1.tar.gz

二、安装相关依赖

  gcc  gcc-c++  zlib  zlib-devel  openssl  openssl-devel  pcre  pcre-devel

  gcc,gcc-c++  #c,c++编译器,用来编译安装

  zlib,zlib-devel  #压缩和解压的函数库,网页文件压缩要用到它

  openssl,openssl-devel  #网络通信安全协议库,包含众多的密码算法、公钥基础设施标准以及SSL协议

三、安装Nginx

  (1).解包

  [root@izm5e8nyz28va3a786y465z src]# tar -zxvf nginx-1.16.1.tar.gz

  (2).编译配置(进入到解压的文件夹)./configure  --选项   

    ./configure  --prefix=/usr/local/nginx/  --sbin-path=/usr/local/nginx/sbin/  --conf-path=/usr/local/nginx/conf/ \
 --error-log-path=/usr/local/nginx/logs/error.log  --pid-path=/usr/local/nginx/run/nginx.pid  --http-log-path=/usr/local/nginx/logs/access.log \
 --http-client-body-temp-path=/usr/local/nginx/tmp/client/  --http-proxy-temp-path=/usr/local/nginx/tmp/proxy/ \
 --http-fastcgi-temp-path=/usr/local/nginx/tmp/fcgi/  --with-http_ssl_module  --with-http_flv_module  --with-http_gzip_static_module \
 --with-http_stub_status_module --with-http_realip_module  --with-pcre --user=nginx --group=nginx

    注意:1 若设置了用户名,用户组,则安装前先创建用户:useradd -M -s /sbin/nologin

         2 若设置了文件路径,则先创建相关目录,并将目录用户所有者,所属组设为配置的值。路径是目录则最后以'/'结尾,以免出错。

         如 =/usr/local/nginx/conf/ 如果结尾没/,conf会被当做文件

    1. 路径配置(不设置则为默认路径)

    --prefix=/usr/local/nginx1.16.1  #nginx的安装路径,所有其它路径都要依赖该选项

    --sbin-path=/usr/sbin/nginx   #指定nginx二进制文件的路径,不指定则:/usr/local/nginx/sbin/nginx

    --conf-path=/etc/nginx/nginx.conf  #nginx配置文件路径,不指定则:/usr/local/nginx/conf/nginx.conf

    --error-log-path=/var/log/nginx/error.log  #nginx错误日志路径,不指定则:/usr/local/nginx/logs/error.log

    --pid-path=/var/run/nginx/nginx.pid  #pid文件路径,不指定则:/usr/local/nginx/logs/nginx.pid

    --http-log-path=/var/log/nginx/access.log  #http访问日志路径

    --http-client-body-temp-path=/var/tem/nginx/client  #存储客户端请求主主体的临时目录

    --http-proxy-temp-path=/var/tem/nginx/proxy #存储代理服务器接收数据的临时文件 

    --http-fastcgi-temp-path=/var/tem/nginx/fcgi  # 设置存储HTTP fastcgi的临时文件的路径 

    2.模块配置

    --http_v2_module      #用于支持http2协议

    --with-http_ssl_module      #用于支持https协议

    --with-http_flv_module    #视频直播模块

    --with-http_gzip_module   #是nginx默认编译的模块,对网页文件压缩

    --with-http_gzip_static_module   #加载gz静态缓存模块,开启后服务器优先返回gz文件    

    --with-http_stub_status_module  #http服务状态模块

    3. 其它功能启用

    --with-pcre  #设置pcre库源码路径,若是yum安装则是默认路径不用写。用以开启对正则表达式支持

    --with-openssl  #启用OpenSSL(安全套接字层密码库)启用后可支持https,ssl证书

    3.用户,用户组配置

     --user=www  #nginx工作进程的用户名,默认:user为  nobody;

     nobody 是系统用户,是一个不能登陆的帐号,一个特殊用途的用户 ID,uid<500一般都是系统ID

     --group=www   #nginx工作进程的用户组,默认:group  nogroup

       nginx 只有一个主进程和多个工作进程,主进程主要读取和评估配置文件正确性,以及管理工作进程

     工作进程是真正的网络请求处理的进程

   (3)编译 

     make    

   (4)安装

     make  install 

四、nginx服务控制

  1. 启动nginx

  [root@izm5e8nyz28va3a786y465z tmp]# nginx

   nginx: [emerg] mkdir() "/var/tem/nginx/client" failed (2: No such file or directory)

  原因:缺少这个文件夹,nobody默认用户没有权限穿件这个文件夹

   创建:mkdir  -p  /var/tem/nginx/

   修改所有者:chown  nobody  /var/tem/nginx/

   之后,nginx能正常启动

  若要访问到nginx主页,则需要开放80端口,或直接关闭防火墙

  关闭防火墙:(不推荐)

    1. firewall-cmd  --state  #查看防火墙状态,running  /  no running

    2. systemctl stop firewalld.service  #关闭防火墙

    3. systemctl disable firewalld.service  #禁止开机启动

  开放80端口:

    1. firewall-cmd --list-port  #查看开放的端口信息

    2. firewall-cmd --query-port=80/tcp  #查看80端口是否开放

    3. firewall-cmd --zone=public --add-port=80/tcp --permanent  #开放80端口(--permanent永久生效)

    4. firewall-cmd --reload  #重启防火墙

  2. 服务控制

    nginx指令官方文档:https://www.nginx.com/resources/wiki/start/topics/tutorials/commandline/#upgrading-to-a-new-binary-on-the-fly

    nginx服务在运行时,会保持一个主进程和一个或多个 worker process 工作进程。可以通过给Nginx服务的主进程发送信号来控制服务

    2种发送信号的方式:nginx二进制文件  或  kill 命令

   nginx命令:

nginx –s  stop/start/reload/quit    #/停止/启动/重启/请求结束后退出

nginx -t                #检测配置文件是否正确 

    nginx -V            #查看编译时配置信息和版本号 

nginx -v               #查看nginx版本号

nginx -h               #查看nginx命令帮助

    nginx -p            #设置nginx安装路径

    nginx -c filename     #用指定的配置文件启动Nginx服务

    nginx -g directives   #nginx启动时执行的指令

kill命令:kill  single  主进程号 (实际使用中多用此种方式)

    注:pid 可以通过cat  /usr/local/nginx/logs/nginx.pid  命令查看(前提设置过pid位置)。nginx对linux信号的处理如下:
    QUIT     #停止服务(子进程全部结束后关闭主进程)
    TERM或INT  #直接停止服务(不管子进程是否结束)
    HUP      #平缓重启(不重载配置文件)
    USR1       #重读日志文件
    USR2       #平滑升级
   常用组合命令:
    nginx -g -c conffile  pid  #以指定配置文件,平滑重启,若启动失败,则以老的配置文件启动nginx
    nginx  -tc  filename        #检测指定nginx配置文件,并启动
    kill -QUIT $(cat /usr/local/nginx1.16.1/logs/nginx.pid)   #免去手动查询pid
   相关解释:
      平滑重启:当WorkerMan主进程收到平滑重启信号时,主进程会向其中一个子进程发送安全退出(让对应进程处理完毕当前请求后才退出)信号,当这个进程
    退出后,主进程会重新创建一个新的子进程(这个子进程载入了新的PHP代码),然后主进程再次向另外一个旧的进程发送停止命令,这样一个进程一个进程的
    重启,直到所有旧的进程全部被置换为止。(只有子进程加载的文件支持平滑重启)
      平滑升级:在不停止nginx服务,不丢失任何请求的情况下,更新nginx版本或服务模块。   
  3. nginx平滑升级的实现
      当需要更新nginx版本,nginx模块时,可以进行平滑升级,实现步骤如下:
    (1)用新的nginx二进制文件(/usr/local/nginx/sbin)替换旧的
    (2)kill -URS2  $(cat /usr/local/nginx1.16.1/logs/nginx.pid)  #向nginx主进程发送USR2信号
      nginx主进程接收到USR2信号,将nginx.pid改名为nginx.pid.oldbin,然后执行nginx启动脚本,启动一个新的nginx主进程和若干新工作进程
    (3)kill -WINCH  $(cat /usr/local/nginx1.16.1/logs/nginx.pid.oldbin)  #优雅地结束旧进程的子进程
      nginx主进程接收到WINCH信号,让旧进程的子进程停止接受请求,并在完成请求后退出,旧进程的请求转到新进程。
    (4)选择使用新的nginx还是旧的nginx服务(如果新的不稳定可以退回旧的)
      一段时间后,旧的子进程会全部退出,只保留旧的主进程和新nginx服务
      a:选择回到旧的nginx
      kill -HUP  oldpid     #旧的主进程开启工作进程,启动旧的nginx服务(不会重读配置文件)
      kill -QUIT  newpid  #优雅停止新的nginx进程
      当新的nginx主进程和工作进程全部停止后,nginx老的工作进程会改回原来的pid文件,一切恢复到未升级状态
      b:选择新的nginx进程
      kill -QUIT  oldpid    #直接结束旧的nginx主进程就OK了
      注意:如果新的nginx进程和旧的nginx安装路径不同,nginx -p  newpath  指定新进程的启动脚本位置后,再发送USR2信号。
      

Linux上安装nginx的更多相关文章

  1. 01 linux上安装 nginx

    一:linux上安装 nginx 下载nginx:wget http://nginx.org/download/nginx-1.6.2.tar.gz 解压:tar zxvf nginx-1.6.2.t ...

  2. [运维] 如何在 Linux 上安装 Nginx 服务器(一)

    原因 因为小程序对素材的大小是由要求的, 所以为了简化小程序上的内存要求, 在Linux上安装nginx来作为静态资源服务器, 这篇为第一篇, 主要介绍怎么在Linux上安装nginx, 下一篇将会介 ...

  3. 【Linux】Linux上安装Nginx

    本文介绍Linux环境安装Nginx,这里用的Linux系统是CentOS 7.2. 1. 从Nginx官网下载Nginx.这里用的版本为:1.13.6. 2. 将下载下来的Nginx上传到Linux ...

  4. 如何在 Linux 上安装 Nginx (源码安装)

    如何在 Linux( CentOS ) 上安装 Nginx 1.下载 nginx 链接 : https://pan.baidu.com/s/1sll0Hrf 密码 : xnem 2.安装 gcc ( ...

  5. Linux上安装nginx+tomcat负载均衡

    1.Ngnix Nginx (发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.  其特点是占有内 ...

  6. Linux上安装Nginx依赖环境和库、Nginx安装,Nginx服务命令

    安装Nginx依赖环境和库.Nginx安装,Nginx服务命令 因为Nginx官方提供的是C源码,要自己进行编译,所以需要自己拥有编译所依赖的环境和库才可正常编译 安装gcc yum -y insta ...

  7. linux上安装nginx详细步骤

    一.安装依赖包 yum install gcc gcc-c++ pcre-devel patch libffi-devel python-devel zlib-devel bzip2-devel op ...

  8. Linux上安装Nginx及常用命令

    一.Linux安装软件常用方法 1.rpm(或pkg)安装,类似于Windows安装程序,是预编译好的程序. 1)使用的是通用参数编译,配置参数不是最佳 2)可控制性不强,比如对程序特定组件的定制性安 ...

  9. 在Linux上安装nginx时遇到的问题,真的好坑啊!!!!

    解决了两个小时愣是卡着没动,结果一请大神问题就迎刃而解,怪自己太粗心,一下午差点就被这个问题安排的明明白白,直接上问题: makeFile时的问题:   checking for OS + Linux ...

随机推荐

  1. appium---adb logcat 命令详解

    我们在做app测试的过程中,肯定会遇到需要抓取日志问题,这几天安静也遇到了此问题,后台日志生成的太多了,保存本地了吧,设备多没有这么USB,通过wifi连接又太麻烦,你说这怎么是好?不要着急,我们往下 ...

  2. TestNG.xml 配置

    <packages>表示以测试类所在的包的方式定义测试用例,包中的所有测试类都被涉及,粒度较大. <?xml version="1.0" encoding=&qu ...

  3. git 推送本地项目到远程库

    git 推送本地项目到远程库 1@DESKTOP-3H9092J MINGW64 /e/mozq/00store/01/SmartCard_MS $ git init Initialized empt ...

  4. VMWare虚拟机提示:另一个程序已锁定文件的一部分,打不开磁盘...模块"Disk"启动失败的解决办法

    重启了电脑之后,打开VMware就发现出现了“锁定文件失败,打不开磁盘......模块"Disk"启动失败.”这些文字 为什么会出现这种问题: 这是因为虚拟机在运行的时候,会锁定文 ...

  5. Web前端开发框架大全-详述

    可以说,前端技术的发展是互联网自身发展的一个缩影! 前端技术的发展经历了web1.0时代,即网页只能展示信息,几乎没有交互可言: web2.0时代,web2.0不再是单维的,逐渐发展为双向交流,另一特 ...

  6. Paper | Model-blind video denoising via frame-to-frame training

    目录 故事 本文方法 流程 训练 实验 发表在2019年CVPR. 核心内容:基于Noise2Noise思想,这篇文章致力于无监督的视频盲去噪:是的,连噪声样本都不需要了. 这篇文章写作和概括太棒了! ...

  7. C++:class

    class 类是C++的一个重要概念,也是面向对象的一个重要内容.类的行为类似结构体,但功能比结构体的更强大.类是定义该类对象的一个模板,它告诉我们,一个类应该具有什么内容. 声明.定义 类用关键字c ...

  8. etcd 开启auth认证

    一.概述 1.etcd的v2和v3的认证有些不同,需要分别设置2.Etcd通过用户(user)-角色(role)-权限的方式来控制访问,用户关联角色,角色拥有权限,从而用户也就拥有了相应的权限3.Et ...

  9. Spring Cloud Hystrix Dashboard熔断器-Turbine集群监控(六)

    序言 上一篇说啦hystrix的使用方法与配置还有工作流程及为何存在,我去,上一篇这么屌,去看看吧,没这么屌的话,我贴的有官方文档,好好仔细看看 hystrix除啦基本的熔断器功能之外,还可以对接口的 ...

  10. RSyslog Windows Agent 安装配置

    下载地址:https://www.rsyslog.com/windows-agent/windows-agent-download/ 安装过程: 1.双击rsyslogwa安装包,开始进行安装 2.一 ...