ubuntu

在Ubuntu上如何部署Node.js应用

小樊
45
2025-11-04 06:18:21
栏目: 编程语言

在Ubuntu上部署Node.js应用的完整步骤

1. 准备工作:更新系统

在开始部署前,确保Ubuntu系统是最新的,避免因软件包版本冲突导致问题:

sudo apt update && sudo apt upgrade -y

2. 安装Node.js与npm

Node.js和npm(Node包管理器)是部署的基础。推荐通过NodeSource PPA安装特定版本(如18.x),或使用nvm(Node版本管理器)灵活切换版本:

验证安装是否成功:

node -v  # 查看Node.js版本(如v18.x.x)
npm -v   # 查看npm版本(如9.x.x)

3. 部署Node.js项目

3.1 上传项目到服务器

将本地项目文件上传至服务器(如使用scp命令):

scp -r /本地项目路径/用户名@服务器IP:/远程目标路径/

登录服务器,进入项目目录:

cd /远程目标路径/项目文件夹

3.2 安装项目依赖

项目根目录下的package.json文件记录了所有依赖,运行以下命令安装:

npm install

若项目需要生产环境依赖(忽略devDependencies),可添加--production参数:

npm install --production

3.3 配置环境变量(可选但推荐)

生产环境需设置敏感信息(如数据库密码、API密钥),可通过.env文件或直接导出:

4. 启动Node.js应用

4.1 直接启动(不推荐生产环境)

使用node命令启动应用,但进程会在终端关闭后终止:

node app.js  # 替换为你的入口文件(如server.js、index.js)

4.2 使用PM2进程管理(推荐生产环境)

PM2可保持应用运行、自动重启、监控性能,安装并启动应用:

sudo npm install -g pm2  # 全局安装PM2
pm2 start app.js --name "my-node-app"  # 启动应用并命名
pm2 save  # 保存当前进程列表
pm2 startup  # 设置PM2开机自启动(按提示执行命令)

查看应用状态:

pm2 list

查看实时日志:

pm2 logs

5. 配置Nginx反向代理(可选但推荐)

Nginx可作为反向代理,处理HTTP请求转发、静态文件服务、SSL卸载,提升应用性能与安全性:

5.1 安装Nginx

sudo apt install nginx -y

5.2 配置Nginx

编辑Nginx配置文件(如/etc/nginx/sites-available/default),替换为以下内容:

server {
    listen 80;
    server_name your_domain_or_ip;  # 替换为域名或服务器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;
    }

    # 可选:处理静态文件(如图片、CSS),减少Node.js负载
    location /static/ {
        alias /path/to/your/static/files/;
        expires 30d;
    }
}

测试配置语法是否正确:

sudo nginx -t

重启Nginx使配置生效:

sudo systemctl restart nginx

6. 配置防火墙

若服务器启用了ufw(Uncomplicated Firewall),需允许HTTP(80)和HTTPS(443)流量:

sudo ufw allow 'Nginx Full'  # 允许HTTP和HTTPS
sudo ufw enable  # 启用防火墙(若未启用)

7. 配置SSL证书(推荐)

为应用启用HTTPS,提升安全性。可使用Let’s Encrypt免费获取SSL证书,通过Certbot自动配置Nginx:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com  # 替换为你的域名

Certbot会自动修改Nginx配置,添加SSL证书路径及重定向HTTP到HTTPS。

8. 验证部署

打开浏览器,访问http://your_domain_or_ip(或https://your_domain.com),若看到应用页面则表示部署成功。
通过PM2查看应用状态,确认进程正常运行:

pm2 list

以上步骤覆盖了Ubuntu上部署Node.js应用的全流程,涵盖环境准备、项目部署、进程管理、反向代理及安全配置,适合生产环境使用。

0
看了该问题的人还看了