【Linux】yum源安装nginx服务

前言

  • centos 通过yum命令安装nginx服务,并开放监听端口、设置开机自启等
  • nginx文件划分
    • /etc/nginx 存放nginx相关配置,一般用来编辑内部的nginx.conf文件
    • /var/log/nginx 存放nginx默认的日志,可以通过查看access.log文件浏览相关内容
    • /usr/share/nginx 一般是用来放置需要nginx转发的静态资源文件
  • systemctl操作nginx服务
    • systemctl status nginx 查看nginx服务状态
    • systemctl start nginx 启动nginx服务
    • systemctl reload nginx 重新加载nginx服务
  • nginx自己的命令
    • nginx -t 校验nginx.conf配置是否正确
    • /usr/sbin/nginx 启动nginx
    • /usr/sbin/nginx -s reload 重新加载nginx配置文件
    • /usr/sbin/nginx -s quit 完整退出nginx


1、 配置yum源并进行安装

如有其他Linux版本需求,可以跳转官网nginx: Linux packages文档,选取适合的linux版本方式,按照文档步骤进行安装

我自己的服务器是centos7,所以使用的是文档中RHEL/CentOS的yum源方式进行安装

  1. 先执行yum info nginx命令检查有无nginx信息(如果可以看到nginx的信息,则点此跳转安装步骤即可)

  2. 运行命令,安装必备组件

    • yum install yum-utils -y
  3. 在yum存储库位置,创建nginx.repo文件,并将以下内容复制进文件中并保存

    • vi /etc/yum.repos.d/nginx.repo

    • [nginx-stable]
      name=nginx stable repo
      baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
      gpgcheck=1
      enabled=1
      gpgkey=https://nginx.org/keys/nginx_signing.key
      module_hotfixes=true
      
      [nginx-mainline]
      name=nginx mainline repo
      baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
      gpgcheck=1
      enabled=0
      gpgkey=https://nginx.org/keys/nginx_signing.key
      module_hotfixes=true
      
  4. (忽略此步骤)默认情况下,使用稳定nginx软件包的存储库,即nginx-stable。如果你想使用主线nginx软件包(最新版本),请运行以下命令:

    • yum-config-manager --enable nginx-mainline
    • 一般情况下忽略这一步骤,使用稳定的nginx即可
  5. yum repolist all|grep nginx,可以看到nginx的yum源已被添加至仓库

  6. yum info nginx,已经可以看到nginx的软件信息了

  7. 这时候我们运行安装命令即可

    • yum install nginx
    • 当系统提示您接受 GPG 密钥时,请验证指纹是否匹配,如果匹配,请接受它。573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62

2、 nginx服务启动

使用yum源安装nginx,会自动把nginx加入linux的服务中,避免了手动注册到服务的过程

  1. nginx服务启动

    • systemctl start nginx 启动nginx服务
    • systemctl status nginx 查看nginx运行状态
  • 如果在关闭nginx时出现nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)错误,则需要手动执行kill -9 pid命令依次关闭master processworker process两个进程,然后重新启动nginx即可
  • 建议nginx启动和关闭使用同一套命令,即使用systemctl开启,就使用systemctl关闭,两套命令不要穿插使用,避免出现不必要的问题
  • 启动时出现这个错误:Starting nginx: nginx: [emerg] bind() to 0.0.0.0:**** failed (13: Permission denied),建议关闭selinux服务
  1. 设置nginx服务开机自启

    • systemctl enable nginx 允许开机自启

    • systemctl is-enabled nginx 查看nginx服务是否允许开机自启

  2. 最后,编辑nginx的相关配置文件,使用nginx命令重新加载服务即可

    • 此时使用systemctl reload nginx或者/usr/sbin/nginx -s reload命令都可以
#nginx日志格式示例
log_format  main  '$remote_addr - $remote_user [$time_local] '
                  '$scheme://$http_host "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for" '
                  '[$request_time $upstream_response_time]';
# 请求访问的日志持久化位置,main表示使用此日志格式输出
access_log  /var/log/nginx/access.log  main;

#server配置示例
server {
  listen 80;
  server_name one.sample.com;
  root html;
  index index.html;  
  location /test {    
    # 请求host
    proxy_set_header Host $http_host;
    # 请求ip
    proxy_set_header X-Real-IP $remote_addr;
    # 请求协议
    proxy_set_header X-Scheme $scheme;
    # 代理服务器
    proxy_pass http://localhost:3000;
  }
}

3、 防火墙开放监听的端口

4、 Nginx作为负载均衡

1.负载均衡的介绍

在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。
负载均衡用于从 "upstream" 模块定义的后端服务器列表中选取一台服务器接受用户的请求。

2.负载均衡的基本实例

(1) upstream模块

一个最基本的upstream模块如下:

#动态服务器组, server是后端服务器,my_server是自定义的服务器组名称。
upstream my_server {
  server localhost:8001;
  server localhost:8002;
  server localhost:8003;
}
(2) 反向代理

在upstream模块配置完成后,要让指定的访问反向代理到服务器组。

server {
  listen 80;
  server_name www.example.com;
  root html;
  index index.html;
  location / {    
   # 反向代理到定义好的服务器组my_server
   proxy_pass http://my_server;
  }
}
(3) 完整配置
http {
    upstream my_server {
      server localhost:8001;
      server localhost:8002;
      server localhost:8003;
    }
    server {
        listen      80;
        server_name netdisk.longfor.com;
        root html;
        index index.html;
        location / {
            # 反向代理到定义好的服务器组my_server
            proxy_pass http://my_server;
        }
    }
}

3. 负载均衡策略

(1) 轮询(默认方式)

表示每个请求按时间顺序逐一分配到不同的后端服务器。

upstream my_server {
   server localhost:8001;
   server localhost:8002;
}
(2) weight(权重方式)

表示在轮询策略的基础上指定轮询的服务器的权重,默认为1,权重越高分配到需要处理的请求越多。

upstream my_server {
  server localhost:8001 weight=1;
  server localhost:8002 weight=2;
}

(3) ip_hash

表示指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。

upstream my_server {
  ip_hash;
  server localhost:8001;
  server localhost:8002;
}

备注:
在nginx版本1.3.1之前,不能在ip_hash中使用权重(weight)。
ip_hash不能与backup同时使用。
此策略适合有状态服务,比如session
当有服务器需要剔除,必须手动down掉。

(4) least_conn

表示把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。

upstream my_server {
  least_conn;
  server localhost:8001;
  server localhost:8002;
}

(5) down

表示当前的server暂时不参与负载均衡。

upstream my_server {
  server localhost:8001 down;
  server localhost:8002;
  server localhost:8003;
}

(6) backup

表示预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因 此这台机器的压力最轻。

upstream my_server {
  server localhost:8001 backup;
  server localhost:8002;
  server localhost:8003;
}
posted @ 2022-08-15 01:30  中国制造  阅读(2755)  评论(0编辑  收藏  举报