Node.js 项目如何部署到 Ubuntu:从运行环境到 PM2 与 Nginx 的完整流程
时间:2026-08-25 | 作者:穿越地图的猫 | 阅读:0在Ubuntu上部署Node.js项目,其实比想象中要简单,只要把几个关键步骤走通,剩下的就是按部就班。下面这份指南,基本涵盖了从零开始到能用域名访问的完整流程,值得收藏。
1. 安装Node.js和npm
一开始,得先把Node.js和npm请到Ubuntu系统里来。最省事的方法是用NodeSource的官方二进制分发库,直接装最新稳定版。
# 添加NodeSource库curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -# 安装Node.js和npmsudo apt-get install -y nodejs
装完可以用 node -v 和 npm -v 确认一下,看到版本号就说明成功了。
2. 创建项目目录
然后,在服务器上找个合适的位置,给项目建个独立的文件夹。
mkdir my-nodejs-appcd my-nodejs-app
这样后面所有操作都在这个目录里,干净利落。
3. 初始化项目
如果手里还没有现成的 package.json,可以用 npm init 快速生成一个,加上 -y 参数能跳过交互式问答,直接使用默认配置。
npm init -y
4. 安装依赖
接下来,把项目需要的依赖写进 package.json,然后执行 npm install 一次性装好。以Express为例:
npm install express body-parser --sa ve
这里的 --sa ve 会自动把依赖信息写入 package.json,方便后续迁移。
5. 配置环境变量
生产环境里,环境变量是必备的。推荐用 dotenv 包配合 .env 文件来管理,既安全又灵活。
npm install dotenv --sa ve
在项目根目录创建 .env 文件,添加变量:
PORT=3000NODE_ENV=production
然后在应用入口文件里加载这些变量,比如 app.js:
require('dotenv').config();const express = require('express');const bodyParser = require('body-parser');const app = express();app.use(bodyParser.json());app.get('/', (req, res) => {res.send('Hello World!');});const PORT = process.env.PORT || 3000;app.listen(PORT, () => {console.log(`Server is running on port ${PORT}`);});
这样,代码里就能通过 process.env.PORT 读取到端口号,而不会把敏感信息硬编码进去。
6. 启动应用
配置好之后,直接运行 npm start 就能看到效果了。如果 package.json 里已经定义了 start 脚本,这步很简单。
npm start
用 curl http://localhost:3000 测试一下,应该能返回 "Hello World!"。
7. 使用PM2管理应用
手动启动的进程在终端关闭后就会停止,这显然不适合生产环境。PM2 是Node.js应用的守护进程管理器,能自动重启、监控日志,还能在服务器重启后自动拉起应用。
# 安装PM2sudo npm install pm2 -g# 启动应用pm2 start app.js --name my-nodejs-app# 查看应用状态pm2 status# 停止应用pm2 stop my-nodejs-app# 重启应用pm2 restart my-nodejs-app# 删除应用pm2 delete my-nodejs-app
启动后,用 pm2 startup 设置开机自启,PM2 会生成对应的systemd服务,真正做到一劳永逸。
8. 配置Nginx反向袋里
直接用Node.js监听80端口虽然可行,但用Nginx做反向袋里,能利用其更成熟的安全策略、静态文件处理能力和负载均衡功能。
# 安装Nginxsudo apt-get install nginx -y# 配置Nginxsudo nano /etc/nginx/sites-a vailable/my-nodejs-app
在打开的配置文件中,填入以下内容:
server {listen 80;server_name yourdomain.com;location / {proxy_pass http://localhost:3000;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;}}
保存并退出,然后启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-a vailable/my-nodejs-app /etc/nginx/sites-enabledsudo nginx -tsudo systemctl restart nginx
如果一切顺利,现在通过你的域名就能访问Node.js应用了。
总结
以上步骤覆盖了Ubuntu上部署Node.js项目的核心流程,包括环境搭建、依赖管理、配置环境变量、进程守护和反向袋里。当然,具体到每个项目,可能还需要调整数据库连接、日志配置或安全策略,但掌握了这套基础框架,后续的扩展和优化就会顺畅很多。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- Ubuntu下使用Git管理Swagger项目的完整指南
- 时间:2026-08-31
-
- Ubuntu下GIMP滤镜使用全指南:从基础操作到批量处理
- 时间:2026-08-31
-
- Ubuntu下使用Telnet进行远程管理的完整指南
- 时间:2026-08-31
-
- Ubuntu中如何查看磁盘I/O对CPU的影响:cpustat替代方案
- 时间:2026-08-31
-
- Ubuntu系统使用cpustat查看多核CPU信息的方法
- 时间:2026-08-31
-
- Ubuntu中Rust日志系统配置指南
- 时间:2026-08-27
-
- Ubuntu下Rust集成第三方库完整指南
- 时间:2026-08-27
-
- Ubuntu下Rust跨平台开发:从环境搭建到自动化测试指南
- 时间:2026-08-27
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
