生成 Node.js 应用程序并将其部署到 Azure 云服务(经典)
重要
从 2024 年 9 月 1 日开始,已弃用所有客户的云服务(经典版)。 从 2024 年 10 月开始,Microsoft 将停止并关闭任何正在运行的现有部署,数据将永久性丢失。 新部署应使用基于 Azure 资源管理器的新型部署模型 Azure 云服务(外延支持)。
本教程介绍如何创建在 Azure 云服务中运行的 Node.js 应用程序。 云服务是 Azure 中可缩放的云应用程序构建基块。 它们允许进行单独且独立的管理,并允许横向扩展应用程序的前端和后端组件。 云服务为可靠托管每个角色提供强大的专用虚拟机。
提示
想要生成网站? 如果方案只涉及一个简单的网站前端,则可以考虑使用轻型 Web 应用。 随着 Web 应用的不断扩大和需求的变化,可以轻松升级到云服务。
你可以按照本教程生成一个托管在 Web 角色中的 Web 应用程序。 你将使用计算模拟器在本地测试你的应用程序,并使用 PowerShell 命令行工具来部署该应用程序。
该应用程序是一个“hello world”应用程序:
先决条件
注意
本教程使用 Azure PowerShell,因此需要在 Windows 上运行。
- 安装和配置 Azure PowerShell。
- 下载并安装 [用于 .NET 的 Azure SDK - 2.7]。 在安装设置中,选择:
- MicrosoftAzureAuthoringTools
- MicrosoftAzureComputeEmulator
创建 Azure 云服务项目
执行以下任务可创建一个新的 Azure 云服务项目以及基本的 Node.js 基架:
以管理员身份运行 Windows PowerShell;在“开始”菜单或“开始”屏幕中,搜索 Windows PowerShell。
将 PowerShell 连接 到订阅。
输入以下 PowerShell cmdlet 来创建项目:
New-AzureServiceProject helloworld
New-AzureServiceProject cmdlet 将生成一个基本结构用于将 Node.js 应用程序发布到云服务。 该结构包含向 Azure 发布应用程序所需的配置文件。 该 cmdlet 还会将工作目录更改为服务的目录。
该 cmdlet 将创建以下文件:
- ServiceConfiguration.Cloud.cscfg、ServiceConfiguration.Local.cscfg 和 ServiceDefinition.csdef:发布应用程序所需的特定于 Azure 的文件。 有关详细信息,请参阅 创建 Azure 托管服务概述。
- deploymentSettings.json:存储供 Azure PowerShell 部署 cmdlet 使用的本地设置。
输入以下命令添加新的 Web 角色:
Add-AzureNodeWebRole
Add-azurenodewebrole cmdlet 将创建一个基本 Node.js 应用程序。 它还会修改 .csfg 和 .csdef 文件,以添加新角色的配置条目。
注意
如果不指定角色名称,将使用默认名称。 可以提供一个名称作为第一个 cmdlet 参数:
Add-AzureNodeWebRole MyRole
Node.js 应用在 server.js 文件中定义,该文件位于 Web 角色(默认为 WebRole1)的目录中。 下面是 代码:
var http = require('http');
var port = process.env.port || 1337;
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(port);
此代码基本上与 nodejs.org 网站上的“Hello World”示例相同,但它使用云环境分配的端口号。
将应用程序部署到 Azure
注意
若要完成本教程,需要一个 Azure 帐户。 可以注册试用版。
下载 Azure 发布设置
要将应用程序部署到 Azure,必须先为 Azure 订阅下载发布设置。
运行以下 Azure Powershell cmdlet:
Get-AzurePublishSettingsFile -Environment AzureChinaCloud
此命令使用浏览器导航到发布设置下载页。 系统可能会提示你使用 Microsoft 帐户登录。 如果是这样,请使用与 Azure 订阅关联的帐户。
将已下载的配置文件保存到能够轻松访问的文件位置。
运行以下 cmdlet 以导入下载的发布配置文件:
Import-AzurePublishSettingsFile -Environment AzureChinaCloud [path to file]
注意
导入发布设置之后,请考虑删除下载的 .publishSettings 文件,因为它包含了可供他人访问你帐户的信息。
发布应用程序
若要发布,请运行以下命令:
$ServiceName = "NodeHelloWorld" + $(Get-Date -Format ('ddhhmm'))
Publish-AzureServiceProject -ServiceName $ServiceName -Location "China East" -Launch
- -ServiceName 指定部署的名称。 此值必须是唯一名称,否则发布过程会失败。 Get-Date 命令附加应使名称唯一的日期/时间字符串。
- -Location 指定托管应用程序的数据中心。 若要查看可用数据中心的列表,请使用 Get-AzureLocation cmdlet。
- -Launch 用于在部署完成后打开浏览器窗口并导航到托管服务。
发布成功之后,你会看到以下屏幕截图所示的响应:
注意
部署应用程序并在首次发布该程序后使其可供使用可能需要花费几分钟时间。
部署完成后,浏览器窗口将打开并导航到云服务。
应用程序现在正在 Azure 上运行。
Publish-AzureServiceProject cmdlet 执行以下步骤:
- 创建要部署的包。 该包将包含应用程序文件夹中的所有文件。
- 如果没有存储帐户,请创建一个新的存储帐户。 Azure 存储帐户用于存储部署期间的应用程序包。 在部署完成后,可以安全删除该存储帐户。
- 如果没有云服务,请创建一个新的云服务。 云服务是一个容器,将应用程序部署到 Azure 时,应用程序将托管在该容器中。 有关详细信息,请参阅 创建 Azure 托管服务概述。
- 将部署包发布到 Azure。
停止并删除应用程序
部署应用程序后,你可能希望禁用它,以避免产生额外费用。 Azure 将按使用的服务器小时数对 Web 角色实例计费。 应用程序部署之后就会开始使用服务器时间,即使相关实例并未运行且处于停止状态也是如此。
在 Windows PowerShell 窗口中,使用以下 cmdlet 以停止上一节中创建的服务部署:
Stop-AzureService
停止服务可能需要花费几分钟时间。 在服务停止时,你会收到一条指示服务已停止的消息。
若要删除服务,请调用以下 cmdlet:
Remove-AzureService
在出现提示时,输入 Y 以删除服务。
删除服务可能需要花费几分钟时间。 删除服务后,你会收到一条指示服务已被删除的消息。
注意
删除服务不会删除最初发布服务时所创建的存储帐户,并且你仍需为使用的存储付费。 如果没有其他项目在使用存储,则可能需要将其删除。
后续步骤
有关详细信息,请参阅 Node.js 开发人员中心。