部署-打包并提交代码到Git服务器

news2024/11/24 23:01:50

前期准备工作
vue.config.js

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  // 项目出Bug,点击错误可以跳到对应的位置,实际生成环境是不需要的 默认为true
  productionSourceMap: false,
  lintOnSave: false,
  publicPath: process.env.NODE_ENV === "production" ? "/static/" : "/",
})

socket.js

  constructor() {
    if(process.env.NODE_ENV == "production"){
      this.server_host = window.location.origin
    }else{
      this.server_host = "http://127.0.0.1:5000";
    }
    this.socket = io(this.server_host);
  }

在终端输入下面命令进行打包

npm run build

将生成的这四个部分放置到服务端static中
在这里插入图片描述
在这里插入图片描述

生成的index.html放到templates中

app.py中渲染模板

@app.route("/")
def index():
    return render_template("index.html")

连接服务器
tabby

添加一个用户
在这里插入图片描述

cd lixuan/
mkdir chat
cd chat
apt update

   error:lixuan is not in the sudoers file.  This incident will be reported.

	解决办法: 执行su -  切换到root  将指定用户添加到root  执行adduser lixuan sudo

apt install git -y

代码拉下来之后直接执行

pip install -r requirements.txt

需要添加环境变量

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

source .bashrc

这时就可以使用flask进行启动了
安装

pip install gunicorn

执行下面命令

gunicorn --worker-class=eventlet --workers=1 --bind=0.0.0.0:5000 app:app

可以把对应的文件夹创建下
在这里插入图片描述

部署-使用Nginx和Gunicorn部署项目

sudo apt install nginx
cd /etc/nginx/conf.d/
touch chat.conf
vi chat.conf
server {
    listen 80;
                如果映射了域名可替换此ip
    server_name 47.116.114.26;

    location / {
        include proxy_params;
        proxy_pass http://127.0.0.1:5000;
    }

    location /static {
        alias /home/lixuan/chat/chat/static;
        expires 30d;
    }

    location /socket.io {
        include proxy_params;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        # 如果使用socket.io这个框架  后缀会自动加上
        proxy_pass http://127.0.0.1:5000/socket.io;
    }
}

测试nginx

service nginx configtest
结果:* Testing nginx configuration 

sudo service nginx restart

启动服务

gunicorn --worker-class=eventlet --workers=1 --bind=127.0.0.1:5000 app:app

在这里插入图片描述

上面的启动方式会卡终端
新建gunicorn.conf.py

worker_class = "eventlet"
workers=1
bind = "0.0.0.0:5000"
accesslog = "/home/lixuan/chat/chat/log/access.log"
errorlog = "/home/lixuan/chat/chat/log/error.log"
daemon=True

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/848605.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

720度全视角!VR直播遇上法院庭审,你体验过吗?

在元宇宙发展背景之下,VR直播技术同样驶入了发展的快车道,以沉浸式、交互式体验为特点的VR技术,将原本就受欢迎的直播变得更加立体、真实、可靠,观众只需要一部手机就可以实现全方位、无死角地观看直播现场,体验宛如身…

小白带你学习linux的Redis基础(三十二)

目录 前言 一、概述 1、NoSQL 2、Redis 二、安装 1、基础配置 2、编译安装 3、RPM安装网络源安装 三、目录结构 1、rpm -ql redis 2、/etc/redis.conf 四、命令解析 1、redis-server 2、redis-cli 2、redis-check-rdb 3、redis-check-aof 五、redis登录更改 …

ES面试题

前言 1、面试突击正确的学习姿势 老师在给你讲面试突击的时候,是有课件的,而且是有准备的。你在面试的时候,是没有笔记课件的,而且问题是由面试官提问的,具有一定的随机性面试突击课程的目标不是听懂,而是…

文件上传漏洞(webshell)

