TOP云提供高性价比云服务器租用,有中国内地/港澳台、海外等全球各地节点,TOP云国内云服务器只要有域名备案号就能直接用,无须重复备案;港澳台及海外云服务器不用备案,购买之后直接使用,省时省力省心。价格实惠,续费同价,2核2G5M仅需27元每月,8核8G50M仅需66元每月,更多配置套餐请进入下面网址了解:

TOP云总站云服务器:https://topyun.vip/server/buy.html

TOP云C站云服务器:https://c.topyun.vip/cart

在云服务器上部署 Node.js 应用是开发和上线 Web 应用、API 服务或后端程序的常见方式。部署过程包括安装 Node.js 环境、上传应用代码、安装依赖、启动应用,以及配置反向代理(如 Nginx)和进程管理工具(如 PM2)来保证应用的稳定性。


一、部署 Node.js 应用的流程概述

  1. 登录云服务器:通过 SSH 登录到你的云服务器。

  2. 安装 Node.js 环境:在服务器上安装 Node.js 和 npm(或 yarn)。

  3. 上传应用代码:将本地开发的 Node.js 应用代码上传到服务器。

  4. 安装依赖:在服务器上安装项目所需的依赖包。

  5. 启动应用:运行 Node.js 应用。

  6. 配置进程管理工具:使用 PM2 管理 Node.js 应用进程,保证应用崩溃后自动重启。

  7. 配置反向代理(可选):使用 Nginx 作为反向代理,将外部请求转发到 Node.js 应用。

  8. 开放端口并测试:确保云服务器的安全组和防火墙放行了应用端口,并通过浏览器或工具测试访问。


二、详细部署步骤

以下以 Ubuntu 20.04 为例,介绍如何部署一个简单的 Node.js 应用(如 Express 框架开发的应用)。如果你使用的是其他系统(如 CentOS),部分命令可能需要调整。


1. 登录云服务器

使用 SSH 登录到你的云服务器:

ssh 用户名@服务器IP

例如:

ssh root@123.123.123.123

2. 安装 Node.js 环境

在服务器上安装 Node.js 和 npm(Node.js 的包管理工具)。推荐使用 NodeSource 提供的安装脚本安装最新的 LTS 版本(长期支持版本),这样可以避免使用系统自带的过旧版本。

(1)安装 NodeSource 脚本

以安装 Node.js 18.x 为例:

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -

如果你需要安装其他版本,可以将 setup_18.x 替换为其他版本号,如 setup_16.x 或 setup_20.x。

(2)安装 Node.js 和 npm

sudo apt install -y nodejs

(3)验证安装

安装完成后,检查 Node.js 和 npm 的版本:

node -v
npm -v

输出类似:

v18.16.0
9.5.1

如果你需要使用 yarn(Facebook 开发的包管理工具),可以通过以下命令安装:

sudo npm install -g yarn
yarn -v

3. 上传应用代码到服务器

将本地开发的 Node.js 应用代码上传到服务器。你可以使用以下任意一种方式:

方法一:使用 scp 命令(适合小项目)

从本地机器上传整个项目文件夹到服务器:

scp -r /本地项目路径 用户名@服务器IP:/目标路径

例如:

scp -r ~/my-node-app root@123.123.123.123:/var/www/

这会将本地的 my-node-app 文件夹上传到服务器的 /var/www/ 目录下。

方法二:使用 Git(适合团队协作或版本控制)

如果你的项目托管在 GitHub、GitLab 等平台,可以直接在服务器上克隆代码:

cd /var/www/
git clone https://github.com/你的用户名/你的项目仓库.git

进入项目目录:

cd 你的项目仓库

4. 安装依赖

进入项目目录,安装项目所需的依赖包:

npm install

如果你的项目使用 yarn,可以运行:

yarn install

确保你的项目根目录下有 package.json 文件,因为依赖包信息存储在该文件中。


5. 启动应用

