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

Ubuntu云服务器上部署发布Vite项目

1 拷贝代码

一般来说是Windows环境下开发,Ubuntu环境下部署。因此首先要考虑的问题是如何将Vite项目的源代码拷贝到云服务器上面去。最简单的就是使用像MobaXterm这样的远程连接工具,这样远程连接工具一般都提供文件传输功能。

不过这样做对于更新很麻烦,总不能每次更新一点就将全部代码打包上传一遍。因此最好的方式就是使用Git,将代码上传到Github这样的仓库中,每次更新代码就可以实现增量更新,同时后期也很容易集成CICD。

不过使用Git仓库也很麻烦,大概的问题有以下几个:

  1. 如果Git仓库在内网,就要使用代理工具或者内网穿透工具。
  2. Github仓库网络不稳定问题,那么就需要使用代理工具或者加速服务。另外,某些情况下修改hosts也是个很有效的方案1
  3. Git安全策略问题。推荐还是使用SSH登录的方式,只用麻烦一次。HTTP登录方式有时候总会失效,而且每次都要输入账户密码。

2 构建部署

接下来就是构建Vite项目,这一步一般可以直接使用脚本,如下所示:

#!/bin/bash# 安装
npm install# 编译
npm run build# 杀掉所有包含 node 的进程(如果存在)
PIDS=$(ps aux | grep node | grep -v grep | awk '{print $2}')if [ -n "$PIDS" ]; thenecho "Killing processes: $PIDS"kill $PIDS
elseecho "No matching processes found."
fi# 杀掉所有包含 npm 的进程(如果存在)
PIDS=$(ps aux | grep npm | grep -v grep | awk '{print $2}')if [ -n "$PIDS" ]; thenecho "Killing processes: $PIDS"kill $PIDS
elseecho "No matching processes found."
fi# 启动前端
setsid npm run preview </dev/null >output.log 2>&1 &

这段脚本的意思是先使用npm install安装依赖库,然后再进行构建操作npm run build。接下来是杀掉所有包含node和npm的进程,因为脚本可能需要多次使用,每次使用之前Web服务可能已经启用了。最后使用Vite提供的预览服务(npm run preview)来发布该应用。

3 配置域名

如果是开发环境完成以上步骤就可以结束了,但是在云服务器上部署发布Web项目一般都是想通过域名来访问,并且最好省略端口号。具体步骤如下:

  1. 在云服务器提供商的后台配置端口号。一般新的服务器出于安全考虑,端口号都是设置成不对外开放的。以天翼云为例,是在访问控制的安全组中配置端口号的:
    云服务器配置端口号
  2. 在域名服务商的后台,将域名的解析地址指向云服务器的IP地址。
  3. 要省略掉端口号,HTTP服务就需要80端口,HTTPS服务需要443端口。国内的云服务器提供商统一要求先备案,才能对外开放80端口和443端口。

4. 配置SSL

如果不想被浏览器提示不安全,那么最好就要使用HTTPS,要使用HTTPS就要申请SSL证书。具体的操作过程可以参看本人的另一篇博文《在Ubuntu上使用Certbot申请Let’s Encrypt SSL证书》。

然后,在Vite项目的vite.config.js中进行如下配置:

import { defineConfig, loadEnv } from "vite";
import { resolve } from "path"; // 导入 path 模块export default defineConfig(({ mode }) => {const env = loadEnv(mode, process.cwd(), "");return {server: {host: "0.0.0.0", // 绑定所有网络接口port: 443, // 自定义开发服务器端口open: true, // 自动打开浏览器https: {key: resolve(__dirname, env.SSL_KEY), // 替换为你的密钥文件路径cert: resolve(__dirname, env.SSL_CERT), // 替换为你的证书文件路径},},build: {outDir: "./dist", // 构建输出目录},preview: {host: "0.0.0.0", // 绑定所有网络接口port: 443, // 预览服务器端口open: true, // 自动打开浏览器},};
});

这里的env.SSL_KEYenv.SSL_CERT就是《在Ubuntu上使用Certbot申请Let’s Encrypt SSL证书》中申请的证书文件,分别是证书私钥(/etc/letsencrypt/live/charlee44.com-0001/privkey.pem)和完整证书链(/etc/letsencrypt/live/charlee44.com-0001/fullchain.pem)。


  1. 解决腾讯云轻量服务器国内机器无法使用Github的方法 ↩︎

http://www.lryc.cn/news/579184.html

相关文章:

  • Redis基础(1):NoSQL认识
  • 端到端自动驾驶系统关键技术
  • 开发自动驾驶系统所需工具
  • 2025美国券商交易系统综合开发及解决方案报告:低延迟、全球化与代币化技术赋能机构业务新生态
  • “山河”应急指挥决策AI智能体 - 全生命周期构建实施说明
  • 轻松上手:使用Nginx实现高效负载均衡
  • python中的pydantic是什么?
  • 逆向入门(25、26)程序逆向篇-KeygenMe,MexeliteCRK1
  • Linux基本命令篇 —— alias命令
  • MIT协议开源CRM系统:打造高效客户关系管理解决方案
  • 【Vue入门学习笔记】项目的创建与基础认识
  • 存储过程封装:复杂业务逻辑的性能优化
  • 基于 TOF 图像高频信息恢复 RGB 图像的原理、应用与实现
  • 监测检测一体化项目实践——整体功能规划
  • 物联网实战:多语言(Java、Go、Rust、C++、C#、Rust)设备接入与数据处理
  • macOS挂载iOS应用沙盒文件夹
  • TikTok电商广告重大调整:GMVmax全面取代传统广告模式
  • iOS 集成RN Installing glog (0.3.5)报错的解决方案
  • 【echarts】解决 ECharts 图表模糊问题的实践心得:单条数据时字体颜色灰蒙蒙的, 图例失真, 字体模糊问题解决
  • 闲庭信步使用SV搭建图像测试平台:第二十六课——图像的二值化
  • 2-RuoYi-UI管理平台的启动
  • 幸狐RV1106开发板从SD卡启动自己的busybox1.36.1根文件系统
  • 【WPF】外部引用样式
  • 基于Apache POI实现百度POI分类快速导入PostgreSQL数据库实战
  • vscode vim配置
  • 【字节跳动】数据挖掘面试题0003:有一个文件,每一行是一个数字,如何用 MapReduce 进行排序和求每个用户每个页面停留时间
  • 【Erdas实验教程】026:遥感图像辐射增强(去条带处理)
  • Qt 5.9 XML文件写入指南
  • JavaScript 性能优化实战:减少 DOM 操作引发的重排与重绘
  • 无人机一机多控技术的核心要点