Linux下安装Nginx步骤及项目部署

一、Linux下安装Nginx

1.1 下载nginx压缩版

官网:nginx: download

下载nginx-1.20.1.tar.gz 稳定版

1.2 上传到linux服务器

上传到了usr目录下

1.3 安装gcc

安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,则需要安装:

yum install gcc-c++
1.4 查看版本
gcc -v
1.5 安装pcre-devel依赖库

pcre是一个perl库,ngix的http模块使用pcre来解析正则表达式,所以要在linux上安装pcre.。pcre-devel是使用的pcre开发的一个二次开发库,nginx也需要此库,命令:

yum -y install pcre-devel
1.6 安装openssl依赖库

openssl是一个强大的安全套接字层密码库,囊括主要的密码算法,常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要安装openssl库,命令:

yum -y install openssl openssl-devel
1.7 解压缩

解压目录是在 /usr/nginx-1.20.1

tar -zxvf nginx-1.20.1.tar.gz
1.8 进入目录
cd nginx-1.20.1
1.9 执行自动配置
./configure
1.10 执行make命令

把文件进行编译

make
1.11 执行make install

再执行安装

make install
1.12 查看安装的路径(是否成功)

nginx的默认安装目录: /usr/local/nginx

whereis nginx
1.13 进入安装目录
cd /usr/local/nginx/bin
ll
1.14 查看nginx的配置文件
cd /usr/local/nginx
ll
cd conf
ll
cat nginx.conf
1.15 执行nginx的启动文件
# 进入安装目录
cd /usr/local/nginx/sbin
#启动Nginx服务
./nginx
1.16 查看nginx进程
ps -ef | grep nginx
1.17 输入IP地址进行访问

http://101.200.174.107,如果访问不到Nginx服务,则需要在防火墙中进行端口得开放操作

7.18 防火墙的设置

需要记忆:

#查看防火墙的启动状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld
#开启防火墙
systemctl start firewalld
#查看开放的端口号
firewall-cmd --list-all
#在防火墙中设置开放的端口号
firewall-cmd --zone=public --add-port=80/tcp --permanent
#开启端口后,需要重启防火墙才生效
systemctl restart firewalld | firewall-cmd --reload 
# 如果有不用的端口,则进行移除
firewall-cmd --permanent --remove-port=8081/tcp

二、Nginx常用命令

# 进入nginx的目录
cd /usr/local/nginx/sbin
# 查看Nginx的版本
./nginx -v
# 启动Nginx
./nginx  
# 停止Nginx
./nginx -s stop 
# 安全退出Nginx,同时会关闭Nginx服务
./nginx -s quit 
# 重新加载配置文件(不重新启动Nginx,也会生效)
./nginx -s reload 
# 查看Nginx的进程
ps -ef | grep nginx 

三、Nginx配置文件的组成

进入Nginx配置文件的位置

cd /usr/local/nginx
ll
cd conf
ll

就可以看到nginx.conf文件,此文件就是Nginx的配置文件,通过 vim nginx.conf命令,打开配置文件

四、 Nginx的使用

4.1 反向代理的配置1

要实现的最终效果就是:

在本地浏览器中输入:www.abc.com,访问到nginx服务器192.168.6.85:80下,然后nginx做反向代理跳转到127.0.0.1:8085的服务器上。

Linux下安装Nginx步骤及项目部署_第1张图片

4.1. 1 编写springboot的项目工程

配置端口为8085与8086两个项目工程,编写好代码后打成jar文件,上传到服务器并进行启动,可在配置文件中设置端口号(或启动的时候指定端口也可以)

java -jar xxx.jar --server.port=8085
java -jar xxx.jar --server.port=8086
java -jar -Dserver.port=8085 news-1.0.jar
java -jar -Dserver.port=8086 news-1.0.jar

4.1.2 在linux防火墙中开放8085与8086端口
firewall-cmd --zone=public --add-port=8085/tcp --permanent
firewall-cmd --zone=public --add-port=8086/tcp --permanent
4.1.3 windows的host文件进行配置

配置域名映射的IP地址,当你在浏览器中输入一个域名后,它会先从本地的host文件中看有没有相应的配置,如果有的话,根据配置好的去执行,如果没有的话,再从网络上DNS域名解析服务器,找网络中的IP去执行。

在windows系统的host文件中进行域名和IP对应关系的配置

