以下是在 Ubuntu 中使用 PM2 运行基于 Express 服务器的 Vue 项目的完整流程,已整合所需补充内容:
前提准备
-
已编译的 Vue 项目
确保 Vue 项目已通过
npm run build
生成dist
文件夹,并已配置 Express 服务器(通常项目根目录有server.js
或app.js
作为入口文件),上传到服务器(如路径/home/yourname/vue-project
)。 -
安装 Node.js、npm 并检查版本
bash# 安装Node.js和npm sudo apt update && sudo apt install nodejs npm # 检查安装版本(验证是否安装成功) node -v # 输出Node.js版本,如v18.17.1 npm -v # 输出npm版本,如9.6.7
-
安装 PM2 并检查版本
bash# 全局安装PM2 sudo npm install pm2 -g # 检查PM2版本(验证安装成功) pm2 -v # 输出PM2版本,如5.3.0
步骤 1:准备 Express 服务器环境
若 Vue 项目使用 Express 作为服务器(通常用于处理 API 请求或托管静态文件):
-
进入项目根目录,安装依赖:
bashcd /home/yourname/vue-project npm install # 安装package.json中的依赖(包括express)
-
确认 Express 入口文件(如
server.js
)已正确配置,示例代码:javascript// server.js 示例(确保已托管dist目录,端口设为8085) const express = require('express'); const path = require('path'); const app = express(); // 托管Vue编译后的静态文件 app.use(express.static(path.join(__dirname, 'dist'))); // 处理单页应用路由(history模式) app.get('*', (req, res) => { res.sendFile(path.join(__dirname, 'dist/index.html')); }); // 监听8085端口 const port = 8085; app.listen(port, () => { console.log(`服务器运行在 http://localhost:${port}`); });
步骤 2:开放服务器端口(以 8085 为例)
若防火墙(ufw)已启用,需开放项目使用的 8085 端口:
python
# 查看防火墙状态(确认是否启用)
sudo ufw status
# 开放8085端口(TCP协议)
sudo ufw allow 8085/tcp
# 重载防火墙规则(立即生效)
sudo ufw reload
# 验证端口是否开放
sudo ufw status verbose # 输出应包含"8085/tcp ALLOW IN Anywhere"
步骤 3:用 PM2 启动 Vue+Express 项目
通过 PM2 启动 Express 入口文件(如server.js
),确保进程后台运行:
bash
# 进入项目根目录
cd /home/yourname/vue-project
# 启动项目(--name指定进程名,便于识别)
pm2 start server.js --name "vue-express-app"
步骤 4:验证运行状态
bash
pm2 list # 查看所有PM2进程,确认"vue-express-app"状态为online
pm2 logs vue-express-app # 查看项目日志,排查启动错误
此时可通过服务器 IP:8085(如http://your-server-ip:8085
)访问项目。
步骤 5:设置 PM2 开机自启动
确保服务器重启后,PM2 自动恢复并启动项目:
bash
# 生成开机自启动脚本(根据终端提示执行后续命令,通常需要sudo权限)
pm2 startup
# 示例提示(不同系统可能略有差异):
# sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u yourname --hp /home/yourname
# 保存当前PM2进程列表(确保重启后恢复)
pm2 save
验证自启动配置:
bash
# 查看自启动服务状态
systemctl status pm2-yourname # 替换为实际用户名
常用 PM2 管理命令
- 停止项目:
pm2 stop vue-express-app
- 重启项目:
pm2 restart vue-express-app
- 删除项目:
pm2 delete vue-express-app
- 查看详细信息:
pm2 show vue-express-app
注意事项
- 若修改了项目代码或配置,需重启 PM2 进程:
pm2 restart vue-express-app
- 若更换端口(如从 8085 改为 80),需同步更新 Express 配置和防火墙规则
- 若使用
nvm
管理 Node.js 版本,pm2 startup
时需确保路径正确(避免权限问题)
通过以上步骤,可在 Ubuntu 中用 PM2 稳定运行基于 Express 的 Vue 项目,并确保其在服务器重启后自动恢复。