如何将本地 Node.js 服务部署到宝塔面板:完整的部署指南

文章简介:

将本地开发的 Node.js 项目部署到线上服务器是开发者常见的工作流程之一。在这篇文章中,我将详细介绍如何将本地的 Node.js 服务通过宝塔面板(BT 面板)上线。宝塔面板是一个强大的服务器管理工具,具有简洁的 UI 和丰富的功能,适合用来管理服务器、部署应用程序和维护网站。


正文:

宝塔面板(BT)提供了方便的 Web 界面,简化了服务器管理和网站运维的流程。将本地 Node.js 服务部署到宝塔服务器,经过以下几个步骤即可轻松实现。

第一步:准备你的本地 Node.js 服务

在将服务部署到服务器之前,首先确保你的本地 Node.js 项目已经准备好,并且可以正常启动。

  1. 安装项目依赖
    如果还没有安装依赖,首先在项目根目录下执行以下命令:

    npm install
    
  2. 本地启动项目
    使用以下命令确保项目可以在本地成功运行:

    npm start
    

    或者:

    node app.js
    

    确保应用正常启动并没有报错,浏览器中可以正常访问。

  3. 配置项目端口
    检查你的 app.jsserver.js 文件,确保定义了服务监听的端口,比如:

    const port = process.env.PORT || 3000;
    app.listen(port, () => {console.log(`Server is running on port ${port}`);
    });
    
第二步:准备宝塔面板服务器

如果你已经在宝塔面板上配置了服务器,可以直接跳到下一步。如果还没有,则需要配置一台服务器并安装宝塔面板。

  1. 购买服务器
    登录阿里云、腾讯云等云服务商平台,选择合适的服务器配置(如 2vCPU、4G 内存),并购买服务器。

  2. 安装宝塔面板
    登录到你的服务器后,执行以下命令来安装宝塔面板:

    CentOS 系统:

    yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
    

    Ubuntu/Debian 系统:

    wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
    

    执行安装脚本后,系统会提示安装成功,并给出宝塔面板的登录地址、账号和密码。

  3. 登录宝塔面板
    打开浏览器,访问安装成功时提示的面板地址,使用提供的账号密码登录宝塔。

第三步:安装 Node.js 运行环境

宝塔面板的强大之处在于它支持一键安装各种常用的运行环境。我们需要安装 Node.js 来运行我们的应用。

  1. 在宝塔面板中安装 Node.js

    • 打开宝塔面板的 软件商店
    • 在左侧栏中找到 运行环境,然后找到 Node.js
    • 选择你需要的 Node.js 版本,点击安装。
  2. 检查 Node.js 是否安装成功
    安装完成后,打开 终端SSH 工具(如 PuTTY),在命令行中输入以下命令,检查 Node.js 是否已成功安装:

    node -v
    

    如果显示 Node.js 的版本号,则安装成功。

第四步:上传你的 Node.js 项目

接下来,你需要将本地的项目文件上传到宝塔面板的服务器。

  1. 打包你的项目
    在本地项目目录下执行以下命令来打包项目:

    zip -r my-node-app.zip .
    
  2. 上传到服务器

    • 在宝塔面板中,点击左侧的 文件
    • 选择你想要存放项目的目录(通常是 /www 目录下),然后点击右上角的 上传 按钮,将 my-node-app.zip 文件上传到服务器。
    • 上传完成后,解压该压缩包,确保所有项目文件上传成功。
第五步:安装项目依赖
  1. 通过 SSH 登录服务器,进入到你的项目目录:

    cd /www/my-node-app
    
  2. 安装依赖
    执行以下命令,安装项目的依赖库:

    npm install
    

    这一步会自动读取 package.json 中的依赖并进行安装。

第六步:配置 PM2 管理 Node.js 服务

为了让你的 Node.js 服务能够持续运行,我们使用 PM2 来管理应用进程。PM2 是一个非常流行的 Node.js 进程管理工具,支持应用的自动重启和监控。

  1. 安装 PM2
    在服务器终端中,执行以下命令安装 PM2:

    npm install pm2 -g
    
  2. 启动你的 Node.js 服务
    使用 PM2 启动 Node.js 应用:

    pm2 start app.js --name "my-node-app"
    
    • app.js 是你应用的入口文件。
    • --name 参数为你的应用命名,方便在多个应用中管理。
  3. 设置开机自启
    为了确保服务器重启后,Node.js 服务可以自动启动,执行以下命令:

    pm2 startup
    pm2 save
    
第七步:配置 Nginx 反向代理

