Azure 账单号 Azure微软云服务器运行Nodejs教程
前言:在 Azure 上跑 Node.js,到底难不难?
先说结论:不难,但会遇到一些“看起来像玄学,其实是配置”的问题。比如你明明写好了接口,浏览器却提示连接不上;你觉得服务器已经跑着了,结果日志里写着“找不到模块”;你还以为是代码问题,实际上是端口没放行。
本篇文章按“能跑起来”为目标,从选服务器到部署运行,一步一步带你做。你会用到 Azure 的虚拟机(VM)思路,而不是那种偏复杂的容器/函数路线。适合:刚入门、要快速上线、或者你就想先把 Node.js 服务跑在云上。
文章默认你已经大概懂点 Node.js(至少会写一个简单的 Express 或者创建一个服务)。如果你完全是零基础,我也会尽量写得像“手把手教程”,你跟着敲命令就行。
准备工作:你需要什么?
1)Azure 账号与资源组
你需要一个 Azure 账号(可用试用/订阅)。登录后先创建一个“资源组”(Resource Group),把后面用到的虚拟机、网络等都归到同一个家里,后期管理不至于像找袜子——越找越乱。
2)本地代码与基本脚手架
你可以准备一个 Node.js 项目,例如:
- Express 应用
- 或简单 HTTP 服务
确保你的项目能在本机通过 node app.js(或 npm start)跑起来。
3)一点点安全意识
部署到云服务器后,安全组与防火墙就像门锁。你不配置放行,外面进不来;你乱放行,谁都能进来。本文会教你把端口开到刚刚好。
第 1 步:创建 Azure 云服务器(虚拟机)
进入 Azure 门户后:
- 选择“创建资源”
- 搜索“虚拟机”
- 点击“创建”
1)选择镜像与系统
建议你选 Linux(比如 Ubuntu 22.04 LTS 或 Ubuntu 20.04 LTS)。原因很现实:
- Node.js 部署和命令习惯通用
- 后续安装、日志、权限处理更顺
2)选择规格与成本
如果只是学习/小型服务,选择入门规格即可。例如 2 核、2GB 或 4GB 内存差不多就够你跑个 Express API。
别一上来就上大配置,钱会先跑到 Azure 的口袋里。等你确定应用稳定、性能需要再升级。
3)设置身份验证:SSH 密钥优先
Azure 虚拟机常见有密码登录和 SSH 公钥登录。建议选 SSH 密钥登录。
你需要:
- 本地生成 SSH Key(如果你没有)
- 把公钥填到 Azure
这样更安全,也更符合“工程师”的气质。
4)网络:端口别先乱开
在创建虚拟机时,Azure 会让你配置入站端口。你可以先不急着全开:
- SSH:22(用于你自己登录)
- 应用端口:例如 3000(或你自定义的端口)
等会儿我们会更细说。
第 2 步:连接到服务器(SSH)
创建完成后,找到虚拟机的“概览”页,一般会有:
- 公网 IP
- 用户名
在你的本地终端运行:
ssh 用户名@服务器公网IP
Azure 账单号 如果你用的是 SSH Key,可能需要指定 key 文件:
ssh -i ~/.ssh/你的key文件 用户名@服务器公网IP
Azure 账单号 连接上后,你看到类似欢迎信息,就可以进入下一步了。
第 3 步:在服务器上安装 Node.js
在 Linux 上安装 Node.js 有很多方法。为了少坑,我们采用“版本管理/稳妥安装”思路。
1)更新包列表
sudo apt update
2)安装 Node.js
推荐使用 NodeSource(可选版本,比如 18 或 20)。如果你希望使用 LTS(长期支持)版本,通常会更省心。
这里给出一个通用思路(以 Ubuntu 为例):
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs
Azure 账单号 安装完成后检查版本:
node -v npm -v
如果版本输出正常,恭喜,你离成功更近一步了。
3)设置 npm 镜像(可选,但通常建议)
如果你在国内环境安装依赖有网络慢的问题,可以配置 npm registry,例如:
npm config set registry https://registry.npmmirror.com
这不是必须,但省掉的等待时间能让你怀疑人生。
第 4 步:上传你的 Node.js 项目到服务器
你有两种常见方式:scp/sftp 或者用 git 拉取。
方式 A:用 scp 上传
假设你项目在本地目录 my-node-app,你可以:
scp -r my-node-app 用户名@服务器公网IP:/home/用户名/
登录后进入目录:
cd /home/用户名/my-node-app
方式 B:在服务器上 git clone
如果你的代码放在 GitHub/GitLab:
cd /home/用户名 git clone 你的仓库地址 my-node-app cd my-node-app
需要配置凭证的话,再补上 SSH key 或 token。
第 5 步:安装依赖与启动服务
1)安装依赖
npm install
如果你的项目需要环境变量(比如数据库地址、端口等),现在先别硬扛。你可以:
- 先用默认配置启动
- 或在启动命令前设置环境变量
2)启动方式:先手动跑起来
常见两种:
- 如果你有
package.json里的start:npm start - 或直接
node app.js
例如:
npm start
如果输出里出现“服务器运行在 3000”,说明服务已起来。
3)确认服务在本机监听
在服务器上执行:
ss -lntp | grep -E '3000|你的端口'
你应该能看到 Node 进程在监听对应端口。
如果看不到,别急着怪云。先看看程序有没有报错。最常见的是:
- 启动脚本没执行
- 端口写错
- 环境变量导致应用没起来
第 6 步:配置 Azure 安全组与端口放行
这一步是“连接不上”的头号嫌疑人。
1)找到虚拟机对应的网络安全组(NSG)
在 Azure 门户中:
- 进入虚拟机
- 查看网络设置
- 找到 NSG 或端口规则
2)放行入站端口
你至少要放行:
- 22/tcp:SSH(如果你需要远程登录)
- 你的 Node 应用端口:比如 3000/tcp
规则的“源”建议不要全放开到世界(0.0.0.0/0)除非你确实需要公网访问。学习阶段你可以先临时放开;正式上线建议只允许你的 IP。
3)快速验证
在本地浏览器访问:
http://服务器公网IP:你的端口
如果你访问成功,恭喜,人生已经在向你微笑了。
如果仍然失败,按顺序排查:
- 应用是否真的监听对应端口
- 安全组是否放行
- 虚拟机是否有内置防火墙(一般 Linux 默认可能没有,但你装过就说不准)
第 7 步:用 pm2 守护 Node.js(强烈建议)
手动启动一次、关掉终端服务就没了,这对“云服务器”来说太不体面了。我们需要一个进程管理器。
1)安装 pm2
sudo npm install -g pm2
2)用 pm2 启动应用
比如应用入口是 app.js:
pm2 start app.js --name my-node-app
如果你是 npm start,也可以:
pm2 start npm --name my-node-app -- start
3)查看状态
pm2 status
你应该会看到进程的状态是 online。
4)保存重启配置
为了让服务器重启后还能自动拉起服务:
pm2 save
并启用开机自启(根据系统情况):
pm2 startup
它会输出一条需要你复制执行的命令,执行后即可。
第 8 步:配置日志与排查常见问题
Azure 账单号 部署上线后,日志就像你的“情报网”。你不用猜,直接看。
1)pm2 查看日志
pm2 logs my-node-app
或者:
pm2 show my-node-app
2)权限与文件路径问题
如果你的应用读取某些文件(上传目录、配置文件、静态资源),确保:
- 路径相对/绝对写得正确
- 应用运行用户对这些文件有读写权限
常见错误比如:你在本机能读,放到服务器不行。原因通常是路径不同或权限不同。
3)环境变量没配置
Node 服务常见依赖环境变量:数据库地址、JWT 密钥、第三方 API Key。你可以在 pm2 里配置环境变量,或者用 shell export。
例如(临时方式):
export PORT=3000 npm start
正式方式推荐通过 pm2 ecosystem 文件来管理环境变量(后续你需要我也可以再写一篇专门的)。
4)端口不一致
你代码里写死 3001,安全组放行 3000,然后你会觉得 Azure 是在跟你玩。解决方案就是:统一端口,或者让代码读取 process.env.PORT。
第 9 步:把你的服务做得更像“线上服务”
能跑起来只是开始,真正让用户爽、让你省心的,往往是后续这些细节。
1)加一个反向代理(可选,但很香)
Azure 账单号 一般我们会用 Nginx 把外部流量转发到 Node 应用端口。好处:
- 可以配置 HTTPS
- 可以做静态资源缓存
- 可以更方便做限流/重定向
如果你只做学习,也可以不加;但如果你考虑上线,Nginx 基本是标配之一。
2)HTTPS(更像人类用户会用的服务)
HTTP 是给工程师看的,HTTPS 是给用户看的。你如果需要证书,可以:
- 用域名
- 通过证书服务签发
- 配置 Nginx 做 TLS 终止
Azure 也有相关能力,不过不同地区、不同方案界面可能略有差异。你要是告诉我你用的是哪种域名和证书策略,我可以给你更贴合的步骤。
3)数据库与存储
Node.js 项目通常不是孤立的,还会连接数据库、对象存储。Azure 的生态里:
- 数据库可用 Azure Database for MySQL/PostgreSQL 等
- 文件/对象存储可用 Azure Blob
把这些做对,比你调 1% 性能更重要。
第 10 步:一套“最小可上线”检查清单
在你觉得“应该能用了”的时候,建议你按这个顺序快速检查:
- 应用已在服务器上启动(
pm2 status在线) - 监听端口正确(
ss -lntp可看到) - Azure 安全组放行了你的端口
- 云服务器内部防火墙(如有)放行端口
- 环境变量齐全(数据库、密钥等)
- 日志可查看(
pm2 logs) - 重启后能自动拉起(
pm2 save与 startup)
做到这里,基本就可以说:你已经不是“部署失败的受害者”,而是“能自查问题的上线选手”。
常见坑位总结:你可能会遇到的五件事
坑 1:安全组不开,外网访问永远失败
看似是“浏览器问题”,其实是“网络规则问题”。端口放行后就好了。
坑 2:应用监听了 localhost,导致外网进不来
例如你在 Express 里写了:
app.listen(3000, '127.0.0.1')
这会只监听本机。建议用:
app.listen(3000, '0.0.0.0')
或者直接不指定 host,让它默认监听所有网卡。
坑 3:你用 npm install 时依赖失败
可能是网络、私有依赖或 lockfile 不一致。先看日志,不要盲猜。
坑 4:服务器重启后服务没回来
没用 pm2 的 startup 或没保存 pm2 状态。把流程补上就行。
坑 5:CPU/内存跑着跑着就卡死
学习阶段问题不大,但上线后你要关注:
- Node 是否有阻塞代码(同步大循环)
- 是否存在内存泄漏
- 是否需要更合理的缓存与分页
云服务器不是万能药,你的代码也要对症下药。
结语:把 Node.js 跑上 Azure,你已经赢了一半
本文从 Azure 虚拟机创建、安装 Node.js、上传代码、放行端口、pm2 守护,一路讲到部署上线常见排查。你现在应该能做到:服务能稳定启动、重启后能自动拉起、外网能访问。
下一步你可能会想做得更专业:接 Nginx、上 HTTPS、加域名、做环境变量规范、做 CI/CD。没问题,这些都值得继续升级。
如果你愿意,我可以根据你的项目类型(Express / Koa / Nest / 是否需要数据库 / 入口文件是什么)把步骤进一步“定制化”,减少你在配置里来回试错的时间。你只要告诉我:你的 Node 应用监听端口是多少、入口文件是什么、是否有数据库依赖。

