前言

部署了三个nginx用于前端项目, 并使用keepalived部署好热备, 所以总共有5nginx

创建好nginx的文件和配置

根据上面的指令创建好目录

mkdir /home/web/nginx01
mkdir /home/web/nginx02
mkdir /home/web/nginx03
  • nginx.conf配置文件

这里我配置了三个nginx节点

user  nginx;
worker_processes 1; error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid; events {
worker_connections 1024;
} http {
include /etc/nginx/mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on;
#tcp_nopush on; keepalive_timeout 65; #gzip on; proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 5s;
proxy_send_timeout 5s;
proxy_read_timeout 5s;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k; server {
listen 6501;
server_name 192.168.0.200;
location / {
root /home/web/nginx/renren-vue;
index index.html index.htm;
}
}
}

前面的差别不大, 就后面这一点不太一样

server {
listen 6501;
server_name 192.168.0.200;
location / {
root /home/web/nginx/renren-vue;
index index.html index.htm;
}
}
server {
listen 6502;
server_name 192.168.0.200;
location / {
root /home/web/nginx/renren-vue;
index index.html index.htm;
}
}
server {
listen 6503;
server_name 192.168.0.200;
location / {
root /home/web/nginx/renren-vue;
index index.html index.htm;
}
}

docker配置指令

docker run -it -d --name=web01 --net=host \
-v /home/web/nginx01/nginx.conf:/etc/nginx/nginx.conf \
-v /home/web/nginx01:/home/web/nginx/renren-vue \
--user=root --privileged=true nginx docker run -it -d --name=web02 --net=host \
-v /home/web/nginx02/nginx.conf:/etc/nginx/nginx.conf \
-v /home/web/nginx02:/home/web/nginx/renren-vue \
--user=root --privileged=true nginx docker run -it -d --name=web03 --net=host \
-v /home/web/nginx03/nginx.conf:/etc/nginx/nginx.conf \
-v /home/web/nginx03:/home/web/nginx/renren-vue \
--user=root --privileged=true nginx

利用keepalived配置热备方案

配置主机keepalived

  • 进入容器

    docker exec -it bn01 bash
  • 更新

    apt update
  • 安装vim

    apt install vim
  • 安装keepalived

    apt install keepalived
  • 修改配置文件

    vi /etc/keepalived/keepalived.conf
  • 写入配置文件
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.0.160
}
}
virtual_server 192.168.0.160 6701 {
delay_loop 3
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.0.200 6601 {
weight 1
}
}
  • 启动

    service keepalived start
  • 验证

    docker top bn01

    看下keepalived进程是否运行, 如果运行再访问

    http://192.168.0.160:6701/#/home

    看下是否能够访问

配置备机

  • 进入容器

    docker exec -it bn02 bash
  • 更新

    apt update
  • 安装vim

    apt install vim
  • 安装keepalived

    apt install keepalived
  • 修改配置文件

    vi /etc/keepalived/keepalived.conf
  • 写入配置文件
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 52
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.0.160
}
}
virtual_server 192.168.0.160 6701 {
delay_loop 3
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.0.200 6602 {
weight 1
}
}
  • 启动

    service keepalived start
  • 验证

    docker top bn02

    看下keepalived进程是否存在, 如果存在则

    http://192.168.0.160:6701/#/home

    看下是否能够访问

现在停止掉主机, 然后稍等一会儿再看看是否能够运行

exit 退出docker容器

执行docker stop bn01停止掉主机

可能需要判断下, docker logs bn01docker logs bn02 看下最近一次访问是否, 我这里发现是备机在运行, 所以实际上我执行的是docker stop bn02

发现访问http://192.168.0.160:6701/#/home网址还是没问题

这里需要等待几分钟, 可改等待时间

成功部署热备

