当前位置: 首页 > article >正文

如何将vue2使用npm run build打包好的文件上传到服务器

要将 Vue 2 项目打包并部署到服务器上,并使用 Nginx 作为 Web 服务器,可以按照以下步骤操作:

1. 打包 Vue 2 项目

首先,确保你的 Vue 2 项目已经开发完成,并且可以在本地正常运行。然后使用以下命令进行打包:


npm run build

打包完成后,项目根目录下会生成一个 dist 文件夹,里面包含了所有静态文件(HTML、CSS、JS 等)。

2. 将打包文件上传到服务器

你可以使用 scprsync 或者 FTP 工具将 dist 文件夹上传到服务器。以下是使用 scp 的示例:


scp -r dist/ user@your_server_ip:/path/to/your/project
  • user 是你的服务器用户名。

  • your_server_ip 是你的服务器 IP 地址。

  • /path/to/your/project 是你希望将文件上传到的服务器目录。

3. 安装和配置 Nginx

如果服务器上还没有安装 Nginx,可以通过以下命令安装:

对于 Ubuntu/Debian 系统:

sudo apt updatesudo apt install nginx
对于 CentOS/RHEL 系统:

sudo yum install nginx

安装完成后,启动 Nginx 并设置为开机自启:


sudo systemctl start nginxsudo systemctl enable nginx

4. 配置 Nginx 以服务 Vue 应用

接下来,你需要配置 Nginx 来服务你的 Vue 应用。编辑 Nginx 的配置文件:


sudo nano /etc/nginx/sites-available/your_project

在文件中添加以下内容:


