安装node环境
- 下载安装包
# 随便找个地方(注意:源地址只会保存最新稳定的小版本,可以访问https://nodejs.org/dist/这个地址选择源)
wget https://nodejs.org/dist/latest-v18.x/node-v18.12.0-linux-x64.tar.gz
- 建一个nodejs文件夹进入解压并放入当前目录
# 解压到当前文件夹
tar -zxvf node-v18.12.0-linux-x64.tar.gz
# 将解压文件夹里面的内容移动到指定文件路径,便于自己识别管理
mv node-v18.12.0-linux-x64 /usr/local/node
- 配置环境变量
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
- 建立软链接(配置全局可用node命令)
cd /usr/bin
ln -s /usr/local/node/bin/node node
ln -s /usr/local/node/bin/npm npm
- 配置淘宝镜像
npm config set registry=https://registry.npmmirror.com/
- 查看是否切换成功
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 │
├─────┼────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 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说明启动成功,这时候在浏览器看一下自己项目,可以正常访问。
设置自动重启
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…