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

news/2024/10/20 7:32:06/

文章简介:

将本地开发的 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.ppmy.cn/news/1540463.html

相关文章

了解CSS Paint API

CSS Paint API是CSS的一个新功能,它允许开发人员通过JavaScript动态地绘制图像和图形,并将这些图像和图形作为CSS背景、边框等样式的一部分应用到网页中。以下是对CSS Paint API的详细介绍: 一、主要功能 动态绘制图像:CSS Pain…

大模型生图安全疫苗注入——进阶解决方案与系统优化(DataWhale组队学习)

引言 大家好,我是GISer Liu😁,上篇博客中,我们基于DataWhale 2024年10月大模型生图安全疫苗注入赛道的任务,介绍了攻击与防御的基本策略,如通过上下文稀释法、隐喻替换等绕过检测机制,并提出了多…

软件设计模式------概述

一:简述 目的:为了可重用代码,代码更容易被他人理解,提高代码的可靠性。 定义:是一套被反复使用,多数人知晓,经过分类编目的,代码设计经验的总结。 (通俗来说&#xf…

Linux 命令 —— grep、tail、head、cat、more、less(查看日志常用命令)

文章目录 查看日志常用命令grep 命令tail 命令head 命令cat 命令more 命令less 命令 查看日志常用命令 grep tail、head、cat、more、less grep 命令 grep [options] PATTERN filename:查找日志文件中的 PATTERN 关键字,用于过滤/搜索的特定字符。PAT…

告别ELK,APO提供基于ClickHouse开箱即用的高效日志方案——APO 0.6.0发布

ELK一直是日志领域的主流产品,但是ElasticSearch的成本很高,查询效果随着数据量的增加越来越慢。业界已经有很多公司,比如滴滴、B站、Uber、Cloudflare都已经使用ClickHose作为ElasticSearch的替代品,都取得了不错的效果&#xff…

初学结构化查询语言的操作

SQL: Structured Query Language 结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数 据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 一,SQL的分类 1&#xff…

记录:网鼎杯2024赛前热身CRYPT02密码学

下载附件后发现附件为图片,图片打开正常,判断密文藏在图片中 使用 editor 软件打开图片,在最底下发现密文 判断这段密文为 base64 加密,尝试本地编写脚本解密 得到flag

mysql connect -- C api编译链接问题,接口介绍(初始化和销毁,连接,执行sql语句,获取结果集的元数据和数据,设置编码格式)

目录 mysql connect 介绍 开发环境 编译链接问题 编译 链接 接口介绍 初始化和销毁 mysql_init() 句柄 mysql_close() 链接数据库 mysql_real_connect() 参数 返回值 show processlist 给mysql下达命令 mysql_query() 参数 返回值 查询结果的获取 引入 …