文章详情

Azure 账单号 Azure微软云服务器运行Nodejs教程

微软云Azure2026-04-25 20:52:44Azure顶尖云
下载.png

前言:在 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 里的 startnpm 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 应用监听端口是多少、入口文件是什么、是否有数据库依赖。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系