当前位置:   article > 正文

Nuxt3打包部署到Linux(node+pm2安装和运行步骤+nginx代理)

nuxt3打包部署

最近,我们项目组的工作接近尾声,需要把项目部署上线。由于前端第一次使用Nuxt3框架,后端也是第一次部署Nuxt3项目,所以刚开始出现了很多问题。在我上网搜索很多教程后,得到了基本的流程。

1.服务器安装node.js环境

Nuxt3官方文档https://nuxt.com/docs/getting-started/installation通过官方文档我们可知,nuxt3要求nodejs 环境在16.10.0v以上

1.下载安装包

  1. # 下载到当前文件夹(可以访问https://nodejs.org/dist/这个地址选择源)
  2. wget https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz

2.解压

  1. # 解压到当前文件夹
  2. tar xf node-v16.14.0-linux-x64.tar.xz

3.建一个node文件夹并且把解压的文件夹移动到当前目录

mv node-v16.14.0-linux-x64 /usr/local/node

4.配置环境变量

  1. # 编辑配置文件
  2. vim /etc/profile
  3. # 在profile文件末尾添加(移动的位置)
  4. export NODEJS=/usr/local/node
  5. export PATH=$NODEJS/bin:$PATH

5.保存后重新加载配置

source /etc/profile

6.检查nodejs是否配置成功

node -v

 出现版本即代表安装成功

7.配置淘宝镜像并查看是否成功

  1. # 配置淘宝镜像
  2. npm config set registry=https://registry.npmmirror.com/
  3. # 检测是否切换成功
  4. npm config get registry

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

npm install pm2 -g

3.将前端打包好的 .output 文件上传到服务器

上传成功后可能 ls 不显示,这个时候可以 ls -a 一下,就可以发现 .output 文件了

4.配置ecosystem.config.js文件

如果要使用pm2 管理运行项目,需要在根目录下配置 ecosystem.config.js 文件

  1. module.exports = {
  2. apps: [
  3. {
  4. name: 'NuxtAppName', // 设置启动项目名称
  5. exec_mode: 'cluster',
  6. instances: 'max',
  7. // 注意这里的相对路径
  8. script: './.output/server/index.mjs'
  9. }
  10. ]
  11. }

此时项目结构是这样的

5.使用pm2 启动 nuxt3项目

需要在项目的根目录下面执行命令

  1. pm2 start ecosystem.config.js
  2. # 然后使用下边的命令看一下启动的服务列表
  3. pm2 list

 online就表示成功了,能够正常访问项目了。此时可以用命令看一下3000端口是否在运行

netstat -nltp
  1. [root@FrankZhang .output]# netstat -nltp
  2. Active Internet connections (only servers)
  3. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  4. tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 32246/./redis-serve
  5. tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 570/rpcbind
  6. tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 21866/nginx: master
  7. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1357/sshd
  8. tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1137/master
  9. tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 21866/nginx: master
  10. tcp6 0 0 :::33060 :::* LISTEN 4743/mysqld
  11. tcp6 0 0 :::3306 :::* LISTEN 4743/mysqld
  12. tcp6 0 0 :::111 :::* LISTEN 570/rpcbind
  13. tcp6 0 0 :::80 :::* LISTEN 21866/nginx: master
  14. tcp6 0 0 :::8085 :::* LISTEN 21078/interviewV2
  15. tcp6 0 0 :::3000 :::* LISTEN 1233/PM2 v5.3.0: Go

在运行说明项目部署成功了。

设置自动重启,当服务器故障或者重启的时候,pm2会自动重启,不需要人为重启pm2服务

pm2 startup

如果出现问题,项目启动不起来,可以查看pm2服务执行日志,在日志里找出问题。一下是一些常用的Pm2命令

  1. pm2 logs name(服务名) //查看服务执行日志
  2. pm2 delete name(服务名) //删除服务
  3. pm2 stop name(服务名) //停止服务
  4. pm2 start name(服务名) //启动服务
  5. pm2 restart name(服务名) //重启服务

6.Nginx配置代理,80访问3000

因为3000端口不是我们期望让用户得知的,希望通过Nginx的反向代理,隐藏真实的端口,我们可以在nginx的配置文件里这样写

  1. server {
  2. listen 80;
  3. listen [::]:80;
  4. server_name localhost;
  5. location / {
  6. proxy_pass http://localhost:3000;
  7. }
  8. location /interviewV2/ {
  9. proxy_pass http://127.0.0.1:8085;
  10. }
  11. }

这个和传统的前端打包 dist 文件配置nginx不一样。dist是一种静态资源,nuxt3是在服务器上运行一个服务,通过nginx代理到这个服务的端口号从而访问项目的前端页面。然后在操作页面的时候会发请求到后端项目的端口。然后整个项目就跑通了。

注意:如果是docker启动的nginx,一定要看好docker0的ip地址,就不能填写localhost,127.0.0.1这种ip了,因为docker启动的容器,相当于一台服务器去请求另一台服务器,这个地方要填docker0的IP。

可以使用 ifconfig 命令来查看当前docker0的IP

以上就是Nuxt3项目部署的全部内容了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/186693
推荐阅读
相关标签
  

闽ICP备14008679号