在宝塔面板中,我们可以通过 Nginx 反向代理将外部请求转发给 Node.js 服务。

  1. 安装 Nginx
    软件商店 中,找到 Nginx,选择安装。

  2. 配置 Nginx 反向代理

    • 在宝塔面板的左侧,点击 网站,然后点击 添加站点,填写你想绑定的域名和站点信息。
    • 添加完成后,点击站点的设置,找到 反向代理 选项。
    • 在代理目标填写 Node.js 监听的地址(如 http://127.0.0.1:3000),并启用反向代理。
  3. 保存配置并重启 Nginx
    配置完成后,保存并重启 Nginx,然后项目就运行成功了。
    在这里插入图片描述

第八步:测试和优化
  1. 测试服务
    打开你绑定的域名或服务器的 IP 地址,检查是否可以正常访问你的 Node.js 服务。

  2. 监控和调试
    使用 PM2 的日志功能来监控服务的状态和调试可能的问题:

    pm2 logs my-node-app
    
  3. SSL 配置(可选)
    如果需要配置 HTTPS,可以在宝塔面板的 SSL 选项中,使用 Let’s Encrypt 免费申请证书,并绑定到你的站点。


结语:

通过宝塔面板,你可以轻松将本地的 Node.js 服务部署到线上,并通过 PM2 和 Nginx 实现进程管理和反向代理。整个过程简单高效,即便是没有太多服务器管理经验的开发者,也能快速上手。

希望这篇指南能帮助你顺利将本地 Node.js 服务部署到宝塔面板中!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/452170.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Go 语言实现 WebSocket的核心逻辑

文章目录 WebSocket 简介时序图核心逻辑Client 结构与功能创建新客户端消息读取逻辑 (ReadPump)发送消息逻辑 (Send)客户端管理器 (ClientManager)WebSocket 处理器处理心跳与长连接 总结 本文将基于 Go 语言,通过使用 gorilla/websocket 库来实现一个简单的聊天应用…

教电脑“看”图片

教电脑“看”图片 计算机视觉简介 上一篇:《自己DIY首个人工智能模型》 序言:人是如何“看”图片的?人类感知周围世界,主要依赖看、听、闻、触这些感官,而“看”是最普遍和直观的方式。计算机视觉,就是对…

前端html,css 样式巩固1

想做这样 一个效果 点击图片切换 当前的选中图片 我们使用 原生的js html 来开发这个 直接粘贴代码 相信大家 都能看懂的 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" …

力扣动态规划基础版(斐波那契类型)

70. 爬楼梯https://leetcode.cn/problems/climbing-stairs/ 70.爬楼梯 方法一 动态规划 考虑转移方程和边界条件&#xff1a; f&#xff08;x&#xff09; f&#xff08;x -1&#xff09; f&#xff08;x - 2&#xff09;;f&#xff08;1&#xff09; 1&#xff1b;f&…

CNN-BiLSTM回归预测 | MATLAB实现CNN-BiLSTM卷积双向长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现CNN-BiLSTM(卷积双向长短期记忆神经网络)多输入单输出 目录 回归预测 | MATLAB实现CNN-BiLSTM(卷积双向长短期记忆神经网络)多输入单输出效果一览基本介绍程序设计学习总结参考资料效果一览 基本介绍 提出一种同时考虑时间与空间因素的卷积-双向长短期记…

UART协议

文章目录 UART 协议主要特点UART控制器组成部分工作流程 UART寄存器(fs4412)输入输出重定向 UART 协议 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff0c;通用异步收发传输器&#xff09;是一种串行通信协议&#xff0c;用于在计算机或外设之间进行数…

java集合进阶篇-《Collection集合》

个人主页→VON 收录专栏→java从入门到起飞 目录 一、前言 二、Collection集合简要概述 Collection的主要实现 Collection的方法 迭代器&#xff08;Iterator&#xff09; 三、单列集合顶层接口Collection CollectionDemo01 CollectionDemo02 CollectionDemo03 Collec…

问题记录:matlab中spatial contact force模块下关于stiffness(刚度)的设定

最近在搞一阶倒立摆&#xff0c;在matlab仿真时遇到这样的问题&#xff1a;stiffness设置为10e5就会发生碰撞后穿透&#xff0c;&#xff08;四个spatial contact force模块是分别连接小车四个轮子和地面的&#xff09; 而设置成10e6就不会有问题&#xff0c; 由于本人也是第一…

微信小程序上传组件封装uploadHelper2.0使用整理

一、uploadHelper2.0使用步骤说明 uploadHelper.js ---上传代码封装库 cos-wx-sdk-v5.min.js---腾讯云&#xff0c;对象存储封装库 第一步&#xff0c;下载组件代码&#xff0c;放置到自己的小程序项目中 第二步、 创建上传对象&#xff0c;执行选择图片/视频 var _this th…

【H2O2|全栈】关于CSS(14)如何完成常规的页面布局

目录 基本布局方式 前言 准备工作 管理系统界面 APP界面 区域内的滚动条 结束语 基本布局方式 前言 通过上一次学习如何让页面适应任意屏幕的学习&#xff0c;我们就可以开始学习如何用代码“画”出基本的框架了。本期主要分享如何绘制基本的PC端管理系统和移动端APP的…

新颖的 setTimeout() 替代方案

在前端开发中&#xff0c;长时间运行的JavaScript任务一直是一个棘手的问题。它们会导致页面无响应&#xff0c;影响用户体验。传统上&#xff0c;开发者使用setTimeout()来分割长任务&#xff0c;但这种方法存在明显的缺陷。最近&#xff0c;Chrome 129引入了一种新的、更高效…

机器学习面试笔试知识点-线性回归、逻辑回归(Logistics Regression)和支持向量机(SVM)

机器学习面试笔试知识点-线性回归、逻辑回归Logistics Regression和支持向量机SVM 一、线性回归1.线性回归的假设函数2.线性回归的损失函数(Loss Function)两者区别3.简述岭回归与Lasso回归以及使用场景4.什么场景下用L1、L2正则化5.什么是ElasticNet回归6.ElasticNet回归的使…

视频云存储/音视频流媒体视频平台EasyCVR视频汇聚平台在欧拉系统中启动失败是什么原因?

视频监控/视频集中存储/磁盘阵列EasyCVR视频汇聚平台具备强大的拓展性和灵活性&#xff0c;支持多种视频流的外部分发&#xff0c;如RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、WebRTC、fmp4等&#xff0c;这为其在各种复杂环境下的部署提供了便利。 安防监控EasyCVR视频汇聚平…

分布式数据库安全可靠测评名录之平凯数据库(TiDB企业版)

作者&#xff1a; 数据源的TiDB学习之路 原文来源&#xff1a; https://tidb.net/blog/d052ee0b 2024 年 9 月 30 日&#xff0c;中国信息安全测评中心公布安全可靠测评结果公告&#xff08;2024年第2号&#xff09;&#xff0c;其中包含 6 款集中式数据库和 11 款分布式数据…

鸿蒙网络编程系列30-断点续传下载文件示例

1. 断点续传简介 在文件的下载中&#xff0c;特别是大文件的下载中&#xff0c;可能会出现各种原因导致的下载暂停情况&#xff0c;如果不做特殊处理&#xff0c;下次还需要从头开始下载&#xff0c;既浪费了时间&#xff0c;又浪费了流量。不过&#xff0c;HTTP协议通过Range…

信息安全工程师(58)网络安全漏洞处置技术与应用

前言 网络安全漏洞处置技术与应用是一个复杂而关键的领域&#xff0c;它涉及漏洞的发现、评估、修补以及后续的监控与防范等多个环节。 一、网络安全漏洞发现技术 网络安全漏洞发现技术是漏洞处置的首要步骤&#xff0c;它旨在通过各种手段识别出网络系统中存在的潜在漏洞。这些…

jupyter notebook远程连接服务器

jupyter notebook远程连接服务器 文章目录 jupyter notebook远程连接服务器jupyter是什么配置步骤安装jupyter生成jupyter配置文件编辑jupyter配置文件设置密码ssh隧道 启动顺序jupyter添加kernel下载ipykernel包添加kernel 测试遇到的问题 jupyter是什么 Jupyter Notebook是一…

数据结构之队列(python)

华子目录 1.队列存储结构1.1队列基本介绍1.2队列的实现方式 2.顺序队列2.1顺序队列的介绍2.2顺序队列的简单实现2.3代码实现 3.链式队列和基本操作3.1链式队列数据入队3.2链式队列数据出队3.3队列的链式表示和实现 1.队列存储结构 1.1队列基本介绍 队列的两端都"开口&qu…

FFmpeg 4.3 音视频-多路H265监控录放C++开发三 :安装QT5.14.2, 并将QT集成 到 VS2019中。

一&#xff0c;安装QT&#xff0c; 重点&#xff1a;在安装QT的时候要安装msvc201x版本的组件&#xff0c; 二 &#xff0c; 安装 qt-vs-tools Index of /development_releases/vsaddin/2.8.1 三&#xff0c;需要安装过 windows10 SDK&#xff0c;一般我们在安装vs2019的时候就…

餐饮店怎么标注地图位置信息?

随着市场竞争的日益激烈&#xff0c;商家若想在竞争中脱颖而出&#xff0c;就必须想方设法去提高自身的曝光度和知名度&#xff0c;为店铺带来更多的客流量。其中&#xff0c;地图标注便是一种简单却极为有效的方法。通过在地图平台上添加店铺位置信息&#xff0c;不仅可以方便…