在C盘下,Windows文件夹中有一个System32,里面有一个drivers文件下,打开找到etc,有一个HOSTS文件,在最后一行添加:

192.168.8.54 www.abc.com
4.1.4 在Nginx中做请求转发的配置
server {
    listen  80;
    server_name localhost; 
}

把localhost改为服务器的IP地址: 192.168.6.85

location / {
    root   html;
    proxy_pass http://192.168.6.85:8085/user/hello;
    index  index.html index.htm;
}

为什么要配置为127.0.0.1,是因为项目和nginx目前同在同一个linux下。

Linux下安装Nginx步骤及项目部署_第2张图片

4.2 反向代理的配置2

要实现的最终效果就是:

使用nginx反向代理,根据访问的路径跳转到不同的端口的服务中,nginx的监听端口为9001,访问

http://192.168.8.54:9001/edu/ 直接跳转到127.0.0.1:8085/user/hello
http://192.168.8.54:9001/vod/ 直接跳转到127.0.0.1:8086/user/hello
4.2.1 在linux防火墙中开放9001端口
firewall-cmd --zone=public --add-port=9001/tcp --permanent
4.2.2 具体配置

打开 nginx.conf 文件,再添加一个server节点,写如下配置

server {
    listen  9001;
    server_name 192.168.8.54; 
    
    location   /edu/ {
         proxy_pass http://localhost:8085/user/hello;
    }
    location   /vod/ {
         proxy_pass http://localhost:8086/user/hello;
    }
}

说明:~ 符合是用的一种正则表达式的形式,意思就是说当你的访问路径中存在edu,就转发到8005 ,但是有个前提,如果使用了~ 线,proxy_pass 代理的服务器路径后面只能存在http://loalhost:8005 只能有IP地址+端口号

4.2.3 测试

在浏览器中输入

http://192.168.6.85:9001/edu/
http://192.168.6.85:9001/vod/

4.3 负载均衡的配置

在http块中添加如下配置

upstream myserver {
    server  192.168.6.85:8085;
    server  192.168.6.85:8086;
}

然后在server中把server_name 的值localhost改为 101.200.174.107

server {
    listen  80;
    server_name 192.168.8.54; 
}

在location中配置 proxy_pass http://myserver;

location / {
    root   html;
    index  index.html index.htm;
    proxy_pass http://myserver;
}

测试:

http://192.168.8.54/user/hello

4.4 负载均衡的策略

负载均衡是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。

Nginx提供了几种分配策略:

4.4.1轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

如果你买的两台服务器,配置不一致, 4核8G 1核2G

4.4.2 weight【轮询权重】

weight代表权重,默认值为1,权重越高被分配到的客户端请求越多

upstream myserver {
    server  192.168.8.54:8085 weight=1;
    server  192.168.8.54:8086 weight=3;
}

4.4.3 ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定一个后端服务器,可以解决session的问题

upstream myserver {
    ip_hash;
    server  101.200.174.107:8085;
    server  101.200.174.107:8086;
}

4.4.4 fair (第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配

upstream myserver {
    server  101.200.174.107:8085;
    server  101.200.174.107:8086;
    fair;
}

五、 动静分离的配置

5.1 前端页面的请求设置

把前端资源上传到nginx服务的安装路径下/usr/local/nginx下

$(function() {
    $("#btn").click(function() {
        $.ajax({
            url:"/ipport/index",
            type:"post",
            dataType:"text",
            success:function(rs){
                $("#msg").text(rs);
            }
        });
    });
})
5.2 后端Controller的设置
@CrossOrigin
@RestController
public class IndexController {
    @RequestMapping("/index")
    public String index(){
        System.out.println("进入项目1");
        return "欢迎登录首页!";
    }
}
5.3 Nginx的设置
upstream myserver {
           server  192.168.6.85:8085;
           server  192.168.6.85:8086;
}
​
server {
        listen       80;
        server_name  192.168.6.85;
        location / {
            root /web/myweb;  #如果前面不加/ 则会在nginx的安装目录下,寻找myweb目录。如果加上/ ,则会在linux的根目录下去寻找
            index index.html index.htm;
        }
        location /ipport/ {
           proxy_pass http://myserver/;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       
}
​
location /image/ {
    root /upload/;
}

你可能感兴趣的:(linux,nginx,运维)