Nginx部署(CentOS 7.4 64位)

CentOS系统自带yum命令工具

安装nginx

yum install nginx

1.执行-> nginx -t
    作用:查看nginx.conf配置文件在哪里,同时也能测试配置文件的正确
    '''
    运行结果:
        nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
        nginx: configuration file /etc/nginx/nginx.conf test is successful
    '''
2.执行-> vim /etc/nginx/nginx.conf
    作用:编辑nginx配置文件
    # 简单的先配置一下服务名称,其余设置后面讲
    server {
        listen       80 default_server; # nginx默认监听端口
        listen       [::]:80 default_server; # 监听任何ip地址的80端口
        server_name  120.79.50.233; # 服务器地址
        root         /usr/share/nginx/html; # 设置虚拟主机的网站根目录
3.执行-> nginx -c /etc/nginx/nginx.conf
    作用:启动nginx
4.浏览器输入所配置ip地址
    '''
    注意:如果输入的不是ip地址而是域名,虽然本质是一样,但是因为它是80端口有些特殊,
    默认设置访问/usr/share/nginx/html这里的index的静态网页,
    所以呢这个域名访问就需要备案,不然就只能暂时用ip。换成其他端口就不要
    成功结果:你会看见
        Welcome to nginx on Fedora!
    '''

nginx的常用操作命令和注意事项

我们第二部要做的就是熟悉一下nginx的一些简单的操作指令

  • 启动
      # 启动其实上面讲过了,分两种
      # 直接执行
      1.执行 -> nginx
      # 指定配置文件执行
      2.执行 -> nginx -c /etc/nginx/nginx.conf
    
  • 快速停止

    该指令属于快速停止,可能并不保存相关信息

      执行 -> nginx -s stop
    
  • 优美停工

    也是停止,不过quit是完整有序的停止nginx,并保存相关信息。

      执行 -> nginx -s quit
    
  • 重新加载配置文件

    如果重新设置了配置文件,并不会立即生效,需要重新加载一下

      执行 -> nginx -s reload
    
  • 重新打开日志文件

      执行 -> nginx -s reopen
    
  • 获取所有正在运行的nginx进程的列表

      # 大概的看一下
      执行 -> ps -ax | grep nginx
      # 很详细的查看
      执行 -> ps axw -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)'
    
  • 错误处理

    • 如果nginx已经是启动过了,则会提示一些信息,表示端口地址已经被占用了。

      '''该提示表示80端口已经在使用了
      nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
      nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
      nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
      nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
      nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
      nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
      nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
      nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
      nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
      nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
      '''
      
    • nginx: [error] invalid PID number "" in "/run/nginx.pid"

      一般是nginx进程的一些意外被杀死导致进程id的pid文件丢失

        # 先确保关闭nginx进程
        1.执行-> pkill -9 nginx
        # 在重新启动
        2.执行-> nginx
      

分析nginx.conf配置文件

