前期准备
所有工具、资源必须提前准备到位,避免中途停摆。
1. 本地工具安装
- Node.js(含npm):官网下载地址https://nodejs.org/zh-cn/,选LTS长期支持版,双击安装包默认下一步即可,安装后打开终端输入`node -v`和`npm -v`,出现版本号说明成功。
- FinalShell(或Xshell+Xftp):推荐FinalShell免费版,官网下载地址http://www.hostbuf.com/t/988.html,选对应系统版本,一键安装用于远程连接服务器。
- 阿里云ECS实例:直接到阿里云控制台https://ecs.console.aliyun.com/购买,新手选`突发性能型t6`(1核2G,带宽按流量计费设置3Mbps峰值),操作系统选`Ubuntu 22.04 LTS 64位`,设置好root密码后开机,在控制台获取实例公网IP。
2. 本地API代码准备
在本地电脑新建一个空文件夹(比如命名为`simple-api`),在文件夹内打开终端。
- 初始化npm项目(一路回车默认即可):
```bash
npm init -y
```
- 安装Express轻量级框架:
```bash
npm install express --save
```
- 新建`index.js`文件,粘贴以下完整可直接运行的代码:
```javascript
const express = require('express');
const app = express();
const port = 3000; // 监听端口,后面防火墙和反向代理要对应
// 解决跨域问题(可选但实用,本地前端测试时不会报错)
const cors = require('cors');
app.use(cors());
// 解析JSON请求体
app.use(express.json());
// 测试GET接口
app.get('/test', (req, res) => {
res.json({
code: 200,
message: '恭喜,API部署成功!',
data: {
timestamp: Date.now(),
userAgent: req.get('User-Agent')
}
});
});
// 启动服务器
app.listen(port, () => {
console.log(`本地测试API已启动:http://localhost:${port}/test`);
});
```
- 顺便安装跨域依赖:
```bash
npm install cors --save
```
- 本地测试:终端输入`node index.js`,浏览器访问`http://localhost:3000/test`,出现JSON响应说明代码没问题。
部署到服务器
按顺序操作,每一步确认无误后再继续。
1. 远程连接阿里云ECS
- 打开FinalShell,点击左上角「文件夹」图标,选「新建SSH连接」。
- 填写配置:
- 名称:随便填(比如「我的API服务器」)
- 主机:阿里云控制台的公网IP
- 端口:默认22
- 认证方法:选密码
- 用户名:root
- 密码:你购买实例时设置的root密码
- 点击「确定」「连接」,弹出安全警告直接「接受并保存」,进入Linux终端界面。
2. 服务器基础环境配置
- 更新系统源:
```bash
apt update && apt upgrade -y
```
- 安装Node.js和npm:
```bash
curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
apt install -y nodejs
```
安装后同样输入`node -v`和`npm -v`检查版本。
- 安装PM2(进程守护工具,防止API崩溃重启):
```bash
npm install pm2 -g
```
- 安装Nginx(反向代理工具,用于将80/443端口映射到3000端口):
```bash
apt install -y nginx
```
安装后浏览器直接访问服务器公网IP,出现「Welcome to nginx!」说明成功。
3. 上传本地API代码到服务器

FinalShell自带文件传输功能,比命令行更简单。
- FinalShell左侧导航栏点击「文件」,进入服务器`/root`目录(默认登录目录)。
- 在服务器`/root`目录下新建文件夹,命名为`simple-api`。
- 将本地`simple-api`文件夹内的所有文件和文件夹(注意不是文件夹本身)拖拽到服务器`/root/simple-api`目录下。
4. 启动并守护API进程
- 在FinalShell终端进入API目录:
```bash
cd /root/simple-api
```
- 重新安装依赖(本地和服务器的Node.js版本可能有差异,必须重装):
```bash
npm install
```
- 用PM2启动API:
```bash
pm2 start index.js --name my-simple-api
```
`--name`是给进程起的别名,方便后续管理。
- 检查PM2进程状态:
```bash
pm2 status
```
看到`status`列显示`online`说明API已在服务器后台运行。
- 设置PM2开机自启:
```bash
pm2 startup
pm2 save
```
复制`pm2 startup`输出的最后一条命令粘贴并执行,确保服务器重启后API自动启动。
5. 配置Nginx反向代理
浏览器访问默认HTTP端口是80,而我们的API监听3000,需要用Nginx转发。
- 备份默认Nginx配置文件:
```bash
mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
```
- 新建并编辑新的配置文件:
```bash
nano /etc/nginx/sites-available/default
```
- 粘贴以下完整配置,注意把`your_public_ip`替换成你的阿里云ECS公网IP:
```nginx
server {
listen 80;
listen [::]:80;
server_name your_public_ip;
location / {
proxy_pass http://127.0.0.1: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;
}
}
```
- 按`Ctrl+O`保存,按`Enter`确认文件名,按`Ctrl+X`退出nano编辑器。
- 检查Nginx配置是否有误:
```bash
nginx -t
```
看到`syntax is ok`和`test is successful`说明配置正确。
- 重启Nginx使配置生效:
```bash
systemctl restart nginx
```
6. 开放阿里云ECS安全组端口
这是新手最容易卡壳的一步!Linux防火墙和云服务器安全组是两道关,都要开。
- FinalShell终端关闭Linux防火墙(或者单独开放80/3000端口,新手直接关更稳妥):
```bash
ufw disable
```
- 打开阿里云控制台,进入你的ECS实例详情页,点击左侧「安全组」,找到默认安全组,点击「配置规则」。
- 点击「手动添加」,填写配置:
- 授权策略:允许
- 优先级:1
- 协议类型:自定义TCP
- 端口范围:80/80
- 授权对象:0.0.0.0/0
- 描述:随便填(比如「开放HTTP端口用于API」)
- 点击「保存」,等待10-30秒生效。
最终测试
打开任何浏览器,输入`http://你的公网IP/test`,出现和本地测试一样的JSON响应,说明服务器API部署100%成功!
常见问题排查
- 浏览器访问超时:检查PM2状态(`pm2 logs my-simple-api`看日志)、Nginx配置是否正确、安全组和Linux防火墙是否开放80端口。
- 502 Bad Gateway:检查API进程是否`online`(`pm2 status`),如果不是,重启进程(`pm2 restart my-simple-api`)。
- 修改代码后不生效:修改服务器代码后,用`pm2 restart my-simple-api`重启API进程即可。