在项目目录下运行应用:

方法一:直接运行(不推荐用于生产环境)

node app.js

如果你的入口文件不是 app.js,而是其他文件(如 index.js 或 server.js),请替换为实际的入口文件。

这种方式启动的应用会在终端关闭后自动退出,因此不推荐用于生产环境

方法二:使用 PM2 管理进程(推荐)

PM2 是一个流行的 Node.js 进程管理工具,可以用来启动、停止、重启应用,并在应用崩溃时自动重启。

(1)全局安装 PM2
sudo npm install -g pm2
(2)使用 PM2 启动应用
pm2 start app.js

如果你的入口文件不是 app.js,请替换为实际的入口文件,如:

pm2 start index.js
(3)查看运行状态
pm2 list

输出会显示当前运行的应用及其状态。

(4)设置开机自启

为了让应用在服务器重启后自动启动,可以保存当前的 PM2 进程列表并设置开机自启:

pm2 save
pm2 startup

按照提示执行生成的命令(通常是类似 sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u 用户名 --hp /home/用户名 的命令)。


6. 配置反向代理(推荐使用 Nginx)

直接通过 Node.js 应用监听端口访问(如 http://服务器IP:3000)可能会带来一些问题,比如:

  • 需要手动指定端口号。

  • 缺乏 HTTPS 支持。

  • 防火墙可能需要开放多个端口。

使用 Nginx 作为反向代理,可以将外部请求转发到 Node.js 应用,同时提供 HTTPS、负载均衡等功能。

(1)安装 Nginx

如果尚未安装 Nginx,可以通过以下命令安装:

sudo apt update sudo apt install nginx -y

启动并设置开机自启:

sudo systemctl start nginx sudo systemctl enable nginx

(2)配置 Nginx 反向代理

编辑 Nginx 的默认配置文件(或创建一个新的配置文件):

sudo vi /etc/nginx/sites-available/default

修改 server 块,添加反向代理配置。假设你的 Node.js 应用运行在 3000 端口:

server { listen 80;
    server_name 你的服务器IP或域名;

    location / {
        proxy_pass http://127.0.0.1:3000; # 将请求转发到本地的 3000 端口 proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

如果你使用域名,将 server_name 设置为你的域名(如 example.com),并确保域名已解析到服务器 IP。

(3)检查 Nginx 配置并重启

sudo nginx -t sudo systemctl reload nginx

7. 开放端口并测试

(1)开放防火墙端口

如果你的服务器启用了防火墙(如 ufw),需要开放 Node.js 应用的端口(如 3000)和 Nginx 的端口(如 80):

sudo ufw allow 3000/tcp sudo ufw allow 80/tcp sudo ufw reload

如果你使用的是云平台(如阿里云、腾讯云等),还需要在云平台的安全组中放行这些端口。

(2)测试访问

  • 如果你配置了 Nginx 反向代理,可以通过浏览器访问 http://你的服务器IP 或 http://你的域名。

  • 如果直接访问 Node.js 应用,可以通过浏览器访问 http://你的服务器IP:3000。


三、总结

步骤操作
1. 登录服务器使用 SSH 登录到云服务器
2. 安装 Node.js使用 NodeSource 安装最新的 LTS 版本
3. 上传代码使用 scp 或 Git 将代码上传到服务器
4. 安装依赖运行 npm install 或 yarn install
5. 启动应用使用 PM2 管理进程,保证稳定性
6. 配置反向代理使用 Nginx 将外部请求转发到 Node.js 应用
7. 开放端口确保防火墙和安全组放行了相关端口
8. 测试访问通过浏览器或工具测试应用是否正常运行

如果你告诉我你使用的:

  • 操作系统(如 Ubuntu 20.04、CentOS 7)

  • Node.js 版本(如 16.x、18.x)

  • 是否使用域名或 HTTPS

我可以提供更具体的指导。


不容错过
Powered By TOPYUN 云产品资讯