pm2部署nuxt3项目

pm2部署nuxt3项目

阅读时长:8分钟

本文内容:本文其实前面开发AI数字人网站的延续。 window上安装ubuntu虚拟机,并在虚拟机中使用pm2部署 Nuxt3 项目.

在这里插入图片描述

  • Nuxt3
  • Vite
  • typescript
  • pm2

1. 安装node环境

  1. 下载
# 进入node目录
cd /node
# 下载
wget https://nodejs.org/download/release/v16.20.2/node-v16.20.2-linux-x64.tar.xz
  1. 解压:
tar -xvf node-v16.20.2-linux-x64.tar.xz
  1. 进目录
cd node-v16.20.2-linux-x64
  1. 测试是否下载成功
./node -v
  1. 添加软连接
sudo ln -s /node/node-v16.20.2-linux-x64/bin/node /usr/local/bin/node
sudo ln -s /node/node-v16.20.2-linux-x64/bin/npm /usr/local/bin/npm
  1. 测试软连接是否成功
# 进入根目录
cd /node -vnpm -v

什么叫软连接:将当前目录,添加到 Linux 系统 path 中,系统 path 就是: /usr/local/bin

2. 创建两个 pm2 配置文件

windows上提前新建好两个文件:ecosystem.config.js以及 start-nuxt.sh,然后准备上传到 Linux 服务器指定位置.

  1. ecosystem.config.js文件内容如下:
 // 配置pm2
