首页主机资讯在Ubuntu上如何部署NodeJS应用

在Ubuntu上如何部署NodeJS应用

时间2025-10-16 21:56:04发布访客分类主机资讯浏览1478
导读:在Ubuntu上部署Node.js应用的完整流程 1. 准备工作:更新系统与安装基础依赖 在开始部署前,需确保系统软件包为最新版本,并安装构建Node.js模块所需的工具: sudo apt update && sudo a...

在Ubuntu上部署Node.js应用的完整流程

1. 准备工作:更新系统与安装基础依赖

在开始部署前,需确保系统软件包为最新版本,并安装构建Node.js模块所需的工具:

sudo apt update &
    &
     sudo apt upgrade -y
sudo apt install -y build-essential libssl-dev

2. 安装Node.js与npm

方法一:通过NodeSource仓库安装(推荐,支持指定版本)

# 导入NodeSource仓库密钥并设置源(以Node.js 20.x为例)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
# 安装Node.js及npm
sudo apt install -y nodejs

方法二:使用nvm(Node Version Manager,适合多版本管理)

# 安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 加载nvm环境
source ~/.bashrc
# 安装最新LTS版本Node.js
nvm install --lts

验证安装

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

3. 创建并配置Node.js项目

初始化项目

mkdir my-node-app &
    &
     cd my-node-app
npm init -y  # 生成package.json文件

安装依赖(以Express框架为例)

npm install express --save

编写服务器代码(server.js

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

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

}
    );
    

app.listen(port, () =>
 {

  console.log(`Server running at http://localhost:${
port}
    /`);

}
    );

4. 启动应用与进程管理(使用PM2)

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

安装PM2

sudo npm install -g pm2

启动应用

pm2 start server.js --name "my-node-app"  # 以“my-node-app”名称启动

常用PM2命令

pm2 list          # 查看所有管理的进程
pm2 logs          # 查看应用日志
pm2 restart my-node-app  # 重启应用
pm2 stop my-node-app     # 停止应用

设置开机自启

pm2 startup  # 生成开机自启脚本(根据提示执行后续命令,如sudo su -c "env PATH=$PATH:/usr/bin pm2 startup ubuntu -u ubuntu --hp /home/ubuntu")
pm2 save     # 保存当前进程列表到开机启动配置

5. 配置Nginx反向代理(生产环境必备)

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

安装Nginx

sudo apt install -y nginx

配置Nginx

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

sudo nano /etc/nginx/sites-available/default

替换server块内容为以下配置(假设应用运行在3000端口,域名替换为你的实际域名或IP):

server {
    
    listen 80;
    
    server_name your-domain.com www.your-domain.com;
  # 替换为你的域名或IP

    location / {
    
        proxy_pass http://127.0.0.1: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

sudo nginx -t  # 测试配置语法(无错误则显示“syntax is ok”)
sudo systemctl restart nginx  # 重启Nginx生效配置

6. 生产环境优化补充

配置环境变量

将敏感信息(如数据库密码、API密钥)存储在环境变量中,避免硬编码:

# 编辑~/.bashrc或项目根目录的.env文件(推荐)
echo "PORT=3000\nNODE_ENV=production" >
    >
     ~/.bashrc
source ~/.bashrc

在代码中通过process.env.PORT访问变量。

防火墙设置

允许HTTP(80)及HTTPS(443)流量通过:

sudo ufw allow 'Nginx Full'  # 允许Nginx全部流量
sudo ufw enable              # 启用防火墙
sudo ufw status              # 查看防火墙状态

自动化部署(可选)

通过Git钩子或CI/CD工具(如GitHub Actions、GitLab CI)实现代码自动拉取与重启:

# 示例:简单的自动化部署脚本(save为deploy.sh)
#!/bin/bash
cd /path/to/my-node-app
git pull origin main
npm install
pm2 restart my-node-app
sudo systemctl reload nginx
chmod +x deploy.sh  # 赋予执行权限
./deploy.sh         # 执行部署

通过以上步骤,你可在Ubuntu上完成Node.js应用的生产级部署,确保应用稳定运行并具备良好的扩展性。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 在Ubuntu上如何部署NodeJS应用
本文地址: https://pptw.com/jishu/728453.html
NodeJS在Ubuntu上如何进行安全配置 NodeJS在Ubuntu上运行出错怎么办

游客 回复需填写必要信息