安装nginx,并了解nginx基本的配置语法

Nginx

一、选择哪个版本的Nginx

开源版:http:/nginx.org/

商业版:https:/www.nginx.com/

淘宝版:https:/tengine.taobao.org/

开源版OpenResty:https:/openresty.org/

商业版OpenResty:https:/openresty.com.cn/

一般情况下,使用开源版的就可以。

二、编译Nginx

为了将第三方模块集成进来,必须采用编译的方式。

2.1 下载,解压

下载:

wget http:/nginx.org/download/nginx-1.18.0.tar.gz

解压压缩包:

tar -zxvf nginx-1.18.0.tar.gz

2.2 目录分析

  • auto目录

    cc子目录,编译用的;

    os子目录,对操作系统的判断;

  • CHANGES 文件

    该版本中的变化

  • configure 文件

    用于生成中间文件,编译前的必备动作。

  • man

    是一个帮助文件

  • src

    ngix 的源代码

2.3 查看nginx支持哪些参数

./configure --help | more

第一类参数:Nginx在执行中会去找哪些辅助的文件;

第二类参数:确定使用哪些模块,和不使用哪些模块

前缀通常是with和without

第三类参数:指定nginx编译过程中,使用的特殊参数;

2.4 编译nginx

./configure --prefix=/Users/dev/servers/nginx

macbook 下需要先:

brew install pcre

编译成功后,所有nginx的编译特性,以及nginx的运行时的目录都会列到下方

nginx path prefix: "/Users/dev/servers/nginx"
  nginx binary file: "/Users/dev/servers/nginx/sbin/nginx"
  nginx modules path: "/Users/dev/servers/nginx/modules"
  nginx configuration prefix: "/Users/dev/servers/nginx/conf"
  nginx configuration file: "/Users/dev/servers/nginx/conf/nginx.conf"
  nginx pid file: "/Users/dev/servers/nginx/logs/nginx.pid"
  nginx error log file: "/Users/dev/servers/nginx/logs/error.log"
  nginx http access log file: "/Users//dev/servers/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"

编译完成之后,会生成中间文件,放到objs文件夹下:

该文件夹下的ngx_modules.c 决定了编译的时候哪些模块会被编译进nginx

2.5 执行make编译

make

编译成功后,生成大量的中间文件,及运行时的二进制文件。

C语言编译生成的所有中间文件,都会放到src目录。

2.6 首次安装,执行make intall

安装完成之后,去--prefix 参数执行的目录下,可以看到:一些目录

其中nginx的二进制文件就在sbin目录下,决定nginx功能的在conf目录下

三、nginx的配置语法

  • 配置是由指令和指令块构成;

    指令可以有名字,也可以没有名字

  • 每条指令是以;分号结尾,指令与参数间以空格符号分割;

  • 指令块以{}将多条指令组织在一起;

  • include语句允许组合多个配置文件以提升可维护性;

  • 使用#符号添加注释,提高可读性;

  • 使用$符号使用变量;

  • 部分指令的参数是支持正则表达式的;

  • 配置参数的时间单位:

    ms:milliseconds

    s:seconds

    m:minutes

    h:hours

    d:days

    w:weeks

    M:months,30days

    y:years,365days

  • 配置参数——空间的单位

    默认为bytesk/K kilobytes;m/M megabytes;g/G gigabytes

  • http的配置指令块

    • http

    • server

      对应一个或一组域名

    • upstream

      标示上游服务。当需要与tomcat、企业内网等通信时,定义upstream

    • location

      一个url表达式

四、nginx命令行

  • 格式:nginx [指令] [指令参数] ,例如:nginx -s reload

  • 帮助:-?-h

  • 使用指定的配置文件:-c

    默认会到编译ngix时,设置的-configure上寻找配置文件。

  • 指定配置指令:-g

    覆盖config 中的指令

  • 指定运行目录:-p

  • 发送信号:-s

    -- 立即停止服务
    nginx -s stop
    -- 优雅地停止服务
    nginx -s quit
    -- 重载配置文件
    nginx -s reload
    -- 重新开始记录日志文件:
    nginx -s reopen
    
  • 测试配置文件是否有语法错误:-t-T

  • 打印nginx的版本信息和编译信息:-v-V

五、演示

进入nginx的目录

cd /dev/servers/nginx/sbin

5.1 启动nginx

./nginx

5.1 重启配置文件

./nginx -s reload

5.2 查看nging的进程

ps -ef | grep nginx

501 4523 1 0 6:46上午 ?? 0:00.00 nginx: master process ./nginx

501 4538 4523 0 6:46上午 ?? 0:00.00 nginx: worker process

升级nginx,进行热部署

(1) 备份旧的nginx

(2)将新编译好的nginx配置文件拷贝进来

(3) 给正在运行的master发送一个信息,告诉它即将开始热部署

kill -USR2 4523

此时通过ps命令可以看到两个master进程(新老master同时存在)

(4) 给老的maste发送命令,让其优雅的停止老的worker进程

kill -WINCH 4523

此时老的worker进程已经停止,但老的master不会自动停止,留在这里允许我么做版本回退(执行reload命令)。

日志切割

(1)先备份老的日志;

(2)执行reopen命令生成信息的日值文件;

./nginx -s reopen

或者发送USR1信号,和执行reopen命令的效果是一样的。

原创文章 161 获赞 19 访问量 6万+

猜你喜欢

转载自blog.csdn.net/hefrankeleyn/article/details/106067782
今日推荐