本指南面向希望在 Azure 中自行托管 Discourse 站点的用户,将引导您完成创建 Linux 虚拟机(VM)所需的初始 Azure 门户配置步骤。完成后,您可按照 常规云安装指南 进行后续操作(该指南适用于任何网络托管环境)。如果您不打算自行托管,而是希望由我们为您托管 Discourse 论坛,请在此处 注册。
1) 创建资源组
在创建虚拟机之前,请先创建资源组。您的 Discourse 站点相关的所有内容(如虚拟机存储磁盘、网络、安全组、Blob 存储等)都将位于此资源组中。要创建资源组,请点击绿色加号并选择“资源组”,然后填写“资源组名称”字段,选择您的“订阅”和“资源组位置”,最后点击“创建”。
2) 创建 Linux 虚拟机
本指南将为您创建一个 Ubuntu 16.04 LTS 虚拟机。为此,请再次点击绿色加号,然后搜索"Ubuntu Server 16.04 LTS",它应该会出现在可用虚拟机列表中。
选择它,确保部署模型设置为“资源管理器”,然后点击“创建”。
3) 配置基本设置
此时您应位于“创建虚拟机”的“基础”选项卡上。填写所有必填字段以设置虚拟机。选择我们之前创建的"discourse"资源组,为您的虚拟机命名(例如"discourse"),并选择您希望使用的区域。
仍在“基础”选项卡上,您需要选择虚拟机的大小。默认选项为“标准 D2s v3",该配置拥有 8 GB 内存,每月费用为 71.42 美元。请务必点击“更改大小”,并根据您的工作负载选择合适的虚拟机规格。
对于最低要求,您需要选择"B1ms"选项,该选项配备 2GB 内存。虽然"B1s"广告宣称拥有 1GB 内存,但在操作系统层面您只能获得约 800MB 内存,剩余空间不足以流畅运行 Discourse。“B1ms”的月费为 17.11 美元。
接下来填写 Linux 用户名,并上传您的 SSH 公钥。或者,您也可以配置基于密码的登录方式,但推荐使用基于 SSH 密钥的登录方式。
现在,我们需要确保可以通过 Web 和 SSH 访问该机器。请选择“允许选定端口”单选按钮,并从“选择入站端口”下拉菜单中选择 HTTP、HTTPS 和 SSH。设置完成后,建议将 SSH 访问权限限制为仅允许您的 IP 地址。
选择“检查 + 创建”。在摘要页面上确认一切无误后,点击“创建”。虚拟机创建过程将需要几分钟时间。
4) 通过 SSH 连接到虚拟机
我们需要命令行访问权限来设置交换空间并安装 Discourse。虚拟机创建完成后,您应该可以在 Azure 门户中选择该虚拟机,并在“概述”屏幕上查看其公共 IP 地址。打开您的终端,使用本指南第 3 步中指定的用户名通过 SSH 连接到虚拟机。
如果您不确定如何通过 SSH 连接到虚拟机,也可以改用 Azure 门户内的“串行控制台”。方法是选择该虚拟机,然后在左侧导航栏底部选择“串行控制台”。
这将打开一个 Shell,您可以在其中输入创建虚拟机之前指定的用户名和密码。如果您不确定密码是什么,可以使用“重置密码”选项。
现在您应该已经处于可以输入命令的终端中:
5) 设置交换空间
每个 Azure 虚拟机都配备一个与操作系统磁盘分离的临时磁盘,通常挂载在 /dev/sdb1。请确保将交换空间设置在此临时磁盘上,而不是操作系统磁盘上,原因如下:
此临时存储驱动器位于托管您虚拟机的物理机器上,因此与数据磁盘等持久性存储相比,它具有更高的 IOPS 和更低的延迟。 - 了解 Azure 虚拟机上的临时驱动器
编辑 /etc/waagent.conf 文件并更新以下行:
ResourceDisk.Format=y
ResourceDisk.EnableSwap=y
ResourceDisk.SwapSizeMB=2048
注意:如果您已经在操作系统驱动器上设置了交换空间(可能是 ./discourse-setup 为您配置的),您可以通过注释掉 /etc/fstab 中的 /swapfile 行来关闭它。
如果您不确定如何使用 vim 等命令行编辑器编辑 /etc/waagent.conf 文件,可以直接将以下命令复制并粘贴到您的终端中,然后按回车键:
sudo sed -i '/ResourceDisk.Format=n/c\\ResourceDisk.Format=y' /etc/waagent.conf && sudo sed -i '/ResourceDisk.EnableSwap=n/c\\ResourceDisk.EnableSwap=y' /etc/waagent.conf && sudo sed -i '/ResourceDisk.SwapSizeMB=0/c\\ResourceDisk.SwapSizeMB=2048' /etc/waagent.conf
如果是首次运行 sudo 命令,系统可能会要求您输入密码。
然后使用 sudo shutdown -r now 重启您的虚拟机。
要验证交换空间是否正常工作,请重新登录您的虚拟机并输入 swapon --show,您应该会看到类似以下内容:
root@azure:~# swapon --show
NAME TYPE SIZE USED PRIO
/mnt/swapfile file 2G 0B -2
请注意,交换文件位于 /mnt 内,这是好事,因为这是我们临时驱动器的位置。
您还可以输入 free -h 并查看类似以下内容:
root@azure:~# free -h
total used free shared buff/cache available
Mem: 1.9G 174M 1.5G 3.0M 172M 1.5G
Swap: 2.0G 0B 2.0G
如果“总计”列中有数值,则表示交换空间已设置成功。
6) 安装 Discourse
现在我们的 Linux 虚拟机已在 Azure 上创建,并且已配置了交换分区,接下来请按照 官方云安装指南 进行操作。
7) 安装 Azure Blob 存储插件(可选)
Discourse 安装完成后,您可以按照 Azure Blob 存储插件 主题中的安装说明进行操作。安装并启用此插件后,用户上传的图片将存储在 Blob 存储中,而不是您的 Linux 虚拟机上。这有助于提升性能,同时防止您的操作系统磁盘被填满。









