从零开始:在阿里云 Ubuntu 服务器部署 Node+Express 接口(基于公司 GitLab)

作为后端新手,最近我完成了一个简单的 Node+Express 接口从开发到部署的全过程。从本地代码编写到阿里云服务器发布,踩了不少坑也积累了一些经验,整理成这篇教程,希望能帮到和我一样刚入门的同学。

前提

先去阿里云购买一台轻量应用服务器或者云ECS服务器,我购买的是轻量应用服务器,配置如下: 系统镜像我选的是Ubuntu(友帮拓),因为这个镜像比较纯净,可以自己安装各个依赖的版本。

一、本地开发:创建简单的 Express 接口

首先我们需要在本地开发一个基础的 Express 服务,返回固定测试数据。

1. 初始化项目

新建项目文件夹并初始化(我这里命名为 node-api-test):

bash 复制代码
# 创建文件夹 
mkdir node-api-test && cd node-api-test 
# 初始化 npm 项目 
npm init -y 
# 安装 
Express npm install express

2. 编写服务代码

在文件夹中创建 app.js 文件,代码如下:

js 复制代码
const express = require('express');
const app = express();
const port = 3000;  // 服务端口

// 允许跨域(方便前端调用)
app.use((req, res, next) => {
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
  next();
});

// 测试接口:返回固定数据
app.get('/api/test', (req, res) => {
  const data = {
    status: 200,
    message: '成功返回测试数据',
    data: {
      name: '测试用户',
      age: 25,
      hobbies: ['编程', '服务器部署']
    }
  };
  res.json(data);
});

// 启动服务
app.listen(port, () => {
  console.log(`服务已启动,访问:http://localhost:${port}/api/test`);
});

3. 本地测试

运行服务并验证是否正常工作:

js 复制代码
node app.js

打开浏览器访问 http://localhost:3000/api/test,如果能看到 JSON 格式的返回数据,说明本地服务没问题。

二、代码托管:提交到公司 GitLab

由于使用公司内部 GitLab 托管代码,需要将本地代码推送到远程仓库(如果还没创建仓库,先在 GitLab 上新建一个)。

1. 本地 Git 配置

bash 复制代码
# 初始化 Git 仓库(如果未初始化)
git init 
# 添加文件到暂存区 
git add .
# 提交到本地仓库 
git commit -m "初始化:简单的 Express 测试接口"

2. 关联 GitLab 仓库