server {listen 82;server_name your_domain_or_ip;root /path/to/your/project/dist;index index.html;location / {try_files $uri $uri/ /index.html;}location /api/ {proxy_pass http://your_backend_server;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;add_header Access-Control-Allow-Methods *;add_header Access-Control-Allow-Origin $http_origin;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}}
  • listen xx, xx是你的监听端口

  • your_domain_or_ip 是你的域名或服务器 IP 地址。

  • /path/to/your/project/dist 是你上传的 dist 文件夹的路径。

  • your_backend_server 是后端 API 服务器地址(如果有的话)。/api/代表匹配前端啊baseURL='/api'的时候。例如:proxy_pass http://127.0.0.1:8002/api/;

保存并退出编辑器。

5. 启用 Nginx 配置

创建一个符号链接来启用该配置文件:


sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/

然后测试 Nginx 配置是否正确:


sudo nginx -t

如果配置正确,重新加载 Nginx:


sudo systemctl reload nginx

6. 访问你的 Vue 应用

现在,你可以通过浏览器访问你的 Vue 应用了。在地址栏中输入你的域名或服务器 IP 地址,应该就能看到你的 Vue 应用正常运行。

7. (可选)配置 HTTPS

如果你有域名并且希望启用 HTTPS,可以使用 Let's Encrypt 免费 SSL 证书。安装 Certbot 并获取证书:


sudo apt install certbot python3-certbot-nginxsudo certbot --nginx -d your_domain

按照提示操作,Certbot 会自动配置 Nginx 以使用 HTTPS。

总结

通过以上步骤,你已经成功将 Vue 2 项目打包并部署到服务器上,使用 Nginx 作为 Web 服务器。如果有任何问题,可以检查 Nginx 的日志文件(通常位于 /var/log/nginx/error.log)来排查错误。


配置 Nginx 以服务 Vue 应用的核心是通过 Nginx 将用户的请求正确地指向 Vue 应用的静态文件(如 index.html、JavaScript、CSS 等),并确保 Vue 的路由(如 Vue Router)能够正常工作。以下是详细的步骤和解释:


1. Nginx 配置文件的基本结构

Nginx 的配置文件通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/ 目录下。每个站点(或应用)通常有一个独立的配置文件。

以下是一个典型的 Nginx 配置文件示例,用于服务 Vue 应用:


server {# 监听端口(HTTP 默认是 80,HTTPS 默认是 443)listen 80;# 服务器域名或 IP 地址server_name your_domain_or_ip;# Vue 应用的静态文件路径root /path/to/your/project/dist;# 默认访问的文件index index.html;# 处理根路径请求location / {# 尝试按顺序查找文件或目录,如果找不到则返回 index.htmltry_files $uri $uri/ /index.html;}# 处理 API 请求(如果有后端服务)location /api/ {# 将请求代理到后端服务器proxy_pass http://your_backend_server;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 处理 50x 错误页面error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}}

2. 关键配置项详解

1. listen
  • 指定 Nginx 监听的端口号。

  • HTTP 默认端口是 80,HTTPS 默认端口是 443

  • 例如:

    
    listen 80;
    
2. server_name
  • 指定服务器的域名或 IP 地址。

  • 如果使用域名,需要确保域名已经解析到服务器的 IP 地址。

  • 例如:

    
    server_name example.com;
    

    或者:

    
    server_name 192.168.1.100;
    
3. root
  • 指定 Vue 应用静态文件的根目录。

  • 这是 Vue 打包后生成的 dist 文件夹的路径。

  • 例如:

    
    root /var/www/vue-app/dist;
    
4. index
  • 指定默认访问的文件。

  • 对于 Vue 应用,通常是 index.html

  • 例如:

    
    index index.html;
    
5. location /
  • 处理根路径(/)的请求。

  • 使用 try_files 指令来尝试查找文件或目录,如果找不到则返回 index.html

  • 这是为了支持 Vue Router 的路由功能,确保用户在直接访问非根路径时(如 /about),Nginx 也能正确返回 index.html,由 Vue 应用处理路由。

  • 例如:

    
    location / {try_files $uri $uri/ /index.html;}
    
6. location /api/
  • 如果你的 Vue 应用需要与后端 API 通信,可以通过 Nginx 将 API 请求代理到后端服务器。

  • 例如:

    
    location /api/ {proxy_pass http://your_backend_server;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
    
    • proxy_pass:将请求转发到后端服务器。

    • proxy_set_header:设置请求头,确保后端服务器能够获取正确的客户端信息。

7. error_page
  • 定义错误页面。

  • 例如,当服务器出现 500、502、503 或 504 错误时,返回 /50x.html

  • 例如:

    
    error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}
    

3. 完整的配置示例

以下是一个完整的 Nginx 配置文件示例,适用于服务 Vue 应用:


server {listen 80;server_name example.com;root /var/www/vue-app/dist;index index.html;location / {try_files $uri $uri/ /index.html;}location /api/ {proxy_pass http://backend_server;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}}

4. 启用配置

  1. 将配置文件保存到 /etc/nginx/sites-available/ 目录下,例如:

    
    sudo nano /etc/nginx/sites-available/vue-app
    
  1. 创建一个符号链接到 /etc/nginx/sites-enabled/ 目录:

    
    sudo ln -s /etc/nginx/sites-available/vue-app /etc/nginx/sites-enabled/
    
  1. 测试 Nginx 配置是否正确:

    
    sudo nginx -t
    
  1. 如果测试通过,重新加载 Nginx:

    
    sudo systemctl reload nginx
    

5. 验证部署

  1. 在浏览器中访问你的域名或服务器 IP 地址,例如:

    
    http://example.com
    

    
    http://192.168.1.100
    
  1. 如果一切正常,你应该能够看到 Vue 应用的首页。

6. 常见问题排查

  • 404 错误

    • 检查 root 路径是否正确指向 dist 文件夹。

    • 确保 try_files 配置正确。

  • Vue 路由不生效

    • 确保 location / 中有 try_files $uri $uri/ /index.html;
  • Nginx 配置测试失败

    • 使用 sudo nginx -t 检查语法错误。

    • 查看 Nginx 错误日志:/var/log/nginx/error.log

添加用户

python manage.py useradd -u 用户名 -p 密码 -n 昵称 [-s]

后台启动django启动脚本

以大屏为例:

nohup python /fishing_trace_wsp/datacenter/screenbackend/manage.py runserver 0.0.0.0:8001 >> output.log 2>>output.log &

其中 >> 代表追加到文件末尾,output.log是输出日志文件名,&表示任务在后台执行,即使ssh窗口关闭,服务依然会在后台持续运行。

如果是datacenter

则需要先切换到对应虚拟环境(datacenter),再运行启动指令

conda activate datacenter

nohup python /fishing_trace_wsp/datacenter/backend/manage.py runserver 0.0.0.0:8002 >> output.log 2>>output.log &

相关文章:

如何将vue2使用npm run build打包好的文件上传到服务器

要将 Vue 2 项目打包并部署到服务器上,并使用 Nginx 作为 Web 服务器,可以按照以下步骤操作: 1. 打包 Vue 2 项目 首先,确保你的 Vue 2 项目已经开发完成,并且可以在本地正常运行。然后使用以下命令进行打包&#xf…...

Ubuntu 22.04 系统下 Docker 安装与配置全指南

Ubuntu 22.04 系统下 Docker 安装与配置全指南 一、前言 Docker 作为现代开发中不可或缺的容器化工具,能极大提升应用部署和环境管理的效率。本文将详细介绍在 Ubuntu 22.04 系统上安装与配置 Docker 的完整流程,包括环境准备、安装步骤、权限配置及镜…...

动态表单开发避坑:改变input的值不会触发change事件即时修复策略-WdatePicker ——仙盟创梦IDE

原始传统模式 onchange <input onchange"未来之窗东方仙盟change(this)" oni > <script>function 未来之窗东方仙盟change(onj){console.log("未来之窗东方仙盟change",onj.value)} </script> 测试 原始传统模式 oninput <input …...

10.安卓逆向2-frida hook技术-frida基本使用-frida指令(用于hook)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取码&#xff1…...

动态设置微信小程序页面标题(navigationBarTitleText属性)

前言&#xff1a; 最近在公司进行小程序研发的时候&#xff0c;产品给出了一个动态加载页面标题的需求&#xff0c;经过调研之后将结果在这里与各位伙伴进行分享。 代码展示&#xff1a; 在.json文件中进行初始配置&#xff1a; { "usingComponents": {}, &q…...

前端流式接收数据讲解

前端流式接收数据全面讲解 前端流式接收数据&#xff08;Streaming Data Reception&#xff09;是现代 Web 应用中一个重要特性&#xff0c;尤其在处理实时通信、大文件传输、聊天、视频播放、实时日志监控等场景下。下面我们从概念到技术实现&#xff0c;再到应用示例&#x…...

Flutter下的一点实践

目录 1、背景2、refena创世纪代码3、localsend里refena的刷新3.1 初始状态3.2 发起设备扫描流程3.3 扫描过程3.3 刷新界面 4.localsend的设备扫描流程4.1 UDP广播设备注册流程4.2 TCP/HTTP设备注册流程4.3 localsend的服务器初始化工作4.4总结 1、背景 在很久以前&#xff0c;…...

Python训练营打卡 Day41

简单CNN 知识回顾 数据增强卷积神经网络定义的写法batch归一化&#xff1a;调整一个批次的分布&#xff0c;常用与图像数据特征图&#xff1a;只有卷积操作输出的才叫特征图调度器&#xff1a;直接修改基础学习率 卷积操作常见流程如下&#xff1a; 1. 输入 → 卷积层 → Batch…...

Eclipse集成lombok

一、安装 Lombok 插件&#xff08;Eclipse 支持&#xff09; 下载 lombok.jar&#xff1a; 前往官网下载页面&#xff1a;https://projectlombok.org/download 下载最新版本的 lombok.jar 文件。 运行 lombok.jar 配置 Eclipse&#xff1a; 双击下载的 lombok.jar&#xff0…...

什么是trace,分布式链路追踪(Distributed Tracing)

在你提到的 “个人免费版” 套餐中&#xff0c;“Trace 上报量&#xff1a;5 万条 / 月&#xff0c;存储 3 天” 里的 Trace 仍然是指 分布式链路追踪记录&#xff0c;但需要结合具体产品的场景来理解其含义和限制。以下是更贴近个人用户使用场景的解释&#xff1a; 一、这里的…...

VScode ios 模拟器安装cocoapods

使用 Homebrew 安装&#xff08;推荐&#xff09; 如果你有 Homebrew&#xff0c;直接用它安装更稳定&#xff1a; brew install cocoapods...

Redis最佳实践——安全与稳定性保障之数据持久化详解

Redis 在电商应用的安全与稳定性保障之数据持久化全面详解 一、持久化机制深度解析 1. 持久化策略矩阵 策略触发方式数据完整性恢复速度适用场景RDB定时快照分钟级快容灾备份/快速恢复AOF实时追加日志秒级慢金融交易/订单关键操作混合模式RDBAOF同时启用秒级中等高安全要求场…...

互联网大厂Java求职面试实战:Spring Boot微服务架构及Kafka消息处理示例解析

互联网大厂Java求职面试实战&#xff1a;Spring Boot微服务架构及Kafka消息处理示例解析 引言 在互联网大厂的Java开发岗位面试中&#xff0c;考察候选人对微服务架构设计、消息队列处理及高并发处理能力是重点。本文结合Spring Boot框架和Kafka消息队列&#xff0c;模拟一个…...

K 值选对,准确率翻倍:KNN 算法调参的黄金法则

目录 一、背景介绍 二、KNN 算法原理 2.1 核心思想 2.2 距离度量方法 2.3 算法流程 2.4算法结构&#xff1a; 三、KNN 算法代码实现 3.1 基于 Scikit-learn 的简单实现 3.2 手动实现 KNN&#xff08;自定义代码&#xff09; 四、K 值选择与可视化分析 4.1 K 值对分类…...

技术栈ES的介绍和使用

目录 1. 全文搜索引擎&#xff08;Elastic Search&#xff09;的由来2. Elastic Search 概述2.1 Elastic Search 介绍2.2 Elastic Search 功能2.3 Elastic Search 特点 3. 安装 Elastic Search3.1 ES 的安装3.2 安装 kibana3.3 ES 客户端的安装 4. Elastic Search 基本概念4.1 …...

跟Gemini学做PPT-模板样式的下载

好的&#xff0c;这里有一些推荐的网站&#xff0c;您可以在上面找到PPT目录样式和模板的灵感&#xff1a; SlideModel (slidemodel.com) 提供各种预先设计的目录幻灯片模板。这些模板100%可编辑&#xff0c;可用于PowerPoint和Google Slides。您可以找到不同项目数量&#xff…...

Windows版本的postgres安装插件http

1、下载安装包 这里使用安装 pgsql-http 的扩展 源码地址&#xff1a;GitHub - pramsey/pgsql-http: HTTP client for PostgreSQL, retrieve a web page from inside the database. 编译的安装地址&#xff1a;http extension for windows updated to include PostgreSQL17 …...

uni-app学习笔记十六-vue3页面生命周期(三)

uni-app官方文档页面生命周期部分位于页面 | uni-app官网。 本篇再介绍2个生命周期 1.onUnload&#xff1a;用于监听页面卸载。 当页面被关闭时&#xff0c;即页面的缓存被清掉时触发加载onUnload函数。 例如:在demo6页面点击跳转到demo4&#xff0c;在demo4页面回退不了到d…...

优化的两极:凸优化与非凸优化的理论、应用与挑战

在机器学习、工程设计、经济决策等众多领域&#xff0c;优化问题无处不在。而在优化理论的世界里&#xff0c;凸优化与非凸优化如同两个截然不同的 “王国”&#xff0c;各自有着独特的规则、挑战和应用场景。今天&#xff0c;就让我们深入探索这两个优化领域的核心差异、算法特…...

(五)MMA(OpenTelemetry/Rabbit MQ/ApiGateway/MongoDB)

文章目录 项目地址一、OpenTelemetry1.1 配置OpenTelemetry1. 服务添加2. 添加服务标识3. 添加请求的标识4. 添加中间价 二、Rabbit MQ2.1 配置Rabbit MQ1. docker-compose2. 添加Rabbit MQ的Connect String 2.2 替换成Rabbit MQ1. 安装所需要的包2. 使用 三、API Gateways3.1 …...

TCP通信与MQTT协议的关系

1. MQTT 处理核心&#xff08;Mqtt_Pro&#xff09; void Mqtt_Pro(void) { MQTT_Init(); // 初始化MQTT协议栈&#xff08;连接参数、缓冲区等&#xff09; MQTT_SendPro(); // 处理MQTT发送&#xff08;封装消息&#xff0c;调用TCP发送&#xff09; MQTT_RecPro();…...

AWS创建github相关的角色

创建github-actions角色 {"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Federated": "arn:aws:iam::11111111:oidc-provider/token.actions.githubusercontent.com…...

数据编辑器所具备的数据整理功能​

在企业的数据处理过程中&#xff0c;数据清洗与整理是至关重要的环节&#xff0c;而数据编辑器在这方面发挥着关键作用。在一份包含客户信息的数据表中&#xff0c;常常会出现缺失值的情况。比如客户的年龄、联系方式等字段可能因为各种原因没有被记录&#xff0c;这就形成了缺…...

Unity网络开发实践项目

摘要&#xff1a;该网络通信系统基于Unity实现&#xff0c;包含以下几个核心模块&#xff1a; 协议配置&#xff1a;通过XML定义枚举&#xff08;如玩家/英雄类型&#xff09;、数据结构&#xff08;如PlayerData&#xff09;及消息协议&#xff08;如PlayerMsg&#xff09;&a…...

Jetson Orin Nano - SONY imx415 camera驱动开发

目录 前言: 调试准备工作: 修改内核默认打印等级 一、imx415驱动开发 1、硬件接线 2、设备树修改 2.1 创建 tegra234-p3767-camera-p3768-imx415-C-4lane.dtsi 文件 2.2 tegra234-p3767-camera-p3768-imx415-C-4lane.dtsi 添加到设备树 2.3 编译设备树 3、imx415驱动…...

word为跨页表格新加表头和表名

问题&#xff1a; 当表格过长需要跨页时&#xff08;如下图所示&#xff09;&#xff0c;某些格式要求需要转页接排加续表。 方法一&#xff1a; 1、选中表格&#xff0c;在“表布局”区域点开“自动调整”&#xff0c;选择“固定列宽”&#xff08;防止后续拆分表格后表格变…...

测试用例篇章

本节概要&#xff1a; 测试⽤例的概念 设计测试⽤例的万能思路 设计测试⽤例的⽅法 一、测试用例 1.1 概念 什么是测试用例&#xff1f; 测试⽤例&#xff08;Test Case&#xff09;是为了实施测试⽽向被测试的系统提供的⼀组集合&#xff0c;这组集合包含&#xff1a;测…...

2025年北京市职工职业技能大赛第六届信息通信行业网络安全技能大赛复赛CTF部分WP-哥斯拉流量分析

2025年北京市职工职业技能大赛第六届信息通信行业网络安全技能大赛复赛CTF部分WP-哥斯拉流量分析 一、流量分析 题目没有任何提示,附件gzl.pcap 解题哥斯拉流量300多KB包很多,没啥经验只能挨个看回来之后又狠狠得撸了一把哥斯拉流量分析我这里用的是哥斯拉4.0.1 测试链接…...

Django ToDoWeb 服务

我们的任务是使用 Django 创建一个简单的 ToDo 应用程序,允许用户添加、查看和删除笔记。我们将通过设置 Django 项目、创建 Todo 模型、设计表单和视图来处理用户输入以及创建模板来显示任务来构建它。我们将逐步实现核心功能以有效地管理 todo 项。 Django ToDoWeb 服务 …...

【软件】在 macOS 上安装 Postman

在 macOS 上安装 Postman 是一个简单的过程&#xff0c;以下是详细的步骤&#xff1a; 一、下载 Postman • 访问 Postman 官方网站&#xff1a; 打开浏览器&#xff0c;访问Postman 官方下载页面。 • 下载安装包&#xff1a; 页面会自动识别你的系统&#xff0c;点击“Dow…...