前言

部署了三个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. keil使用VScode外部编辑器

    1.首先我们双击桌面的keil图标,打开keil主界面: 2.点击上方菜单栏的Tools菜单,选择如下图所示的选项: 3.点击如下图所示的菜单上红笔标注的地方,给这个工具命名为vscode: 4.然后 ...

  2. 设置添加SSH-(转自破男孩)

    很多朋友在用github管理项目的时候,都是直接使用https url克隆到本地,当然也有有些人使用 SSH url 克隆到本地.然而,为什么绝大多数人会使用https url克隆呢? 这是因为,使用 ...

  3. python3 smtplib发送邮件

    使用smtp包发送邮件还依赖email的一些方法 发送邮件主要分为三步: 1,定义邮箱参数:邮箱服务器地址,邮箱用户名,邮箱密码,邮件发送方,邮件接收方,邮件标题,邮件内容 2,配置发送内容 3,实例 ...

  4. osi七层模型与tcp/ip四层模型的差别

    OSI 七层协议 应用层 表示层 会话层 运输层 网络层 数据链路层 物理层 TCP/IP 四层协议 应用层 运输层 网际层 网络接口层 五层协议: 应用层 为用户的应用进程提供服务 HTTP SMT ...

  5. ssh登录巨慢加速验证

    ssh登录巨慢怎么办,设计验证是好的,但是那些验证的确没啥用反而造成了一些不便修改/开启 /etc/ssh/ssh_config这三个参数再重启即可取消验证 StrictHostKeyChecking ...

  6. 【补档_STM32单片机】脉搏波采集显示硬件设计

    一.脉搏波简介 ​ 脉搏一般情况下指的都是动脉脉搏.每分钟的脉搏次数称为脉率,正常情况下与心率是一致的.心脏的一次收缩和舒张成为一个心动周期.在每个心动周期内,心室的收缩和舒张会引起脉内压力的周期性波 ...

  7. Python+Selenium学习笔记10 - send_keys上传文件

    在火狐浏览器上传文件 上传前,同一个HTML文件在火狐和Edge浏览器显示有些不同 这是Firefox浏览器的显示 这是Edge浏览器 上传后 1 # coding = utf-8 2 3 from ...

  8. MindSpore后端运行类

    MindSpore后端运行类 Q:如何在训练过程中监控loss在最低的时候并保存训练参数? A:可以自定义一个Callback.参考ModelCheckpoint的写法,此外再增加判断loss的逻辑: ...

  9. 什么是视觉Visual SLAM

    什么是视觉Visual SLAM What Is Visual SLAM? What are the origins of visual SLAM? and what are some other a ...

  10. Python_selenium页面元素整合设计经验