复制公司 GitLab 仓库的 HTTPS 地址(格式类似 https://gitlab公司域名/用户名/node-api-test.git),然后关联:

bash 复制代码
# 关联远程仓库 
git remote add origin 你的GitLab仓库HTTPS地址
# 推送到远程仓库(首次推送需要输入账号密码)
git push -u origin main 
# 若默认分支是master则用git push -u origin master

三、服务器部署:阿里云 Ubuntu 环境配置

接下来开始配置阿里云轻量应用服务器,我使用的是 Ubuntu 系统,以下是详细步骤。

1. 连接服务器

通过 SSH 连接到你的阿里云服务器(替换为你的服务器公网 IP):

登录阿里云控制台,在这里这是服务器密码

登录服务器

bash 复制代码
ssh 用户名@服务器公网IP # 例如:ssh root@123.45.67.89

首次登录需要输入密码,登录成功后进入服务器终端。

2. 修复可能的包管理问题

如果执行 apt 命令时出现 dpkg was interrupted 错误,先修复:

bash 复制代码
# 修复 dpkg 配置 
sudo dpkg --configure -a 
# 清理缓存并更新系统 
sudo apt clean
sudo apt autoremove -y 
sudo apt update -y 
sudo apt upgrade -y

3. 服务器上安装必要工具

(1)安装 Git
bash 复制代码
sudo apt install git -y 
# 验证安装 
git --version
# 输出 git version x.x.x 即成功
(2)配置 Git 凭证缓存

为了避免每次拉取代码都输入账号密码,配置缓存:

bash 复制代码
# 配置全局用户名和邮箱(与 GitLab 一致)
git config --global user.name "你的Git用户名"
git config --global user.email "你的公司邮箱"
# 缓存凭证 24 小时(86400秒) 
git config --global credential.helper 'cache --timeout=86400'
(3)安装 Node.js(使用 NVM)

NVM(Node Version Manager)是管理 Node 版本的工具,推荐使用:

bash 复制代码
# 安装 NVM(如果连接 raw.githubusercontent.com 超时,见下方解决方法)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

# 若上面命令超时,改用国内镜像
curl -o- https://cdn.jsdelivr.net/gh/nvm-sh/nvm/v0.39.3/install.sh | bash

# 刷新环境变量
source ~/.bashrc

# 安装 Node.js 16.x(稳定版本)
nvm install 16
nvm use 16

# 验证安装
node -v  # 输出 v16.x.x
npm -v   # 输出 8.x.x

四、部署服务:拉取代码并启动

1. 拉取 GitLab 代码

bash 复制代码
# 创建项目目录
mkdir -p /root/projects && cd /root/projects

# 克隆仓库(使用 HTTPS 地址)
git clone https://gitlab公司域名/用户名/node-api-test.git

# 进入项目目录
cd node-api-test

首次克隆会提示输入 GitLab 用户名和密码(或个人访问令牌),输入后等待代码拉取完成。

2. 安装项目依赖

bash 复制代码
# 安装 express 依赖
npm install

3. 用 PM2 启动服务

PM2 是 Node 应用的进程管理工具,能保证服务在后台持续运行:要不然关闭窗口之后,就无法访问了

bash 复制代码
# 全局安装 PM2
npm install pm2 -g

# 启动服务并命名(方便管理)
pm2 start app.js --name "node-api-test"

# 查看服务状态
pm2 list  # 若 Status 为 online 则表示启动成功

PM2 常用命令:

  • 重启服务:pm2 restart node-api-test
  • 停止服务:pm2 stop node-api-test
  • 查看日志:pm2 logs node-api-test

五、开放端口:配置防火墙,(下面2步都要)

服务启动后,需要开放 3000 端口才能外部访问。因为node代码写的是3000

1. 服务器内部防火墙(UFW)

bash 复制代码
# 开放 3000 端口
sudo ufw allow 3000/tcp

# 启用防火墙(首次启用需确认)
sudo ufw enable

# 验证端口是否开放
sudo ufw status  # 看到 3000/tcp 允许即为成功

2. 阿里云控制台配置

登录阿里云轻量应用服务器控制台:

  1. 找到你的服务器,进入「防火墙」配置
  2. 点击「添加规则」,端口范围填 3000,授权对象填 0.0.0.0/0
  3. 保存规则

如图:

六、测试接口:验证部署结果

所有配置完成后,通过以下方式测试接口:

  1. 浏览器访问 直接在地址栏输入:http://你的服务器公网IP:3000/api/test

结果如图:

  1. Postman 测试

选择 GET 方法,输入上述 URL,发送请求查看返回结果。

  1. 前端代码调用
js 复制代码
fetch('http://你的服务器公网IP:3000/api/test') .then(res => res.json()) .then(data => console.log(data)) .catch(err => console.error('请求失败', err));

如果看到和本地测试相同的 JSON 数据,说明部署成功!

七、后续更新代码流程

当本地代码更新后,只需以下步骤即可同步到服务器:

  1. 本地提交并推送
bash 复制代码
git add .
git commit -m "更新说明"
git push
  1. 服务器拉取并重启
bash 复制代码
cd /root/projects/node-api-test  # 进入项目目录
git pull  # 拉取最新代码
pm2 restart node-api-test  # 重启服务

总结

整个过程从本地开发到服务器部署,核心步骤包括:

  1. 开发基础接口并本地验证
  2. 代码托管到 GitLab
  3. 服务器环境配置(Node、Git、PM2)
  4. 拉取代码并启动服务
  5. 开放端口并测试访问

作为后端新手,第一次部署时遇到了不少网络和权限问题,但一步步排查后终于成功。如果大家在操作中遇到类似问题,欢迎留言交流~

相关推荐
前端付豪4 小时前
万事从 todolist 开始
前端·vue.js·前端框架
oak隔壁找我4 小时前
RabbitMQ 实现延迟通知的完整方案
java·后端
ezl1fe4 小时前
第一篇:把任意 HTTP API 一键变成 Agent 工具
人工智能·后端·算法
金銀銅鐵4 小时前
[Java] JDK 21 新变化之 Sequenced Collections
后端
A_Bin4 小时前
前端工程化之【包管理器】
前端
小肚肚肚肚肚哦4 小时前
CSS 伪类函数 :where 简介
前端·css
Nick56834 小时前
Swift -- 第三方登录之微信登录 源码分享
前端
特拉熊4 小时前
23种设计模式之原型模式
后端·架构
trow4 小时前
ConcurrentHashMap线程安全实现详解
java·后端