Ubuntu云服务器上部署发布Vite项目
1 拷贝代码
一般来说是Windows环境下开发,Ubuntu环境下部署。因此首先要考虑的问题是如何将Vite项目的源代码拷贝到云服务器上面去。最简单的就是使用像MobaXterm这样的远程连接工具,这样远程连接工具一般都提供文件传输功能。
不过这样做对于更新很麻烦,总不能每次更新一点就将全部代码打包上传一遍。因此最好的方式就是使用Git,将代码上传到Github这样的仓库中,每次更新代码就可以实现增量更新,同时后期也很容易集成CICD。
不过使用Git仓库也很麻烦,大概的问题有以下几个:
- 如果Git仓库在内网,就要使用代理工具或者内网穿透工具。
- Github仓库网络不稳定问题,那么就需要使用代理工具或者加速服务。另外,某些情况下修改hosts也是个很有效的方案[1]。
- 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" ]; then
echo "Killing processes: $PIDS"
kill $PIDS
else
echo "No matching processes found."
fi
# 杀掉所有包含 npm 的进程(如果存在)
PIDS=$(ps aux | grep npm | grep -v grep | awk '{print $2}')
if [ -n "$PIDS" ]; then
echo "Killing processes: $PIDS"
kill $PIDS
else
echo "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项目一般都是想通过域名来访问,并且最好省略端口号。具体步骤如下:
- 在云服务器提供商的后台配置端口号。一般新的服务器出于安全考虑,端口号都是设置成不对外开放的。以天翼云为例,是在访问控制的安全组中配置端口号的:
![]()
- 在域名服务商的后台,将域名的解析地址指向云服务器的IP地址。
- 要省略掉端口号,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_KEY和env.SSL_CERT就是《在Ubuntu上使用Certbot申请Let’s Encrypt SSL证书》中申请的证书文件,分别是证书私钥(/etc/letsencrypt/live/charlee44.com-0001/privkey.pem)和完整证书链(/etc/letsencrypt/live/charlee44.com-0001/fullchain.pem)。
Ubuntu云服务器上部署发布Vite项目的更多相关文章
- Ubuntu 云服务器上部署自己的 Rails 应用
自学rails一段时间了,之前只用heroku部署了网站,想尝试把网站以一个更“正经”的方式呈现出来,就买了一个阿里云服务器.参考了网上部分rails部署教程,过程中也遇到了一些问题,所以在完成之后总 ...
- 使用Nginx+uwsgi在亚马逊云服务器上部署python+django项目完整版(二)——部署配置及相关知识
---恢复内容开始--- 一.前提: 1.django项目文件已放置在云服务器上,配置好运行环境,可正常运行 2.云服务器可正常连接 二.相关知识 1.python manage.py runserv ...
- 如何在 Ubuntu 云服务器上部署自己的 Rails 应用
安装步骤 参考:https://ruby-china.org/topics/32851 在云服务器上安装Ruby|Rails : http://www.cnblogs.com/znsongshu/p ...
- 总想自己动动手系列·1·本地和外网(Liunx服务器上部署的web项目)按照自定义的报文格式进行交互(准备篇)
一.准备工作 (1)有一台属于自己的云服务器,并成功部署和发布一个web项目(当然,本质上来说Java-Project也没问题),通过外网IP可以正常访问该web项目. 需要说明的是:任何web项目, ...
- PHP--腾讯云服务器上部署LNMP环境
本文参考 云服务器上部署Laravel的实例教程 腾讯云 创建 Laravel5.4 项目 阿里云服务器部署php的laravel项目,在阿里云买ECS 搭建 Linux+Nginx+Mysql+PH ...
- 总想自己动动手系列·2·本地和外网(Liunx服务器上部署的web项目)按照自定义的报文格式进行交互(完结篇)
一.准备工作 (1)创建一个web-project工程,部署本地可正常访问,部署在云服务上可访问. (2)理解如何在web.xml文件中配置过滤器,和创建一个自定义的过滤器. (3)懂得如何打war包 ...
- unigui在阿里云服务器上部署
unigui在阿里云服务器上部署 客户租用了阿里云WINDOWS2008服务器,部署UNIGUI发现死活不行,WINDOWS2008自带的IE9浏览器打开URL,卡死在loading...... 我远 ...
- 使用Eclipse远程调试云服务器上的微信公众项目
云服务器系统:centos 7.3 如何在Eclipse上调试我们在云服务器上的项目呢,下面介绍一下步骤: 1.因为root账号不支持远程调试,首先需要在linux上创建一个新的用户,然后用该用户 ...
- Linux学习2-在阿里云服务器上部署禅道环境
前言 以前出去面试总会被问到:测试环境怎么搭建?刚工作1-2年不会搭建测试环境还可以原谅自己,工作3-5年后如果还是对测试环境搭建一无所知,面试官会一脸的鄙视. 本篇以最简单的禅道环境搭建为例,学习下 ...
- 在百度云服务器上部署Django网站的经历
前言: 前段时间,利用Django为单位制作了一个小型的内部考勤系统,本想放到单位内部的服务器上,考虑到运行的稳定.安全防护等问题,最终决定把网站部署到百度云服务器上,事先也在网上查找了一些资料,但过 ...
随机推荐
- WPF MessageBox
参考文档 MessageBox MessageBoxButton MessageBoxImage MessageBoxOptions MessageBoxResult
- 持续集成cicd和devops
什么是 cicd,devops DevOps是一种思想,是一种文化,主要强调软件开发测试运维的一体化,目标是减少各个部门之间的沟通成本从而实现软件的快速高质量的发布.cicd是指持续集成发布部署,是一 ...
- redis的fd与epoll是怎么使用的
Redis 的高性能网络模型核心依赖于 文件描述符(fd) 和 epoll 的协同工作.下面我将从底层机制到实际应用,详细解析它们的配合方式: 一.核心组件关系图 二.fd 在 Redis 中的具体应 ...
- 什么是 Java 的 AOT(Ahead-Of-Time)?
Java 的 AOT(Ahead-Of-Time) 1. 定义 AOT(Ahead-Of-Time)编译是与 JIT(Just-In-Time)相对的一种编译方式. 在 AOT 模式下,Java 字节 ...
- edge浏览器新版,开心的扔掉chrome!还是微软更良心!windows系统全球用也没说啥!让你android能!
直接上图吧,这下google慌了吧!微软给力呀!关键是版本直接最新的chromium!比起qq浏览器70,360浏览器78新的多了: 微软开发,质量信得过,就个人隐私之类的我更相信微软,比起googl ...
- c#开发完整的Socks5代理客户端与服务端(已完结)
本文我们介绍下如何在Windows系统上开发一个代理本机流量的客户端,并且对接我们之前开发的Socks5服务端,实现整个代理的一条龙.对于Socks5代理的服务端的开发可以详见之前的文章. 目录 本机 ...
- CentOS Stream 10安装部署Zabbix 7.0网络监控平台和设备配置添加
以下是在CentOS Stream 10上部署Zabbix 7.0监控平台,并配置多种监控目标的完整操作指南: 一.Zabbix 7.0 基础环境部署 1. 系统准备 # 更新系统 sudo dnf ...
- QuickSort之C#实现
/// <summary> /// 快速排序中的切分 /// lIndex已经是基准值,i记录基准值的大小值的边界,j记录目前遍历的边界: /// i值必须从lIndex+1开始,因为基准 ...
- WPF 的 await Application.Current.Dispatcher.InvokeAsync,Func 如果是Task , 等待赋值可能存在没有等待执行完成的问题
最近在检查我们组内的代码,发现好多用到 await Application.Current.Dispatcher.InvokeAsync 相信好多WPF的开发都会用到 该方法做UI线程切换.但是细看里 ...
- mp4文件下载,而不是在线播放
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
