如何将本地 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 生成的完整句子进行估计,显然后者的估计会更准确; • 虽然…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...