把 Next.js 部署到阿里云
01
阿里云服务器,如何从 0 部署 Next.js 项目呢?
我以pay4saas.cn来举例,一起看看。
这套流程适用于任何 Linux VPS(Hetzner、Vultr、DigitalOcean 等),这里以阿里云为例。
有一点要注意:部署之前,先 ICP 备案!否则上线了,还是会被要求下线。海外服务器不需要备案,可跳过这步。
02
第一阶段:服务器准备
1. 连接服务器
两种方式都可以:
-
方式1:推荐新手用,省事,直接在阿里云控制台,远程连接。

立即登录。

免密连接,登录。

-
方式2:本地终端 ssh root@your.server.ip
2. 安装基础环境
# 更新系统
apt update && apt upgrade -y
# 安装 Node.js 20.x
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt-get install -y nodejs
# 验证安装
node -v
npm -v版本如下。

# 安装 PM2 进程管理器
npm install -g pm2
# 安装 Git
apt install git -y03
第二阶段:部署项目
3. 克隆项目
注意:GitHub 不再支持密码登录,直接 clone 会报 Password authentication not supported。需要先在 GitHub Settings → Developer settings → Personal access tokens 创建一个 Token,用 Token 替代密码,步骤如下。




cd
/home
git
clone
-b main https://github.com/your-username/project.git
cd
项目名4. 配置环境变量
nano .env.local把你的环境变量粘贴进去(Supabase、支付宝等配置),保存方式不是 ctrl+ S ,而是这么做。
Ctrl + X退出- 按
Y确认保存 - 按
Enter确认文件名
以后,如何修改环境变量呢?
# 先看看现有的
cat /home/pay4SaaS/.env.local
# 统一操作流程
cd
/home/pay4SaaS
echo ""
> .env.local
# 清空
nano .env.local
# 粘贴新配置然后再往下步走。
5. 安装依赖和构建
在这个目录下/home/pay4SaaS,执行。
npm install
# 安装依赖
npm run build
# 构建生产版本6. 使用 PM2 启动应用
先创建 PM2 配置文件。
nano ecosystem.config.js粘贴以下内容:
module
.exports = {
apps: [{
name:
'pay4saas',
script:
'node_modules/next/dist/bin/next',
args:
'start -H 0.0.0.0',
cwd:
'/home/pay4SaaS',
instances:
1,
exec_mode:
'fork',
env: {
NODE_ENV:
'production',
PORT:
3000
}
}]
}然后启动:
pm2 start ecosystem.config.js
pm2 save
# 保存配置
pm2 startup
# 设置开机自启两个常见坑。
- 不要直接用
pm2 start npm -- start,工作目录容易出问题 - 一定要加
-H 0.0.0.0,不然只监听 localhost,外网访问不了。
04
第三阶段:网络配置
7. 配置阿里云安全组
安全组是阿里云、AWS、腾讯云等云厂商特有的。如果你用的是纯 VPS(如 Hetzner),没有安全组,只需配下一步的 UFW 防火墙即可。
位置:云服务器 ECS → 网 安全组 → 管理规则 → 入方向
默认这个应该都配了,来看一下,确认一下,没配的配一下。
需要开放的端口:
| 端口 | 用途 |
|---|---|
| 22 | SSH 连接 |
| 80 | HTTP 访问 |
| 443 | HTTPS 访问 |
| 3000 | Next.js 应用(临时测试用) |
每条规则这样配:授权策略选"允许",优先级 100,协议类型选"自定义 TCP",授权对象填 0.0.0.0/0。
配完记得点提交保存。
8. 配置 UFW 防火墙
阿里云安全组配完还不够,服务器自己也有一层 UFW 防火墙,也要配:
# 查看当前状态
sudo ufw status
# 开放必要端口
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3000/tcp
# 重载生效
sudo ufw reload注意,这是个很容易漏掉的点——只配阿里云安全组,忘了 UFW,会导致 502 错误。两层都要配。
05
第四阶段:域名和 HTTPS
9. 配置域名解析
在你的域名管理平台(比如,我的是阿里云域名控制台)添加两条 A 记录。
| 主机记录 | 记录值 |
|---|---|
| @ | 你的服务器公网 IP |
| www | 你的服务器公网 IP |
添完等 5-30 分钟 DNS 生效,用下面的命令在 cmd 终端验证。
ping pay4saas.cn
nslookup pay4saas.cn 8.8.8.810. 安装配置 Nginx
# 安装
sudo apt install nginx -y
# 创建网站配置
sudo nano /etc/nginx/sites-available/pay4saas粘贴以下配置:
server {
listen 80;
server_name pay4saas.cn www.pay4saas.cn;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}然后启用配置:
sudo ln -s /etc/nginx/sites-available/pay4saas /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx11. 配置免费 HTTPS 证书
# 安装 Certbot
sudo apt install certbot python3-certbot-nginx -y
# 自动获取并配置 SSL 证书
sudo certbot --nginx -d pay4saas.cn -d www.pay4saas.cn按提示输入邮箱、同意条款就好。

Certbot 会自动帮你改好 Nginx 配置。
注意,这里有 2 个坑,DNS 还没生效就跑 certbot 会验证失败。
80 和 443 端口没开也会失败。先确认域名能 ping 通再来做这步。
06
下次改了代码要上线,怎么做?
日常更新部署,做这些
每次改了代码,ssh 进服务器执行这几条就行,1-2 分钟搞定。
ssh root@your.server.ip
cd
/home/pay4SaaS
# 一键更新
pm2 stop pay4saas && rm -rf .next && git pull origin main && npm install && npm run build && pm2 start pay4saas
# 看日志确认是否正常
pm2 logs pay4saas
# 如果线上有严重问题,停止应用(网站会返回 502)
pm2 stop pay4saas