Nuxt3项目部署到服务器

96 阅读3分钟

安装node环境

  1. 下载安装包
# 随便找个地方(注意:源地址只会保存最新稳定的小版本,可以访问https://nodejs.org/dist/这个地址选择源) 
wget https://nodejs.org/dist/latest-v18.x/node-v18.12.0-linux-x64.tar.gz
  1. 建一个nodejs文件夹进入解压并放入当前目录
# 解压到当前文件夹
tar -zxvf node-v18.12.0-linux-x64.tar.gz
# 将解压文件夹里面的内容移动到指定文件路径,便于自己识别管理
mv node-v18.12.0-linux-x64 /usr/local/node
  1. 配置环境变量
vim /etc/profile
# 末尾添加如下几行
# nodejs环境
export NODEJS=/usr/local/node
export PATH=$NODEJS/bin:$PATH

# 重新加载配置
source /etc/profile

# 进入/usr/local/node/bin查看版本
cd /usr/local/node/bin
node -v
18.12.0

  1. 建立软链接(配置全局可用node命令)
cd /usr/bin 
ln -s /usr/local/node/bin/node node
ln -s /usr/local/node/bin/npm npm
  1. 配置淘宝镜像
npm config set registry=https://registry.npmmirror.com/
  1. 查看是否切换成功
npm config get registry

安装Nuxt3的运行管理工具 pm2

# 全局安装pm2
npm install pm2 -g

打包Nuxt3项目并上传到服务器

yarn build 
// or 
npm run build

上传服务器 打包后生成一个 .oupput 的文件夹, 里面包含 public 文件夹、 server 文件夹和 nitro.json。 public 下面主要放一些静态资源文件,server 下的 index.js 就是我们的启动入口文件。 我们要做的是: 把 .output 里面的所有文件放在服务器上的新建项目里面。(当然你也可以直接把 .output 放进去)

配置ecosystem.config.js文件

按照官方提示,要使用 pm2 管理运行项目的话,需要在根目录下配置 ecosystem.config.js 文件(官方说明

新建一个ecosystem.config.js,放到项目的根目录

module.exports = {
  apps: [
    {
      name: 'NuxtAppName',  // 设置启动项目名称
      exec_mode: 'cluster',
      instances: 'max',
      // 注意这里的相对路径。要访问到index.mjs就行了,如果你是整个.output一起放在服务器的话就和官方一样路写成./.output/server/index.mjs就好了
      script: './server/index.mjs'
    }
  ]
}

项目结构

ecosystem.config.js
nitro.json
public
server

使用pm2启动Nuxt3项目

pm2 start ecosystem.config.js
# 然后使用下边的命令看一下启动的服务列表 
pm2 list
[root@iZwz9d9v06uh0jnrexcuk9Z nuxt3-app]# pm2 start ecosystem.config.js
[PM2] Applying action restartProcessId on app [NuxtAppName](ids: [ 0 ])
[PM2] [NuxtAppName](0) ✓
┌─────┬────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name           │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0NuxtAppNamedefault0.0.0   │ cluster │ 1300     │ 0s     │ 0    │ online    │ 0%       │ 21.3mb   │ root     │ disabled │
└─────┴────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
[root@iZwz9d9v06uh0jnrexcuk9Z sunnybook-nuxt3]# pm2 list
┌─────┬────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name           │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0NuxtAppNamedefault0.0.0   │ cluster │ 1300     │ 10s    │ 0    │ online    │ 0%       │ 30.9mb   │ root     │ disabled │
└─────┴────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

online说明启动成功,这时候在浏览器看一下自己项目,可以正常访问。

设置自动重启

pm2 startup
[root@iZwz9d9v06uh0jnrexcuk9Z nuxt3-app]# pm2 startup
[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=forking
User=root
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/local/node/bin:/usr/java/jdk1.8.0_281/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/root/.pm2
PIDFile=/root/.pm2/pm2.pid
Restart=on-failure

ExecStart=/usr/local/node/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/local/node/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/local/node/lib/node_modules/pm2/bin/pm2 kill

[Install]
WantedBy=multi-user.target

Target path
/etc/systemd/system/pm2-root.service
Command list
[ 'systemctl enable pm2-root' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-root.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-root...
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save

[PM2] Remove init script via:
$ pm2 unstartup systemd
[root@iZwz9d9v06uh0jnrexcuk9Z nuxt3-app]# 

当服务器故障或者重启的时候,pm2服务能记录状态自动重启,不需要人为重启pm2服务。

查看服务状态

pm2 list

常用pm2命令

命令用途
pm2 list查看启动的服务列表
pm2 show id号查看对应id号的详细服务情况
pm2 start name(服务名)启动服务
pm2 stop name(服务名)终止服务
pm2 restart name(服务名)重启服务
pm2 delete name(服务名)删除服务
pm2 kill name(服务名)杀死服务
pm2 logs name(服务名)查看服务执行日志
pm2 logs name(服务名)查看服务日志

版权声明:本文为CSDN博主「白忆宇」的原创文章, 原文链接:blog.csdn.net/m0_48489737…