一、防护 1、防护 1、判断文件后缀,为图片的话才让上传成功。 2、解析文件内容(文件幻数)判断文件头和文件尾部是否一致 幻数 常见的 3、隐藏按钮(带上code唯一值) 4、二次渲染(类似拿着你的图片&#xff…

cannot import name ‘container_abcs‘ from ‘torch._six‘

进行模型训练的时候,报错: 原因是:torch1.8版本之后container_abcs被移除了,所以我们需要修改timm库中调用container_abcs的调用方式: timm库中调用container_abcs的文件是“~\Conda\envs\pytorch\Lib\site-packages\…

Java后台生成ECharts图片,并以Base64字符串返回

前言 通过echarts的jar包,Java后台生成一张图片,并把图片插入到word中。关于word插图片的代码在下一章。 需要用到的工具PhantomJS,Echarts-convert.js,jquery.js,echarts.js。 1.PhantomJS 介绍 PhantomJS是一个不需要浏览器的富客户端。 官方介绍&…

十年后的web渗透(网络安全)前景如何?你想知道的都在这里

前言 web渗透是网络安全大行业里入门板块,就像十年前的软件,前景非常被看好,薪资也很诱人。与软件测试和前端开发只需掌握一定的编程能力不同的是,渗透需要掌握的知识内容较多,花费的时间较长,渗透测试掌握…

值得苦练的100道Python经典练手题,(附详细答案)

嗨喽大家好卷子又来了,100道Python经典练手题奉上 花了一周的时间,整理了100道Python的练习题,如果你是一位初学者,那么这一份练习题将会给你带来极大的帮助,如果你能够完全独立的完成这份练习题,你已经入…

C/C++学习笔记 Vantage Point Trees的C++实现

下面代码是VP 树的 C 实现,递归search()函数决定是搜索左孩子、右孩子还是两个孩子。为了有效地维护结果列表,我们使用优先级队列。 // A VP-Tree implementation, by Steve Hanov. (steve.hanovgmail.com) // Released to the Public Domain // Based o…

【C++】开源:tinyxml2解析库配置使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍tinyxml2解析库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,…

路由器中DMZ、UPnP、Port Forwarding等功能介绍与使用

目录 一、DMZ功能1.1 概念1.2 验证测试方式 二、UPnP功能2.1 概念2.2 验证测试方法 三、Port Forwarding功能3.1 概念3.2 验证测试方法3.3 NAT相关 一、DMZ功能 1.1 概念 **DMZ(Demilitarized Zone)**是指位于防火墙内部网络(LAN&#xff0…

Sentinel整合Spring Cloud Gateway、Zuul详解

Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。 Sentinel 1.6.0 引入了 Sentinel API Gateway Adapter Common 模块,此模块中包含网关限流的规则和自定义 API 的实体和管理逻辑: GatewayFlowRule:网关限流规则…

公文校对要点:确保准确性和规范性

公文校对是确保文档准确性和规范性的重要步骤。以下是公文校对的要点: 1.拼写和语法检查:仔细检查文档中的拼写错误和语法错误。确保词语的正确拼写,并使用正确的语法结构和标点符号。 2.信息准确性:核对文档中的事实和数据&#…

AP51656 电流采样降压恒流驱动IC RGB PWM深度调光 LED电源驱动

产品描述 AP51656是一款连续电感电流导通模式的降压恒流源,用于驱动一颗或多颗串联LED 输入电压范围从 5 V 到 60V,输出电流 可达 1.5A 。根据不同的输入电压和 外部器件, 可以驱动高达数十瓦的 LED。 内置功率开关,采用电流采样…

Java ThreadPoolExecutor,Callable,Future,FutureTask 详解

目 录 一、ThreadPoolExecutor类讲解 1、线程池状态 五种状态 2、ThreadPoolExecutor构造函数 2.1)线程池工作原理 2.2)KeepAliveTime 2.3)workQueue 任务队列 2.4)threadFactory 2.5)handler 拒绝策略 3、常…

递归在树的深度遍历中的运用

树的深度遍历 对于树这种数据结构,之前一直使用的是层次遍历,也就是广度优先搜索的方式(BFS);对于树的遍历,还可以进行深度优先搜索(DFS)。 而结合递归,树的深度优先搜索…

【硬件设计】模拟电子基础三--集成运算放大电路

模拟电子基础三--集成运算放大电路 一、集成运算放大器1.1 定义、组成与性能1.2 电流源电路1.3 差动放大电路1.4 理想运算放大器 二、集成运算放大器的应用2.1 反向比例运算电路2.2 同向比例运算电路2.3 反向加法运算电路2.4 反向减法运算电路2.5 积分运算电路2.6 微分运算电路…

vivado tcl创建工程和Git管理

一、Tcl工程创建 二、Git版本管理 对于创建完成的工程需要Git备份时,不需要上传完整几百或上G的工程,使用tcl指令创建脚本,并只将Tcl脚本上传,克隆时,只需要克隆tcl脚本,使用vivado导入新建工程即可。 优…

最详细,手机APP测试-ADB命令总结大全,你要的都在这...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 adb是什么&#x…

系统集成项目成本管理

在项目中,成本是指项目活动或其组成部分的货币价值或价格,包括为实施、完成或创造该活动或其组成部分所需资源的货币价值。具体的成本一般包括直接工时、其他百接费用、间接工时、其他间接费用以及采购价格。 项目全过程所耗用的各种成本的总和为项目成本…