做任何事都要去了解它的意义,下面就看看nginx.conf配置文件的意义所在。
执行 -> cat /etc/nginx/nginx.conf进行查看

  • 文件结构
      1.#符号后面一行的其余部分被认为是注释。
      2.配置文件指令分为:简单指令和块指令
          简单指令:由空格分隔的名称和参数组成,以分号(;)结尾
          块指令:具有与简单指令相同的结构,但它以一组由大括号({和})包围的附加指令结束,而不是分号
      3.一般块指令中肯定是包含简其他指令的,我们又将它称为上下文
          比如:events、http、server和location这几个上下文
      4.上下文结构:
          不在上下文中的指令属于全局配置
          events和http上下文位于主上下文中,
          server位于http上下文中,
          location位于server上下文中
    
  • 分析文件内容

    这个里面其实很多都是官方示例,我们了解其写法后,以后就可以新创建一个配置文件,干净写上一些需要配置的信息,而不需要在这密密麻麻的文本中添加和修改。官方给出的只是一个规范的写法,文本大多数指令都是被注释的。

    # 开头文本显示让我们知道了配置信息可以去这两个网址查看和深入学习
    # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/
    user nginx; # 指定nginx运行的用户及用户组,默认为nginx(以前是nobody,反正我这个版本是这个)
    worker_processes auto; # 开启的线程数,一般跟CPU核数一致,auto参数就是自动跟CPU核数一致
    error_log /var/log/nginx/error.log; # 错误日志的路径输出位置,一般不改,要改自己去创建文件夹跟日志文件,然后在这里设置好路径就好了
    pid /run/nginx.pid; # 进程id的存储文件位置,一般不改动
    # Load dynamic modules. See /usr/share/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf; # 动态模块加载路径,*.conf是正则匹配,表示加载该文件夹下的所有.conf后缀的文件
    events {
          worker_connections 1024; #定义每个进程的最大连接数,受系统进程的最大打开文件数量限制。
    }
    # Nginx的Http服务器配置,Gzip配置
    http {
          # 日志格式的设定,main为日志格式的名称,可自行设置,后面引用,一般不改
          log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
          # 引用日志main(就是上面设置的main),一般不改,就按它默认的就行了
          access_log  /var/log/nginx/access.log  main;
          sendfile            on; # 开启高效文件传输模式(on/off)
          tcp_nopush          on; # 开启防止网络阻塞,选项仅在使用sendfile的时候才开启,一般不改就是,默认开启
          tcp_nodelay         on; # 开启防止网络阻塞,这个选项仅在将连接转变为长连接的时候才被启用,一般不改就是,默认开启
          keepalive_timeout   65; # 设置客户端连接保存活动的超时时间
          types_hash_max_size 2048; # 越大,就会消耗更多的内存,但散列key的冲突率会降低,检索速度就更快。默认2048
          # MIME type定义的文件路径,一般不改,默认就好
          include             /etc/nginx/mime.types;
          # 当找不到相应的MIME type与文件扩展名之间的映射时,使用默认的MIME type作为HTTP header中的Content-Type。
          default_type        application/octet-stream;
          # 加载模块配置文件的路径,更多信息可以参考下面那个网址
          # Load modular configuration files from the /etc/nginx/conf.d directory.
          # See http://nginx.org/en/docs/ngx_core_module.html#include
          # for more information.
          include /etc/nginx/conf.d/*.conf; # 默认配置路径
          # 这是我自己单独为我某个项目创建的路径以及配置文件,想要多少个自己逐个往下添加就是
          include /etc/nginx/mozu-enabled/*.conf; 
    
          # Nginx的server虚拟主机配置
          server {
              listen       80 default_server; # 默认监听80端口,一般不改
              listen       [::]:80 default_server; # 监听任何ip地址的80端口
              server_name  _; # 服务器地址(IP地址或者域名都可以)
              root         /usr/share/nginx/html; # 虚拟主机的网站根目录,一般会改成自己建站的资源路径
              # 加载默认服务器块的配置文件
              include /etc/nginx/default.d/*.conf;
              # 设置虚拟主机的基本信息(可以使用正则匹配),想要多个就逐个添加
              # 对虚拟主机名称(IP)之外的字符串进行匹配
              location / {
              }
    
              error_page 404 /404.html; # 请求出错类型404,会跳转到404.html页面提示
                  location = /40x.html {
                  }
              error_page 500 502 503 504 /50x.html;
                  location = /50x.html {
                  }
          }
          # Settings for a TLS enabled server.
          # 下面我就省略介绍TLS的配置,都一样的解释,更多的知识还是来源是实践
          # 还有很多其他的配置信息比如location上下文里的配置,比如多个端口的服务配置都需要我们去慢慢探索
    }
    
    • 多个server配置

      一般我们可能会使用到多个端口号去干不同的事,我们这时候一般采取跟nginx.conf文件分离区分开,这样就更好看,不会造成nginx.conf写的那个是密密麻麻,很不直观。

      # 上面分析配置文件的时候其实就介绍并使用了如何设置额外的加载配置文件的路径
      # 这时候我们只需要在那个路径下创建合适的名称的文件就好
      1.如果设置的文件路径只是预设值,并没有实际路径存在我们就用mkdir命令先创建
      2.用touch命令创建.conf后缀文件
      3.用vim命令去编辑
      4.我们因为只需要配置server上下文部分,所以直接写server上下文配置就行
          # 比如这样,这个配置文件配置了监听801端口,注意801端口要添加规则允许访问
          server {
              listen 801; # 监听801端口
              server_name 120.79.50.233 tingxunsun.com;
              location /mozu {
                      # 转发的地址
                  proxy_pass http://127.0.0.1:9002;
                  # 一些超时设置
                  proxy_send_timeout 20;
                  proxy_connect_timeout 20;
                  proxy_read_timeout 20;
              }
              location /device {
                  proxy_pass http://127.0.0.1:9003;
              }
              error_page 404 /index.html;
          }
      5.配置完了后,不要忘记执行刷新配置文件命令
          执行-> nginx -s reload
      6.所添加的端口号没有在服务器添加规则的要去添加
      

总结

基本入门安装配置就先到这里了,以后更多高级配置和问题的处理方法后续继续补上,互勉!!!

results matching ""

    No results matching ""