如何将本地 Node.js 服务部署到宝塔面板:完整的部署指南
文章简介:
将本地开发的 Node.js 项目部署到线上服务器是开发者常见的工作流程之一。在这篇文章中,我将详细介绍如何将本地的 Node.js 服务通过宝塔面板(BT 面板)上线。宝塔面板是一个强大的服务器管理工具,具有简洁的 UI 和丰富的功能,适合用来管理服务器、部署应用程序和维护网站。
正文:
宝塔面板(BT)提供了方便的 Web 界面,简化了服务器管理和网站运维的流程。将本地 Node.js 服务部署到宝塔服务器,经过以下几个步骤即可轻松实现。
第一步:准备你的本地 Node.js 服务
在将服务部署到服务器之前,首先确保你的本地 Node.js 项目已经准备好,并且可以正常启动。
-
安装项目依赖:
如果还没有安装依赖,首先在项目根目录下执行以下命令:npm install
-
本地启动项目:
使用以下命令确保项目可以在本地成功运行:npm start
或者:
node app.js
确保应用正常启动并没有报错,浏览器中可以正常访问。
-
配置项目端口:
检查你的app.js
或server.js
文件,确保定义了服务监听的端口,比如:const port = process.env.PORT || 3000; app.listen(port, () => {console.log(`Server is running on port ${port}`); });
第二步:准备宝塔面板服务器
如果你已经在宝塔面板上配置了服务器,可以直接跳到下一步。如果还没有,则需要配置一台服务器并安装宝塔面板。
-
购买服务器:
登录阿里云、腾讯云等云服务商平台,选择合适的服务器配置(如 2vCPU、4G 内存),并购买服务器。 -
安装宝塔面板:
登录到你的服务器后,执行以下命令来安装宝塔面板: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
执行安装脚本后,系统会提示安装成功,并给出宝塔面板的登录地址、账号和密码。
-
登录宝塔面板:
打开浏览器,访问安装成功时提示的面板地址,使用提供的账号密码登录宝塔。
第三步:安装 Node.js 运行环境
宝塔面板的强大之处在于它支持一键安装各种常用的运行环境。我们需要安装 Node.js 来运行我们的应用。
-
在宝塔面板中安装 Node.js:
- 打开宝塔面板的 软件商店。
- 在左侧栏中找到 运行环境,然后找到 Node.js。
- 选择你需要的 Node.js 版本,点击安装。
-
检查 Node.js 是否安装成功:
安装完成后,打开 终端 或 SSH 工具(如 PuTTY),在命令行中输入以下命令,检查 Node.js 是否已成功安装:node -v
如果显示 Node.js 的版本号,则安装成功。
第四步:上传你的 Node.js 项目
接下来,你需要将本地的项目文件上传到宝塔面板的服务器。
-
打包你的项目:
在本地项目目录下执行以下命令来打包项目:zip -r my-node-app.zip .
-
上传到服务器:
- 在宝塔面板中,点击左侧的 文件。
- 选择你想要存放项目的目录(通常是
/www
目录下),然后点击右上角的 上传 按钮,将my-node-app.zip
文件上传到服务器。 - 上传完成后,解压该压缩包,确保所有项目文件上传成功。
第五步:安装项目依赖
-
通过 SSH 登录服务器,进入到你的项目目录:
cd /www/my-node-app
-
安装依赖:
执行以下命令,安装项目的依赖库:npm install
这一步会自动读取
package.json
中的依赖并进行安装。
第六步:配置 PM2 管理 Node.js 服务
为了让你的 Node.js 服务能够持续运行,我们使用 PM2 来管理应用进程。PM2 是一个非常流行的 Node.js 进程管理工具,支持应用的自动重启和监控。
-
安装 PM2:
在服务器终端中,执行以下命令安装 PM2:npm install pm2 -g
-
启动你的 Node.js 服务:
使用 PM2 启动 Node.js 应用:pm2 start app.js --name "my-node-app"
app.js
是你应用的入口文件。--name
参数为你的应用命名,方便在多个应用中管理。
-
设置开机自启:
为了确保服务器重启后,Node.js 服务可以自动启动,执行以下命令:pm2 startup pm2 save
第七步:配置 Nginx 反向代理
在宝塔面板中,我们可以通过 Nginx 反向代理将外部请求转发给 Node.js 服务。
-
安装 Nginx:
在 软件商店 中,找到 Nginx,选择安装。 -
配置 Nginx 反向代理:
- 在宝塔面板的左侧,点击 网站,然后点击 添加站点,填写你想绑定的域名和站点信息。
- 添加完成后,点击站点的设置,找到 反向代理 选项。
- 在代理目标填写 Node.js 监听的地址(如
http://127.0.0.1:3000
),并启用反向代理。
-
保存配置并重启 Nginx:
配置完成后,保存并重启 Nginx,然后项目就运行成功了。
第八步:测试和优化
-
测试服务:
打开你绑定的域名或服务器的 IP 地址,检查是否可以正常访问你的 Node.js 服务。 -
监控和调试:
使用 PM2 的日志功能来监控服务的状态和调试可能的问题:pm2 logs my-node-app
-
SSL 配置(可选):
如果需要配置 HTTPS,可以在宝塔面板的 SSL 选项中,使用 Let’s Encrypt 免费申请证书,并绑定到你的站点。
结语:
通过宝塔面板,你可以轻松将本地的 Node.js 服务部署到线上,并通过 PM2 和 Nginx 实现进程管理和反向代理。整个过程简单高效,即便是没有太多服务器管理经验的开发者,也能快速上手。
希望这篇指南能帮助你顺利将本地 Node.js 服务部署到宝塔面板中!
相关文章:

如何将本地 Node.js 服务部署到宝塔面板:完整的部署指南
文章简介: 将本地开发的 Node.js 项目部署到线上服务器是开发者常见的工作流程之一。在这篇文章中,我将详细介绍如何将本地的 Node.js 服务通过宝塔面板(BT 面板)上线。宝塔面板是一个强大的服务器管理工具,具有简洁的…...

SpringBoot项目启动报错:命令行太长解决
文章目录 SpringBoot项目启动报错:命令行太长解决1. 第一种方法1. 第二种方法1-1 旧版本Idea1-2 新版本Idea 3. 重新启动SpringBoot项目即可解决 SpringBoot项目启动报错:命令行太长解决 报错信息: 1. 第一种方法 1. 第二种方法 找到项目…...

使用Docker启动的Redis容器使用的配置文件路径等问题以及Python使用clickhouse_driver操作clickhouse数据库
一、使用Docker启动的Redis容器使用的配置文件路径等问题 1.docker启动的redis使用的配置文件路径是什么 使用docker搭建redis服务,本身redis启动的时候可以指定配置文件的, redis-server /指定配置文件路径/redis.conf。 但手上也没有一个redis配置文件…...

硬盘格式化后能恢复数据吗?4款好用的数据恢复软件,格式化后也能安心
咱们今天来谈谈一个挺烦人的问题——硬盘格式化后能恢复数据吗?别担心,能的!只要你用对方法,就算硬盘被清空了,那些重要文件还是能找回来的。下面,我就给你们介绍几款超给力的数据恢复软件,让你…...
【选择C++游戏开发技术】
在选择C游戏开发技术时,以下几个因素是需要考虑的: 1. 游戏类型:不同类型的游戏可能需要不同的技术。例如,2D游戏通常采用基于精灵的引擎,而3D游戏通常采用基于物理模拟的引擎。根据游戏类型选择适合的技术是很重要的…...

Oracle数据库系统表空间过大,清理SYSTEM、SYSAUX表空间
一.前言 在oracle数据库中,system为系统表空间,存放着一些我们经常用到的系统表和视图,sysaux为辅助表空间,辅助着系统表空间。这两个表空间不宜添加数据文件,会使系统表空间过于臃肿,从而影响数据库的使用…...
LaTeX参考文献工具和宏包bibmap项目简介
LaTeX参考文献工具和宏包bibmap项目简介 LaTeX 中的参考文献生成方式主要有三种:第一种是手动写thebibliography环境的,第二种事基于bibtex程序的,第三种则是基于biblatex宏包和biber程序的。本文介绍的bibmap项目则提供了第四种方法。目前b…...

