如何将本地 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/3900.html

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

相关文章

Word2Vec中的CBOW模型训练原理详细解析

Word2Vec中的CBOW模型训练原理详细解析 1. CBOW模型概述 CBOW模型的训练目标是利用一个单词周围的上下文单词来预测该单词本身。具体来说,给定当前单词的上下文单词,通过训练神经网络来最大化当前单词出现在这些上下文单词中的概率。 2. 模型结构 CB…

第22篇 基于ARM A9处理器用汇编语言实现中断<四>

Q:怎样编写ARM A9处理器汇编语言代码配置使用按键和定时器中断? A:本次实验同样为中断模式和监督模式都设置ARM A9堆栈指针,并使能中断,此外在主程序中调用子程序CONFIG_HPS_TIMER和CONFIG_KEYS分别对HPS Timer 0&…

后盾人JS -- 好用的 JavaScript Symbol 类型

Symbol使用场景介绍 举个例子,当leader让你去机房取某个电脑的时候,机房那么多电脑,你怎么知道取哪个 所以这个时候symbol的作用就显现出来了(上面有什么贴纸的,什么型号的电脑) 声明定义Symbol的几种方…

反转字符串中的单词 II:Swift 实现与详解

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

JVM相关面试题

一、JVM是什么: Java Virtual Machine,Java的运行环境(java二进制字节码的运行环境);一次编写、到处运行;自动管理内存,提供垃圾回收机制 JVM的组成部分、运行流程: 二、JVM的组成: 1.程序计数器: 程序计数器是线程私有的,内部…

【蜂巢——方向,数学】

题目 代码 #include <bits/stdc.h> using namespace std; using ll long long; int dx[6] {-1, -1, 0, 1, 1, 0}; int dy[6] {0, 1, 1, 0, -1, -1}; void cal(int d, int p, int q, int& x, int& y) {x p * dx[d];y p * dy[d];d (d 2) % 6;x q * dx[d];…

使用 Thermal Desktop 进行航天器热分析

介绍 将航天器保持在运行温度下的轨道上是一个具有挑战性的问题。航天器需要处理太空非常寒冷的背景温度&#xff0c;同时还要管理来自内部组件、地球反照率和太阳辐射的高热负荷。航天器在轨道上可以进行的各种轨道机动使解决这个问题变得更加复杂。 Thermal Desktop 是一款…

【ESP32】ESP-IDF开发 | WiFi开发 | AP模式 + 基站连接例程

1. 简介 前面一篇讲了WiFi的基站模式&#xff0c;演示了怎么编程连接AP&#xff0c;所以这一篇讲一讲AP模式&#xff0c;ESP32作AP&#xff0c;让其他的设备连接自己。 1.1 DHCP 这里需要补充一个知识点——DHCP服务器。当基站连接一个AP时&#xff0c;会被分配一个IP&#xf…

nss刷题3

[SWPUCTF 2022 新生赛]webdog1__start level1&#xff1a; 打开环境后什么也&#xff0c;没有&#xff0c;查看源码&#xff0c;看到第一关是MD5值&#xff0c;要get传参web&#xff0c;然后web的值的MD5和它原来值相等&#xff0c;0e开头的字符在php中都是0&#xff0c;传入…

如何使用C#与SQL Server数据库进行交互

一.创建数据库 用VS 创建数据库的步骤&#xff1a; 1.打开vs&#xff0c;创建一个新项目&#xff0c;分别在搜素框中选择C#、Windows、桌面&#xff0c;然后选择Windows窗体应用(.NET Framework) 2.打开“视图-服务器资源管理器”&#xff0c;右键单击“数据连接”&#xff0…

用户中心项目教程(二)---umi3的使用出现的错误

目录 1.情况的说明 2.遇到的问题 1&#xff09;第一个问题-关于npx的使用 2&#xff09;第二个问题--unsupport问题 3&#xff09;第三个收获--nodejs安装问题 4&#xff09;第四个收获---nvm下载问题 5&#xff09;第五个问题--尚未解决的问题 3.个人总结 1.情况的说明…

讲一下ZooKeeper的持久化机制?

大家好&#xff0c;我是锋哥。今天分享关于【讲一下ZooKeeper的持久化机制&#xff1f;】面试题。希望对大家有帮助&#xff1b; 讲一下ZooKeeper的持久化机制&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 ZooKeeper 是一个开源的分布式协调服务&…

【青蛙过河——思维】

题目 图解 代码 #include <bits/stdc.h> using namespace std; const int N 1e510; int n, x; int h[N]; bool check(int mid) {for(int i 1; i mid - 1 < n; i)if(h[i mid - 1] - h[i - 1] < 2 * x) return false;return true; } int main() {cin >> …

港湾周评|万科的多重压力

《港湾商业观察》李镭 成立于1984年&#xff0c;经营了41年之久的行业模范生与明星房企&#xff0c;万科&#xff08;000002.SZ&#xff1b;02202.HK&#xff09;似乎从未遇到过这样的惊天骇浪。 一方面债务承压&#xff0c;2025年是否能妥善解决&#xff0c;又或是终将“暴雷…

搜维尔科技:Xsens人形机器人解决方案的优势

Xsens 致力于推动人形机器人技术的发展&#xff0c;塑造机器人与人类环境无缝融合的未来&#xff0c;通过创新精确和协作&#xff0c;协助生产和服务&#xff0c;改善人类生活和产业。 Xsens通过人形跟随捕捉详细的人体运动数据&#xff0c;使机器人能够学习类人的动作&#x…

LLM - 大模型 ScallingLaws 的 C=6ND 公式推导 教程(1)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145185794 Scaling Laws (缩放法则) 是大模型领域中&#xff0c;用于描述 模型性能(Loss) 与 模型规模N、数据量D、计算资源C 之间关系的经验规律…

数组常见解决方案

数组常见解决方案 1.快慢指针(双指针) 慢指针记录当前位置 快指针寻找下一个符合条件的数 当符合条件时,此数将slow位置的数覆盖,slow指针指向下一个位置. 最后slow的位置就是符合条件的数组的长度. 80. 删除有序数组中的重复项 II - 力扣&#xff08;LeetCode&#xff09; …

智能学习平台系统设计与实现(代码+数据库+LW)

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装智能学习平台系统软件来发挥其高效地信息处理的作用&#…

前端项目搭建和基础配置

这个模块主要是介绍从零开始搭建项目的一些操作&#xff0c;包含一些前端常用的配置&#xff0c;这里只是一部分&#xff0c;会在后续的文章中逐步进行补充和完善 一、创建项目 在项目路径下使用以下命令生成前后端项目 npm create vite输入项目名称&#xff0c;框架选择Vue…

RC2在线加密工具

RC2是由著名密码学家Ron Rivest设计的一种传统对称分组加密算法&#xff0c;它可作为DES算法的建议替代算法。RC2是一种分组加密算法&#xff0c;RC2的密钥长度可变&#xff0c;可以从8字节到128字节&#xff0c;安全性选择更加灵活。 开发调试上&#xff0c;有时候需要进行对…