在docker中使用nginx部署前端项目的更多相关文章

  1. nginx部署前端项目

    1.在阿里云服务器上安装nginx,推荐使用yum安装 yum install -y nginx // 命令安装 nginx 服务器 2.配置nginx 安装完成后,进入 nginx 配置文件目录 一 ...

  2. 简单的利用nginx部署前端项目

    网上有很多教程写的一大堆东西,新手可能会有点看不懂,现在我写这篇文章是为了更好的帮助新手,如何将自己的前端项目部署到自己的服务器上. 首先我们必须要有一台自己的ubuntu服务器,如果没有可以去阿里云 ...

  3. nginx 部署前端项目(vue)

    前提:安装好nginx 打开nginx目录,一般是(/usr/local/nginx) npm run build 打好vue包 一般放到(/usr/local/nginx/html/)目录下 配置: ...

  4. docker自动化部署前端项目实战一

    docker自动化部署前端项目实战一 本文适用于个人项目,如博客.静态文档,不涉及后台数据交互,以部署文档为例. 思路 利用服务器node脚本,监听github仓库webhook push事件触发po ...

  5. 基于云原生DevOps服务自动化部署前端项目学习总结

    本文主要以部署前端Vue项目为例,讲述了如何基于云原生DevOps服务自动化部署前端项目~从开发完成到线上环境,我们只需提交代码即可~ 一.引言 作为一名开发人员,日常工作中我们除了需要负责代码的开发 ...

  6. nginx部署vue项目

    nginx是一个高性能的HTTP和反向代理服务器.因此常用来做静态资源服务器和后端的反向代理服务器.本文主要记录使用nginx去部署使用vue搭建的前端项目,项目基于vue官方的脚手架vue-cli构 ...

  7. 使用uWSGI+nginx部署Django项目

    最近使用django写了一些项目,不过部署到服务器上碰到一些问题,还有静态文件什么的一堆问题,这里总结一下碰到的问题和解决方案,总体思路是按照官方文档走的. 原文地址:http://uwsgi-doc ...

  8. nginx部署h5项目

    1. nginx部署h5项目 此为windows部署,liunx也类似的 1.1. 前言 部署h5项目还是很简单的,不过对小白来讲一开始可能也是一脸懵逼,这个简单教程针对的是从未部署过前后端分离前端项 ...

  9. 通过Nginx部署flask项目

    用Flask开发之后,很多人,喜欢用nohup python manage.py & 这样的形式,放到后台运行,其实这样只是个发开模式,很简陋,无法支持并发,进程监控等功能.所以采用nginx ...

随机推荐

  1. mysql的示例及练习

    示例及练习1-MOSHOU.hero.txtcreate database MOSHOU;use MOSHOU;create table hero(id int,name char(15),sex e ...

  2. Java中JDK,JRE和JVM之间的关系-(转载)

    初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Envi ...

  3. 如何使用 IoC

    创建Maven工程,pom.xml添加依赖 <?xml version="1.0" encoding="UTF-8"?> <project x ...

  4. GO学习-(8) Go语言基础之数组

    Go语言基础之数组 Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化. 基本语法: // 定义一个长度为3元素类型为 ...

  5. TVM代码生成codegen

    TVM代码生成codegen 硬件后端提供程序(例如Intel,NVIDIA,ARM等),提供诸如cuBLAS或cuDNN之类的内核库以及许多常用的深度学习内核,或者提供框架例,如带有图形引擎的DNN ...

  6. cuGraph-GPU图形分析

    cuGraph-GPU图形分析 所述RAPIDS cuGraph库是GPU的集合加速图形算法,在GPU DataFrames中发现过程数据.cuGraph的愿景是使图分析无处不在,以至于用户只是根据分 ...

  7. 使用现代C++如何避免bugs(上)

    使用现代C++如何避免bugs(上) How to avoid bugs using modern C++ C++的主要问题之一是拥有大量的构造,它们的行为是未定义的,或者程序员只是意想不到的.在各种 ...

  8. 深度学习Anchor Boxes原理与实战技术

    深度学习Anchor Boxes原理与实战技术 目标检测算法通常对输入图像中的大量区域进行采样,判断这些区域是否包含感兴趣的目标,并调整这些区域的边缘,以便更准确地预测目标的地面真实边界框.不同的模型 ...

  9. CVPR2020:点云三维目标跟踪的点对盒网络(P2B)

    CVPR2020:点云三维目标跟踪的点对盒网络(P2B) P2B: Point-to-Box Network for 3D Object Tracking in Point Clouds 代码:htt ...

  10. 利用MONAI加速医学影像学的深度学习研究

    利用MONAI加速医学影像学的深度学习研究 Accelerating Deep Learning Research in Medical Imaging Using MONAI 医学开放式人工智能网络 ...