准备工作
部署网站前,你需要准备一台云服务器,一个域名,一份网站源代码。本文中,我将以一台阿里云 ECS 云服务器为例,部署 Next.js
应用。
连接服务器
想要部署应用,首先要在本地连接服务器,以便后续进行一系列的配置。第一步,打开 Terminal
终端或是 Iterm2
等其他终端工具,通过 ssh
命令远程连接服务器:
# root 为默认用户名,115.29.203.203 替换为你的服务器公网IP
ssh root@115.29.203.203
输入购买服务器时设置的登录密码,见到类似以下的欢迎信息,代表已经成功连接上了服务器:
......
Welcome to Alibaba Cloud Elastic Compute Service !
Last login: Fri May 30 15:51:53 2025 from 114.242.59.35
......
配置 SSH 快捷访问
为避免以后每次连接服务器都手动输入服务器 ip
,可以添加 ssh
配置文件简化操作。先执行 exit
退出服务器连接:
exit
随后在本机 ~/.ssh/config
文件中添加配置:
host myserver
HostName 115.29.203.203
User root
之后每次输入 ssh myserver
即可连接服务器。
服务器环境配置
安装 Node.js
首先更新一下包管理器以确保安装的是最新版本的软件包:
sudo apt update # 对于基于 Debian 的系统,如 Ubuntu
我选择通过 nvm
(Node Version Manager)安装 Node.js,便于后续版本管理:
使用 Git 克隆 nvm 源码到服务器
git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`
配置 NVM 环境变量
echo ". ~/.nvm/nvm.sh" >> /etc/profile source /etc/profile
设置 npm 镜像源为阿里云镜像
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node
查看可用的 Node.js 版本
nvm list-remote
安装 LTS 版本
nvm install v22.15.0
验证安装
node -v
如果成功打印出 Node.js 版本号,则安装成功。
安装 PM2
PM2 是一个流行的 Node.js 应用进程管理器,可以帮助我们在生产环境中部署、监控和管理应用。
npm install pm2@latest -g
部署应用
上传应用代码
将代码上传至服务器有多种方式,为求简单,这里我们采用在服务器上使用 Git 拉取代码的方式:
# 创建网站目录
mkdir -p /var/www
cd /var/www/
# 克隆项目代码,username 替换为你的 GitHub 用户名,repo 替换为你的仓库名
git clone https://github.com/username/repo.git
使用 https
方式克隆 GitHub 仓库时,可能需要使用 Personal Access Token
作为密码。前往 GitHub 设置页 > Developer settings > Personal access tokens > Tokens(classic) > Generate new token(classic) 即可创建。
构建与运行
拉取完代码后,进入项目目录安装依赖并构建应用:
cd /var/www/repo
pnpm install
pnpm build
到这一步就可以正式启动应用了。由于我的网站采用 Next.js
框架,并且在 package.json
中配置了
{
"scripts": {
"serve": "next start"
}
}
所以只需要执行:
pnpm serve
就可以运行项目了。现在采用 PM2
启动应用:
# pnpm 可以换成 npm 或 yarn
pm2 start pnpm --name "mywebsite" -- serve
这一行命令会自动将 pnpm serve
作为启动命令,并将应用命名为 mywebsite
。你可以将 name
替换为你的项目名称,将 serve
替换为你的启动命令。
检查端口监听状态确定项目是否成功运行:
ss -tuln
现在就可以通过服务器 IP 和端口访问应用了:
# 替换为你的服务器 IP 和运行端口
http://115.29.203.203:3000
如果网站无法正常访问,可能需要配置安全组规则,允许对 3000
端口的访问。具体可以参考这篇文章进行问题排查。
域名配置与 Nginx 反向代理
现在就可以开始给网站配置域名了,避免每次通过 IP 访问。
域名解析
前往域名控制台,给域名添加一条 A
类型的解析记录,将值设为服务器的公网 IP 地址,如图所示:

设置完成后,就可以通过域名访问网站了:
# 替换为你的域名和端口
http://jmxr.fun:3000
不过这样访问网站时,URL 中会包含端口号,不太美观,输入起来也比较麻烦。因此,接下来我们使用 Nginx 进行反向代理,让用户可以通过 80
端口访问网站。
安装配置 Nginx
为了让用户可以通过正常的 80 端口访问网站,我们需要使用 Nginx 进行反向代理:
安装 Nginx
sudo apt update sudo apt install nginx
验证 Nginx 状态
sudo systemctl status nginx
创建网站配置文件
在
/etc/nginx/sites-available/
下新建mywebsite
文件,加入以下配置:server { listen 80; listen [::]:80; root /var/www/html; index index.html index.htm index.nginx-debian.html; # 填写域名或IP地址 server_name jmxr.fun; 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; } }
这个配置文件的作用是:监听
80
端口,将请求转发到127.0.0.1:3000
端口,并设置一些请求头。创建符号链接
sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/ sudo nginx -t
这个命令的作用是创建一个符号链接,将
mywebsite
文件链接到/etc/nginx/sites-enabled
目录下,并检查 Nginx 配置是否正确。重启 Nginx
sudo nginx -s reload
完成后,若以上步骤没有问题,即可通过 http://jmxr.fun
直接访问网站。
备案
有可能当你访问网站时,会看到类似以下的提示:

你需要对你的网站进行备案,具体流程可以找教程或咨询你的域名提供商。
最后
至此,一个简单的网站就部署完成了。后续还可以配置使用 HTTPS 证书,提升网站的安全性。