Nuxt.js(Vue SSR)创建项目到服务器(Nginx+PM2)部署详细流程(下)

简介: Nuxt.js(Vue SSR)创建项目到服务器(Nginx+PM2)部署详细流程(下)
  • 找到 nuxt.config.js,添加下面代码:
export default {
  head: {...},
  css: [...],
  // 配置服务器(主要是这个配置)
  server: {
    // port: 8000, // default: 3000
    host: '0.0.0.0', // default: localhost (推荐)
    // host: '0', // 等于 host: '0.0.0.0' 这样配置,在mac上这么配置没问题,但是在window上这么配置有报错。
    timing: false
  },
  • 再次运行项目,生产或开发都行,访问地址就会变成本机的 ip 地址加端口:
╭─────────────────────────────────────────╮
 │                                         │
 │   Nuxt @ v2.14.12                       │
 │                                         │
 │   ▸ Environment: development             │
 │   ▸ Rendering:   server-side            │
 │   ▸ Target:      server                 │
 │                                         │
 │   Memory usage: 29.4 MB (RSS: 74 MB)    │
 │                                         │
 │   Listening: http://10.0.93.169:3000   │
 │                                         │
 ╰─────────────────────────────────────────╯
  • 本地运行项目就到这里结束了,下面需要将项目发布到服务器运行起来。

四、Nuxt.js 上传服务器(Nginx + Node + PM2)

  • 下面的这些操作如果需要测试,可以放在本地机器上进行搭建,把本地电脑当服务器使使。
  • 服务器 安装 Nginx + Node + PM2
  • Nuxt.js 是依赖 Node,所以 服务器 需要安装 Node,装了 Node 就会自带 NPM,然后通过 NPM 安装 PM2:
$ npm install -g pm2
// 可以通过 -h 查询使用方式
$ pm2 -h
  • PM2Node 的进程管理工具。为啥用这个举个例子:运行项目之后,命令行窗口是不能关闭的,如果关闭了就无法访问这个项目地址了,所以需要支持关闭命令行窗口,运行的项目依然能够访问,也就是后台挂起进程,PM2 就可以做到这个事情。
  • 安装好上面环境,在 Nginx 根目录里面通过 Git 拉下来 Nuxt.js 源码,可以新开文件夹存放也是可以的,随你自己
$ git clone xxxxx.git
// 如果存在代码就拉一下代码 保持最新
$ git pull
  • 这里说一下,在网上搜一下会搜到很多只需要导入几个文件就可以运行项目的文章,但是这种方式有时候会出现 编译函数找不到资源文件找不到 之类的问题,所以如果不是特别熟悉 Nuxt.js 的话,直接将整个项目拉下来使用,不需要去单独导入某些文件,这样也完美的避开一些细节上的坑,网上的文章一般都是推荐导入下面几个文件:
.nuxt
static
nuxt.config.js
package.json
package-lock.json
  • 将代码拉到服务器后,需要先走一遍 npm 安装,安装一下依赖包
$ npm install
  • 然后编译项目
$ npm run build
  • PM2 运行项目,后台挂起,你的项目名称,可以随意填个,但是推荐跟项目 package.json 文件里面的 name 字段值一样,这样好区分。。
// 之前是通过 $ npm run dev 或者 $ npm run start,但是命令行窗口不能关闭
// 启动开发环境后台挂起,列举了常用的几种方式,任意选一种
$ pm2 start npm -- run dev
$ pm2 start npm --name "你的项目名称" -- run dev
$ pm2 start ./node_modules/nuxt/bin/nuxt.js 
....
// 启动生产环境后台挂起,列举了常用的几种方式,任意选一种
$ pm2 start npm -- run start
$ pm2 start npm --name "你的项目名称" -- run start
....
// 例如:服务器启动开发环境,开发环境只需要一行命令
$ pm2 start ./node_modules/nuxt/bin/nuxt.js 
// 例如:服务器启动生产环境,生产环境需要先 build 在 start
$ npm run build
$ pm2 start npm --name "nuxt-test" -- run start
// window 电脑注意:上面命令在 MAC 跟 服务器都可以生效,但是在 window 上如果做测试,
// 有部分命令无法生效,我用window 用的少,所以也没去深入折腾,这里给一下建议:
// window 电脑本地测试PM2挂开发环境,生产环境目前上面几种启动方式都无法挂载成功,直接上服务器挂就行了,本地只是用于测试,开发环境也不影响测试。
// 只能通过这行命令启动开发环境,生产环境的命令挂起无效,暂时没解决
$ pm2 start ./node_modules/nuxt/bin/nuxt.js 
  • 然后可以通过 $ pm2 list 查看是否挂起成功,这样显示了就是挂起成功了
┌─────┬──────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name         │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼──────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ nuxt-test    │ default     │ N/A     │ fork    │ 1190     │ 0s     │ 0    │ online    │ 0%       │ 7.8mb    │ den… │ disabled │
└─────┴──────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
  • 现在就可以通过你这台电脑或者服务器的 ip 地址加端口号进行访问了,例如:http://10.0.90.164:3000/
  • 如果需要停掉后台挂起,执行删除命令即可,id 就是 $ pm2 list 列表中的 id 值:
// 删除单个挂起进程
$ pm2 delete id
// 删除全面挂起进程
$ pm2 delete all
例如:
$ pm2 delete 0
  • 如果项目修改调整了,上传了新的东西,只需要拉下代码编译后,重启 PM2 对应环境进程即可:
    开发环境 - 初始化:$ git pull + $ npm install + $ pm2 start npm --name "你的项目名称" -- run dev
    生产环境 - 初始化:$ git pull + $ npm install + $ npm run build + $ pm2 start npm --name "你的项目名称" -- run start
    注意:$ pm2 start .... 命令,每次启动都会在 $ pm2 list 列表中新增一个管理进程,所以只需要初始化创建了就行了,后面如果不是通过 $ pm2 delete id 手动删除了,就不需要每次 $ pm2 start ....,只需要重启即可:
    开发环境 - 后续版本更新:$ git pull + $ npm install + $ pm2 restart id
    生产环境 - 后续版本更新:$ git pull + $ npm install + $ npm run build + $ pm2 restart id
  • 额外说一句:如果 PM2 启动项目之后,不知道访问那个地址,那可以先 $ pm2 delete id 删除进程,执行自带的运行方式 $ npm run dev$ npm run start,需要哪个环境就运行哪个命令,运行之后可以拿到访问地址,拿到之后关掉,在通过 PM2 运行访问同意一个地址,注意端口号别变化了,如果端口被占用,会分配一个新的端口:
╭──────────────────────────────────────────╮
 │                                          │
 │   Nuxt @ v2.14.12                        │
 │                                          │
 │   ▸ Environment: production              │
 │   ▸ Rendering:   server-side             │
 │   ▸ Target:      server                  │
 │                                          │
 │   Memory usage: 29.4 MB (RSS: 74.6 MB)   │
 │                                          │
 │   Listening: http://10.0.90.164:3000/    │
 │                                          │
 ╰──────────────────────────────────────────╯
  • 最终通过 PM2 启动挂起之后,现在需要配置一下 Nginx,之前启动是 Node 服务,访问是没问题的,但是现在需要通过 Nginx 反代理到 Node,也就是通过 Nginx 去访问到 Node 的资源地址。
  • 找到 Nginxnginx.conf 文件,在里面添加一个新的服务,以及一个反代理服务
http {
  # 新建一个 nuxt server 服务
  upstream nuxt {
    # 这里就是上面配置的 Node ip + 端口号,之前默认是 localhost:3000
    server 0.0.0.0:3000;
    keepalive 64;
  }
  server {
    listen 8083; #服务器端口
    server_name www.nuxt.com;  #这里对应你服务器的域名
    location / {
        proxy_pass http://nuxt;  #这里对应上面 upstream 中新建的服务名
        index index.html index.htm;
    }
  }
}
  • 配置好这个之后,通过 $ nginx 启动 Nginx 或者 $ nginx -s reload 刷新 Nginx 配置文件生效。
  • 配置好之后,启动 Node,启动 Nginx,这样就可以直接通过 Nodeip + :3000端口 直接访问,也可以通过 Nginxip或域名 + :8083端口 访问了,对外当然是走 Nginx 了,配置一下域名。

  • 到这就完事了,其他就是项目内部的细节配置跟使用了,会写到另外的文章里面去!
  • Nuxt.js(Vue SSR)项目配置以及开发细节
  • 附带 PM2 配置文件的使用,作用就是将生产或开发环境设置到配置文件里面,只需要执行配置文件即可达到效果,当然也可以不用走配置文件,走上面命令行区分生产或开发环境也一样,看自己喜好。

相关文章
|
4天前
|
并行计算 前端开发 异构计算
告别服务器繁忙,云上部署DeepSeek
本文以 DeepSeek-R1-Distill-Qwen-32B-FP8 为例,向您介绍如何在GPU实例上使用容器来部署量化的 DeepSeek-R1 蒸馏模型。
|
7天前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
9天前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
|
10天前
|
机器学习/深度学习 弹性计算 人工智能
在阿里云ECS上一键部署DeepSeek-R1
Open WebUI 和 Ollama 的联合,通过集成 DeepSeek-R1 的强大功能,赋予每一位用户使用尖端 AI 技术的能力,使得复杂的 AI 技术不再是遥不可及的梦想。无论是研究人员、开发者,还是企业用户,您都能从这一创新中获得新的灵感和增长点。本文介绍通过计算巢一键部署和使用DeepSeek-R1。
在阿里云ECS上一键部署DeepSeek-R1
|
6天前
|
机器学习/深度学习 人工智能 开发者
DeepSeek服务器繁忙?拒绝稍后再试!基于阿里云PAI实现0代码一键部署DeepSeek-V3和DeepSeek-R1大模型
阿里云PAI平台支持零代码一键部署DeepSeek-V3和DeepSeek-R1大模型,用户可轻松实现从训练到部署再到推理的全流程。通过PAI Model Gallery,开发者只需简单几步即可完成模型部署,享受高效便捷的AI开发体验。具体步骤包括开通PAI服务、进入控制台选择模型、一键部署并获取调用信息。整个过程无需编写代码,极大简化了模型应用的门槛。
127 7
|
3月前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
49 1
JavaScript中的原型 保姆级文章一文搞懂
|
7月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
138 2
|
3月前
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
33 0