Nuxt3打包部署到Linux(node+pm2详细安装运行步骤)

小聊:最近写了一个项目,需要打包部署,过程还是比较繁琐的,因为需要先配置运行环境。准备采用 pm2 管理项目运行,需要在服务器安装 pm2,而安装 pm2 的话用 npm 命令最方便,所以还要下载 node 环境。那么,就让我们一步步的完成 Nuxt3 项目上传的完整过程吧。同样是实操成功的演示,请放心阅览。开发环境是Window,部署环境是Linux。开发工具为VSCode,部署服务器为阿里云。


1. 服务器安装 nodejs 环境

1. 下载安装包

# 随便找个地方(注意:源地址只会保存最新稳定的小版本,可以访问https://nodejs.org/dist/这个地址选择源)
wget https://nodejs.org/dist/latest-v18.x/node-v18.12.0-linux-x64.tar.gz

2. 建一个nodejs文件夹进入解压并放入当前目录

# 解压到当前文件夹
tar -zxvf node-v18.12.0-linux-x64.tar.gz
# 将解压文件夹里面的内容移动到指定文件路径,便于自己识别管理
mv node-v18.12.0-linux-x64 /usr/local/node

3. 配置环境变量

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

4. 建立软链接(配置全局可用node命令)

cd /usr/bin
ln -s /usr/local/node/bin/node node
ln -s /usr/local/node/bin/npm npm

5. 配置淘宝镜像

npm config set registry=https://registry.npmmirror.com/

6. 查看是否切换成功

npm config get registry

2. 安装Nuxt3的运行管理工具 pm2

全局安装pm2

npm install pm2 -g 

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

1. 打包

yarn build 
// or 
npm run build

在这里插入图片描述

2. 上传服务器

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

官方上传文件到阿里云服务器的方法:使用WinSCP上传文件到Linux云服务器(当然其它方式都可以)


4. 配置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'
    }
  ]
}

项目结构:

[root@iZwz9d9v06uh0jnrexcuk9Z nuxt3-app]# ll
total 16
-rw-r--r-- 1 root root  175 Nov  1 23:24 ecosystem.config.js
-rw-r--r-- 1 root root  129 Nov  1 23:24 nitro.json
drwxr-xr-x 3 root root 4096 Nov  1 23:23 public
drwxr-xr-x 4 root root 4096 Nov  1 23:24 server

5. 使用pm2启动Nuxt3项目

1. 直接在根目录下面执行命令

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 │
├─────┼────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ NuxtAppName    │ default     │ 0.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 │
├─────┼────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ NuxtAppName    │ default     │ 0.0.0   │ cluster │ 1300     │ 10s    │ 0    │ online    │ 0%       │ 30.9mb   │ root     │ disabled │
└─────┴────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

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

2. 设置自动重启

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服务。

3. 查看服务状态

pm2 list

6. 常用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(服务名) 查看服务日志

随笔

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_48489737/article/details/127796979