微软的 Drasi:一种轻量级的事件驱动编程方法
微软的开源数据变化处理平台有望提供一种全新的方式来构建和管理可产生持续事件流的云应用程序。 Microsoft Azure 孵化团队是微软超大规模云中比较有趣的组成部分之一。它介于传统软件开发团队和研究组织之间,致力于构建大规模分布式系统问题的解决方案。 这些解决…...
vue3 笔记-插槽
结构类似的模块,我们可以考虑用插槽,以便后续复用: 代码: 1.插槽 <script setup> defineProps({title: {required: true,type: String},number: {required: true,type: Number} }) </script><template><d…...
C# 字符串常用方法
文章目录 Length:获取字符串中字符的个数(不包括末尾的空字符)ToLower() 和 ToUpper():将字符串转换为小写或大写形式Substring(int startIndex, int length):从指定索引开始截取指定长度的子字符串Remove(int startIn…...

字节跳动青训营——入营考核解答(持续更新中~~~)
考核内容: 在指定的题库中自主选择不少于 15 道算法题并完成解题,其中题目难度分配如下: 简单题不少于 10 道中等题不少于 4 道困难题不少于 1 道 解答代码 8.进制求和转换(难) 代码实现: import jav…...

JavaWeb合集15-Apache POI
十五、Apache POI Apache POI是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用POI在Java 序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI都是用于操作Excel文件。 使用场景:银行网银系统导出交…...

Threejs 实现3D 地图(01)创建基本场景
"d3": "^7.9.0", "three": "^0.169.0", "vue": "^3.5.10" <script setup> import { onMounted,ref } from vue import * as THREE from three import * as d3 from "d3"; //莫开托坐标 矫正地图…...
snmpdelta使用说明
1.snmpdelta介绍 snmpdelta命令是用来获取下一个节点的OID的值。 2.snmpdelta安装 1.snmpdelta安装 命令: yum -y install net-snmp net-snmp-utils [root@logstash ~]# yum -y install net-snmp net-snmp-utils Loaded plugins: fastestmirror Loading mirror speeds f…...

Hadoop集群安装
集群规划 node01node02node03角色主节点从节点从节点NameNode√DataNode√√√ResourceManager√NodeManager√√√SecondaryNameNode√Historyserver√ 上传安装包到node01 解压到指定目录 tar -zxvf /bigdata/soft/hadoop-3.3.3.tar.gz -C /bigdata/server/ 创建软链接 cd…...
VuePress集成到Vue项目的方法
VuePress 可以作为一个独立的静态站点生成器来使用,也可以集成到现有的 Vue 项目中。以下是将 VuePress 集成到 Vue 项目的几种方法: 1. 作为本地依赖集成 如果你想在现有的 Vue 项目中使用 VuePress 来管理文档,你可以将 VuePress 安装为本…...
【ROS】ROS局域网下多机通讯方法
最近工作中需要用到多机通讯,这里稍微总结一下使用方法。 目录 一、网络配置 二、修改两个设备的hosts文件 三、修改两个ros设备的.bashrc 四、launch文件中给节点设定运行的设备 一、网络配置 首先确保两个ros设备连接到同一局域网下,然后查询两个…...
linux 系统怎么使用
Linux系统的使用涉及多个方面,包括文件管理、目录操作、用户管理、进程管理、网络配置等。以下是对Linux系统基础使用的详细介绍: 一、文件管理 查看文件和目录 ls:列出当前目录的内容。ls -l:以长格式列出当前目录的内容&#x…...
Java线程池知识点梳理
Java线程池知识点梳理 什么是线程池? 线程在系统中创建的成本是相对比较高的,所以使用”池化“的思想,设计线程池,有大量任务需要执行时,可以直接从线程池中使用已经创建好的线程直接去执行。减少线程的创建和销毁带…...

SFT、RLHF、DPO、IFT —— LLM 微调的进化之路_如何搭建自己的dpo
TL;DR • SFT、RLHF 和 DPO 都是先估计 LLMs 本身的偏好,再与人类的偏好进行对齐; • SFT 只通过 LLMs 生成的下一个单词进行估计,而 RLHF 和 DPO 通过 LLMs 生成的完整句子进行估计,显然后者的估计会更准确; • 虽然…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...

基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...