温馨提示×

如何在Ubuntu上部署Node.js项目

小樊
33
2025-11-11 02:43:08
栏目: 编程语言

如何在Ubuntu上部署Node.js项目
在Ubuntu上部署Node.js项目需完成环境准备、项目配置、进程管理及生产优化等步骤,以下是详细流程:

一、准备工作:更新系统与安装基础工具

首先确保系统软件包为最新版本,避免兼容性问题:

sudo apt update && sudo apt upgrade -y

二、安装Node.js与npm

1. 快速安装(默认版本,适合测试)

通过Ubuntu官方仓库安装,但版本可能较旧:

sudo apt install nodejs npm -y

验证安装:

node -v  # 查看Node.js版本(需≥14.x)
npm -v   # 查看npm版本

2. 安装特定版本(推荐生产环境)

若项目需要特定版本(如18.x),可通过NodeSource PPA安装:

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

或使用nvm(灵活管理多版本):

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
source ~/.bashrc
nvm install 18  # 安装指定版本
nvm use 18      # 切换至该版本

三、部署Node.js项目

1. 创建或上传项目

  • 新建项目
    mkdir my-node-app && cd my-node-app
    npm init -y  # 初始化package.json
    
  • 上传现有项目:通过scp(本地→服务器)或git(代码托管平台→服务器):
    scp -r /local/project/path username@server_ip:/remote/deploy/path
    cd /remote/deploy/path
    

2. 安装项目依赖

进入项目目录,安装package.json中定义的依赖:

npm install  # 生产环境建议添加--production减少体积

若使用yarn(替代npm):

npm install -g yarn
yarn install

3. 创建服务器文件

若项目未包含入口文件(如server.js),创建一个基础Express示例:

// server.js
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;  // 支持环境变量端口

app.get('/', (req, res) => {
  res.send('Hello from Node.js on Ubuntu!');
});

app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

四、配置Nginx反向代理(生产环境必选)

Nginx可处理HTTP请求转发、静态文件服务及SSL卸载,提升应用性能与安全性。

1. 安装Nginx

sudo apt install nginx -y

2. 配置反向代理

编辑默认站点配置(或新建自定义配置):

sudo nano /etc/nginx/sites-available/my-node-app

添加以下内容(替换your_domain_or_ip为实际域名/IP):

server {
    listen 80;
    server_name your_domain_or_ip;

    location / {
        proxy_pass http://localhost:3000;  # 转发至Node.js应用端口
        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处理(提升性能)
    location /static/ {
        alias /path/to/your/static/files/;
        expires 30d;
    }
}

启用配置并测试:

sudo ln -s /etc/nginx/sites-available/my-node-app /etc/nginx/sites-enabled/
sudo nginx -t  # 验证配置语法
sudo systemctl reload nginx  # 重载Nginx

五、使用PM2管理Node.js进程(生产环境必选)

PM2是Node.js进程管理工具,可实现后台运行、自动重启、日志管理等功能。

1. 全局安装PM2

sudo npm install -g pm2

2. 启动应用

pm2 start server.js --name "my-node-app"  # 指定名称便于管理

常用命令:

pm2 status          # 查看运行中的应用状态
pm2 logs            # 查看实时日志
pm2 restart my-node-app  # 重启应用
pm2 stop my-node-app     # 停止应用

3. 设置开机自启动

确保服务器重启后应用自动恢复:

pm2 startup  # 生成启动脚本(按提示执行后续命令)
pm2 save     # 保存当前进程列表

六、配置防火墙(可选但推荐)

若使用ufw(Ubuntu防火墙),允许HTTP(80)和HTTPS(443)流量:

sudo ufw allow 'Nginx Full'  # 允许HTTP和HTTPS
sudo ufw enable              # 启用防火墙
sudo ufw status              # 查看状态

七、测试部署

在浏览器访问服务器IP或域名(如http://your_domain_or_ip),应看到应用返回的响应(如“Hello from Node.js on Ubuntu!”)。

通过以上步骤,即可在Ubuntu上完成Node.js项目的部署,涵盖环境准备、项目配置、进程管理及生产优化等关键环节。

0