module.exports = {apps: [{name: "BlogHomeNuxt",exec_mode: "cluster",instances: "2", // 应用启动实例个数,仅在cluster模式有效 默认为fork;或者 maxscript: "dist/server/index.mjs",args: "", // 传递给脚本的参数watch: true, // 开启监听文件变动重启ignore_watch: ["node_modules", "public", "logs"], // 不用监听的文件exec_mode: "fork",// 自家主机window cluster_mode 模式下启动失败instances: "2", // max表示最大的 应用启动实例个数,仅在 cluster 模式有效 默认为 forkautorestart: true, // 默认为 true, 发生异常的情况下自动重启max_memory_restart: "1G", //  // 最大内存限制数,超出自动重启error_file: './logs/app-err.log', // 错误日志文件// out_file: './logs/app-out.log', // 正常日志文件merge_logs: true, // 设置追加日志而不是新建日志log_date_format: "YYYY-MM-DD HH:mm:ss", // 指定日志文件的时间格式min_uptime: "60s", // 应用运行少于时间被认为是异常启动max_restarts: 30, // 最大异常重启次数restart_delay: 60, // 异常重启情况下,延时重启时间env: {// 环境参数,当前指定为开发环境NODE_ENV: "development",PORT: "5050",},env_production: {// 环境参数,当前指定为生产环境NODE_ENV: "production", //使用production模式 pm2 start ecosystem.config.js --env productionPORT: "5050",},env_test: {// 环境参数,当前为测试环境NODE_ENV: "test",},},],
};
  1. start-nuxt.sh 文件内容如下:
  #!/bin/bashBUILD_ID=DONTKILLMEecho "pm2 starting"pm2 start ecosystem.config.js --env productionecho "pm2 started"

3.将两文件以及打包文件上传到服务器

我的服务器是 WSL 创建的 Ubuntu 系统,你可以根据自己的服务器选择上传方式

  1. 在服务器根目录创建文件夹:mkdir onlineweb,用于存放稍后上传的所有项目文件
sudo mkdir onlineweb
  1. 在 windows 项目目录下执行pnpm run build 打包指令,得到将要上传到服务器的文件夹 .output
pnpm run build

现在我们有了2个配置文件 和 1个打包后的文件夹:

> d:/workspace/my-nuxt-project/start-nuxt.sh
> 
> d:/workspace/my-nuxt-project/ecosystem.config.js
> 
> d:/workspace/my-nuxt-project/.output

先查看一遍,上传到服务器后的目录结构,类似如下:

/onlineweb

│—start-nuxt.sh
│
│—ecosystem.config.js
│
├─dist
│  │
│  └─nitro.json
│  │
│  └─public
│  │    └────favicon.ico
│  │    └────api
│  │    └────_nuxt
│  │
│  └─server
│  │    └────chunks
│  │    └────node_modules
│  │    └────index.mjs
│  │    └────index.mjs.map
│  │    └────package.json

3.1 【上传】windows 文件上传到使用WSL创建的 Ubuntu 系统

这里以 windows 上传到到使用 WSL创建的 Ubuntu系统作为示例,如果你自己有其他上传方式,可以跳过3.1上传这一小节

  1. 登录 Ubuntu 系统,新建目录 onlineweb
# 进入根目录
(base) ifredom@DESKTOP-CQAE3DF:~$ cd /
# 新建
(base) ifredom@DESKTOP-CQAE3DF:~$ sudo mkdir onlineweb
  1. Linux上输入:/mnt/{Windows盘符}访问windows系统,此处输入:cd /mnt/d
(base) ifredom@DESKTOP-CQAE3DF:~$ cd /mnt/d
  1. 进入windows上项目目录位置, cd workspace/my-nuxt-project
(base) ifredom@DESKTOP-CQAE3DF:/mnt/d$ cd workspace/my-nuxt-project
  1. 复制window上的ecosystem.config.js 到Linuxt服务器 /onlineweb目录下
# ls 查看目录
(base) ifredom@DESKTOP-CQAE3DF:/mnt/d/workspace/my-nuxt-project$ ls
# cp 复制: 
(base) ifredom@DESKTOP-CQAE3DF:/mnt/d/workspace/my-nuxt-project$  sudo cp -r .output/ /onlineweb/dist
(base) ifredom@DESKTOP-CQAE3DF:/mnt/d/workspace/my-nuxt-project$  sudo cp -r ecosystem.config.js  /onlineweb/
(base) ifredom@DESKTOP-CQAE3DF:/mnt/d/workspace/my-nuxt-project$  sudo cp -r start-nuxt.sh  /onlineweb/

到这里,我们成功将 2文件以及1文件夹 上传到服务器上目录 onlineweb

提示: Windows 访问 Linux 文件方法:命令行输入 \\wsl$

4.使用pm2启动

  • pm2配置文档
  1. 在服务器 /onlineweb/ 下执行 sh start-nuxt.sh 即可 , 成功使用 pm2 启动 nuxt 服务
# 进入目录
cd /onlineweb/
# 安装
sudo npm install -g pm2
# 启动
sh start-nuxt.sh

到此,使用PM2命令已经成功启动了.

如果你没有使用nginx代理,那么你可以访问 http://localhost:5050/ 查看效果了

tips: 你可能会怀疑怎么启动了2服务,在配置文件中配置 instance 字段,所有配置详情自行查看文档


也许你嫌弃PM2太麻烦,不想使用 pm2 启动?,直接使用node启动,也完全没有问题:

node dist/server/index.mjs

5.配置nginx

找到nginx.conf文件,修改默认访问网站配置

  location / {# root /blog/home/;# index /index.html;# try_files $uri $uri/  /index.html; proxy_pass http://localhost:5050/;}

其他 pm2 指令

# 查看启动的服务列表
pm2 list# 停止服务
pm2 stop  [name|id]# 删除服务
pm2 delete  [name|id]# 保存当前线程
pm2 save# 设置服务器开机自启
pm2 startup

对于非Linuxt系统,比如windows服务器,需要额外安装下边的插件才可以。

# 全局安装 pm2-windows-startup
npm install pm2-windows-startup -g
# 设置 pm2-startup
pm2-startup install

相关注意事项

  1. 目前nuxt3服务器打包会造成内存溢出导致卡死

------ 如果文章对你有用,感谢右上角 >>>点赞 | 收藏 <<<

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZooKeeper与Paxos

Apache ZooKeeper是由Apache Hadoop的子项目发展而来&#xff0c;于2010年11月正式成为了Apache的顶级项目。ZooKeeper为分布式应用提供了高效且可靠的分布式协调服务&#xff0c;提供了诸如统一命名服务、配置管理和分布式锁等分布式的基础服务。在解决分布式数据一致性方面&a…

java八股文面试[java基础]——如何实现不可变的类

知识来源&#xff1a; 【23版面试突击】如何实现不可变的类&#xff1f;_哔哩哔哩_bilibili 【2023年面试】怎样声明一个类不会被继承&#xff0c;什么场景下会用_哔哩哔哩_bilibili

SpringBoot整合thymeleaf

JavaEE领域有几种常用的模板引擎: Jsp, Thymeleaf, Freemarker, Velocity等.对于前端页面渲染效率来说 JSP 其实还是最快的, Velocity次之.Thymeleaf虽然渲染效率不是很快,但语法比较轻巧. Thymeleaf 支持html5标准, Thymeleaf页面无需部署到servlet开发到服务器上,以 .html 后…

vue cli构建的项目出现 Uncaught runtime errors

使用 vue/cli 脚手架构建的项目&#xff0c;在 npm run dev 运行后&#xff0c;页面出现 Uncaught runtime errors 报错遮罩层&#xff0c;如下图所示。 报错原因 这种错误通常是运行时出的问题&#xff0c;可能是网络错误&#xff0c;可能是变量未定义等等。 这种错误默认在开…

CCF HPC China2023|澎峰科技:使能先进计算,赋能行业应用

CCF HPC China2023圆满落幕&#xff01; 桂秋八月&#xff0c;为期三天的中国高性能计算领域最高规格盛会——2023CCF全球高性能计算学术年会&#xff08;HPC China&#xff09;在青岛红岛国际展览中心圆满落幕。行业超算大咖、顶级学界精英、先锋企业领袖参会者齐聚山东青岛&a…

【滑动窗口】leetcode209:长度最小的子数组

一.题目描述 长度最小的子数组 二.思路分析 题目要求&#xff1a;找出长度最小的符合要求的连续子数组&#xff0c;这个要求就是子数组的元素之和大于等于target。 如何确定一个连续的子数组&#xff1f;确定它的左右边界即可。如此一来&#xff0c;我们最先想到的就是暴力枚…

Jenkins 详细安装流程及填坑记录「图文」

目录 一、前言 二、环境准备 三、安装步骤 1、安装jdk 2、安装jenkins 3、配置修改 4、jenkins启动 四、登录jenkins 一、前言 省流&#xff1a;本文仅记录Jenkins详细安装过程&#xff0c;以及安装过程中经常遇到的问题。 二、环境准备 Linux系统&#xff1a;CentOS…

数学建模:数据的预处理

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 文章目录 数据预处理数据变换数据清洗缺失值处理异常值处理 数据预处理 数据变换 常见的数据变换的方式&#xff1a;通过某些简单的函数进行数据变换。 x ′ x 2 x ′ x x ′ log ⁡ ( x ) ∇ f ( x k )…

vue项目静态文件资源下载

业务场景&#xff1a;页面有一个导入功能&#xff0c;需要一个模板文件供下载&#xff0c;文件放在本地。 对于 Vue 3 Vite 项目&#xff0c;使用 require 方法来导入模块是不被支持的。require 是 CommonJS 规范中用于模块导入的方法&#xff0c;在 Webpack 等构建工具中常用…

打开谷歌浏览器远程调试功能

谷歌浏览器远程调试功能 首先我们来启动Chrome的远程调试端口。你需要找到Chrome的安装位置&#xff0c;在Chrome的地址栏输入chrome://version就能找到Chrome的安装路径 开启远程控制命令 文件路径/chrome.exe --remote-debugging-port9222开启后的样子(注意要关闭其他谷歌浏…

centos安装Nginx配置Nginx

1. 查看操作系统有没有安装Nginx which nginx 2. 使用epel的方式进行安装&#xff08;方法二&#xff09; 先安装epel sudo yum install yum-utils 安装完成后&#xff0c;查看安装的epel包即可 sudo yum install epel 3 开始安装nginx 上面的两个方法不管选择哪个&…

AP5192 DC-DC降压恒流LED汽车头灯摩托车电动车大灯电源驱动

AP5192是一款PWM工作模式,高效率、外围简单、 内置功率MOS管&#xff0c;适用于4.5-100V输入的高精度 降压LED恒流驱动芯片。最大电流1.5A。 AP5192可实现线性调光和PWM调光&#xff0c;线性调光 脚有效电压范围0.55-2.6V. AP5192 工作频率可以通过RT 外部电阻编程 来设定&…