当前位置: 首页 > news >正文

Ubuntu系统上部署Node.js项目的完整流程

以下是在Ubuntu系统上部署Node.js项目的完整流程,分为系统初始化、环境配置、项目部署三个部分:


一、系统初始化 & 环境准备

 

bash

# 1. 更新系统软件包
sudo apt update && sudo apt upgrade -y# 2. 安装基础工具
sudo apt install -y build-essential git curl# 3. 安装Node.js(推荐使用LTS版本)
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs# 验证安装
node -v && npm -v# 4. 全局安装PM2进程管理工具
sudo npm install -g pm2# 设置PM2开机自启
pm2 startup systemd
# 根据提示执行生成的命令(例如)
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu

二、上传Node.js项目

方式1:通过SCP上传(本地→服务器)
 

bash

# 本地终端执行(非服务器)
scp -r /本地/项目路径 ubuntu@服务器IP:/目标路径
方式2:通过Git克隆
 

bash

# 服务器操作
git clone https://github.com/你的仓库地址.git
cd 项目目录

三、项目部署流程

 

bash

# 1. 进入项目目录
cd /path/to/your/project# 2. 安装项目依赖
npm install# 3. 配置环境变量(按需)
# 方式1:直接写入
echo "PORT=3000" > .env
# 方式2:手动创建.env文件并填写配置# 4. 启动项目(任选其一)
pm2 start app.js              # 直接启动js文件
pm2 start "npm start" --name "my-app"  # 启动npm脚本
pm2 start ecosystem.config.js # 使用配置文件# 5. 保存PM2进程列表
pm2 save# 6. 查看运行状态
pm2 list
pm2 logs

四、网络配置(可选)

1. 开放防火墙端口
 

bash

sudo ufw allow 22    # SSH端口(已默认开放)
sudo ufw allow 3000  # 应用端口
sudo ufw enable
2. 配置Nginx反向代理(推荐)
 

bash

# 安装Nginx
sudo apt install -y nginx# 创建配置文件
sudo nano /etc/nginx/sites-available/your-domain.conf

配置文件内容示例:

 

nginx

server {listen 80;server_name your-domain.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:

 

bash

sudo ln -s /etc/nginx/sites-available/your-domain.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
3. 配置SSL证书(Let's Encrypt)
 

bash

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com

五、常用维护命令

 

bash

# 查看实时日志
pm2 logs# 重启应用
pm2 restart app-name# 停止应用
pm2 stop app-name# 删除应用
pm2 delete app-name# 更新项目代码后的操作
git pull
npm install
pm2 restart all

注意事项:​

  1. 确保项目中的监听地址为 0.0.0.0 而非 127.0.0.1
  2. 生产环境建议使用NODE_ENV=production
  3. 敏感信息(如API密钥)务必通过.env文件管理
  4. 建议使用npm ci代替npm install保持依赖一致性

按照以上步骤操作,即可完成从零开始到生产环境部署的完整流程。

http://www.lryc.cn/news/545723.html

相关文章:

  • DeepSeek效应初现:Grok-3补刀ChatGPT,OpenAI已在ICU?
  • 【知识】torchrun 与 torch.multiprocessing.spawn 的对比
  • 深入了解 K-Means 聚类算法:原理与应用
  • Rust ~ Collect
  • C# 类型转换
  • [IP] DDR_FIFO(DDR3 用户FIFO接口)
  • 第三百七十二节 JavaFX教程 - JavaFX HTMLEditor
  • 蓝桥杯试题:DFS回溯
  • Lua | 每日一练 (4)
  • 每日一题——接雨水
  • java常见面试01
  • 算法-二叉树篇27-把二叉搜索树转换为累加树
  • C语言:51单片机 基础知识
  • olmOCR:使用VLM解析PDF
  • 数据结构(初阶)(七)----树和二叉树(堆,堆排序)
  • 图像分类项目1:基于卷积神经网络的动物图像分类
  • Kali Linux 2024.4版本全局代理(wide Proxy)配置,适用于浏览器、命令行
  • [Windows] 批量为视频或者音频生成字幕 video subtitle master 1.5.2
  • 不要升级,Flutter Debug 在 iOS 18.4 beta 无法运行,提示 mprotect failed: Permission denied
  • 介绍 torch-mlir 从 pytorch 生态到 mlir 生态
  • upload
  • InterHand26M(handposeX-json 格式)数据集-release >> DataBall
  • [Java基础] JVM常量池介绍(BeanUtils.copyProperties(source, target)中的属性值引用的是同一个对象吗)
  • `maturin`是什么:matu rus in python
  • spring boot整合flyway实现数据的动态维护
  • unity中使用spine详解
  • 14. LangChain项目实战1——基于公司制度RAG回答机器人
  • 利用STM32TIM自制延迟函数实验
  • 创建一个MCP服务器,并在Cline中使用,增强自定义功能。
  • Android Activity栈关系解析