当前位置: 首页 > news >正文

Linux部署nuxt3

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

  • 1. 服务器安装 nodejs 环境
  • 2. 安装Nuxt3的运行管理工具 pm2
  • 3. 打包Nuxt3项目并上传到服务器
  • 4. 配置ecosystem.config.js文件
  • 5. 使用pm2启动Nuxt3项目
  • 6. 常用pm2命令

一. 服务器安装 nodejs 环境

1. 下载安装包

# 随便找个地方
wget https://nodejs.org/dist/latest-v14.x/node-v14.21.2-linux-x64.tar.gz

注意我这里下载的是14版本的,一开始我按照最高版本,但是提示报错,报错如下,换低的版本就可以了

/lib64/libm.so.6: version `GLIBC_2.27‘ not found (required by node)


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


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

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

npm install pm2 -g 

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

1. 打包

yarn build 
// or 
npm run build

2. 上传服务器

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

3. 配置ecosystem.config.js文件

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

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

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

四. 使用pm2启动Nuxt3项目

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

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

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

如,你的ip:3000

如果访问不了,请查看防火墙3000端口是否启动,如果启动了还是访问不了,看是否是因为加了这行导致的,

NITRO_HOST: '127.0.0.1' #我一开始加了这行,一直不成功,直到去掉才行

module.exports = {apps: [{name: 'NuxtAppName',exec_mode: 'cluster',instances: 'max',script: './server/index.mjs',env: {NITRO_PORT: 3001,NITRO_HOST: '127.0.0.1' #我一开始加了这行,一直不成功,直到去掉才行}}]
}

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-failureExecStart=/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.targetTarget 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]# 

3. 查看服务状态

pm2 list

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

参考文章:

Nuxt3打包部署到Linux(node+pm2详细安装运行步骤)_白忆宇的博客-CSDN博客

[Day 30] Nuxt 3 就剩最後一步了 - 部署 (Deployment) - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

/lib64/libm.so.6: version `GLIBC_2.27‘ not found (required by node)_node: /lib64/libm.so.6: version `glibc_2.27' not f_市井榴芒的博客-CSDN博客

http://www.lryc.cn/news/1768.html

相关文章:

  • 鸟哥的Linux私房菜读书笔记:文件系统的简单操作
  • 论如何用python自动下载爱的妹子视频~嘿嘿嘿~
  • 传奇GOM引擎配置PAK密码补丁教程
  • 邀您参赛!DCIC 2023「科技金融欺诈风险识别」算法赛正在报名中
  • ElasticSearch-学习笔记04【Java客户端操作索引库】
  • 低代码开发平台|制造管理-工艺工序搭建指南
  • Window 安装 Docker
  • 最近很火的一部电视(狂飙)像安欣和高启强这样类型的人,谁更合适做软件测试工程师
  • LSTM已死,Transformer当立(LSTM is dead. Long Live Transformers! ):上
  • 今天面试招了个18K的人,从腾讯出来的果然都有两把刷子···
  • 洛谷 P5764 [CQOI2005]新年好
  • 【自然语言处理】主题建模:BERTopic(实战篇)
  • k8s学习笔记
  • web自动化测试入门篇05——元素定位的配置管理
  • C语言预处理
  • git报错大全,你将要踩的坑我都帮你踩了系列
  • LabVIEW中使用.NET方法时出现错误1316
  • HTTP2.0 相比 HTTP1.0、HTTP1.1 有哪些重大改进?值得升级更换吗?
  • 九、Linux文件 - fopen函数和fclose函数讲解
  • 轨迹预测算法vectorNet调研报告
  • 基于STM32设计的避障寻迹小车
  • 【视觉检测】使用opencv编写一个图片缺陷检测流程
  • 3.Dockerfile 定制镜像
  • Web基础与HTTP协议
  • 【化学试剂】endo-BCN-PEG4-Pomalidomide,(1R,8S,9S)-双环[6.1.0]壬-四聚乙二醇-泊马度胺纯度95%+
  • 全板电镀与图形电镀,到底有什么区别?
  • Zabbix 构建监控告警平台(二)--
  • 开学季,关于校园防诈骗宣传,如何组织一场微信线上答题考试
  • 蓝牙单点技术实现路径介绍
  • Ubuntu22.04 用 `hwclock` 或 `timedatectl` 来设置RTC硬件时钟为本地时区