如何在DigitalOcean的应用平台上使用Umami部署您自己的Web分析软件
作为 Write for DOnations 计划的一部分,作者选择了 Mozilla 基金会 来接受捐赠。
介绍
部署网站后,您需要将分析脚本添加到您的网站,以了解吸引最多流量的页面并跟踪访问者数量、目标转化率和页面浏览量。 Umami 是一款开源网络分析软件,可在 PostgreSQL 和 Next.js API 路由 上运行。
Umami 允许您跟踪页面的事件、引用页面、会话持续时间、查看计数和唯一访问者计数。 在单个 Umami 实例上,您可以跟踪无限数量的网站并创建多个用户,以便不同的人可以从单个部署中跟踪他们的网站。
在本指南中,您将克隆 Umami 到本地计算机、创建 PostgreSQL 表、设置连接池并将 Umami 部署到应用平台。
先决条件
在开始本指南之前,您需要以下内容:
- 一个 DigitalOcean 帐户。 要创建新帐户,请导航至 DigitalOcean 注册页面 。
- 一个 GitHub 帐户。 您可以从 GitHub 注册页面 创建一个帐户。
- Git 安装在本地机器上。 您可以按照教程 贡献开源:Git 入门 在您的计算机上安装和设置 Git。
- 托管的 PostgreSQL 数据库集群。 DigitalOcecan 文档中的 如何创建 PostgreSQL 数据库集群 页面中描述了创建一个的步骤。
- 安装在本地计算机上的 PostgreSQL 命令行客户端
psql
。 您可以按照 如何连接到托管数据库 指南的 连接到托管 PostgreSQL 部分中的步骤安装psql
。
第 1 步 - 分叉和克隆 Umami 存储库
GitHub 上的 Umami 存储库包含运行 Umami 所需的文件和脚本。 分叉此存储库允许您将 Umami 部署到 App 平台,并使用其中包含的 SQL 脚本在 PostgreSQL 数据库中设置表。
在这一步中,您将使用 git
fork 存储库并将其克隆到您的本地计算机。
要 fork 存储库,请转到 GitHub 上的 Umami 存储库,然后单击页面右上角的 Fork 按钮。 您的存储库副本将位于 https://github.com/your\_github\_username/umami
。
在您的分叉存储库中,单击 Code 按钮,复制 HTTPS 链接,然后使用以下命令将分叉存储库克隆到您的本地计算机:
git clone https://github.com/your_github_username/umami.git
git clone
命令在您的计算机上创建存储库的副本。 运行命令后,您将看到类似于以下的输出:
OutputCloning into 'umami'... remote: Enumerating objects: 6352, done. remote: Counting objects: 100% (270/270), done. remote: Compressing objects: 100% (159/159), done. remote: Total 6352 (delta 131), reused 219 (delta 103), pack-reused 6082 Receiving objects: 100% (6352/6352), 2.57 MiB | 519.00 KiB/s, done. Resolving deltas: 100% (4388/4388), done. Checking out files: 100% (355/355), done.
移动到存储库的目录:
cd umami
现在您已经分叉了 Umami 存储库并将其克隆到本地计算机,您将在 PostgreSQL 上设置 umami
数据库并创建其表。
第 2 步 — 创建 umami
数据库、设置表并启动连接池
在此步骤中,您将在集群中创建并初始化一个 umami
数据库。 该数据库是 Umami 存储您网站数据的地方。
要在集群中创建 umami
数据库,请在您的 DigitalOcean 帐户中打开 Cloud Control Panel,然后从侧面菜单中选择 Databases。 从集群列表中选择您创建的数据库集群。 导航到 用户和数据库 选项卡并向下滚动到 数据库 。 在文本框中输入umami
,点击保存,创建umami
数据库。
现在您已经创建了 umami
数据库,您可以构建 Umami 需要运行的表。 要完成此操作,您将需要连接字符串来连接到您的 umami
数据库。
在云控制面板,切换到概览选项卡。 查找页面右侧的 Connection Details 部分。 在写入 Connection Parameters 的下拉列表中,选择 Connection String。 从写入 Database/Pool 旁边的下拉列表中选择 umami
数据库。 之后,单击Copy 将连接字符串复制到剪贴板。
sql/schema.postgresql.sql
处的 SQL 脚本创建 Umami 需要的所有表并在所有这些表中设置索引。 它还使用用户名 admin
和密码 umami
为 Umami 设置管理员帐户。
警告: Umami 的管理员用户可以创建和删除帐户。 强烈建议在部署后更改这些默认凭据,以防止未经授权访问您的 Umami 实例。 您可以在步骤 3 中更改默认凭据。
从您输入的 umami
目录运行以下命令以创建表:
psql 'your_connection_string' -f sql/schema.postgresql.sql
psql
使用连接字符串连接到您的数据库,并且 -f
标志在 sql/schema.postgresql.sql
处针对数据库运行 SQL 脚本。
成功运行命令后,您将获得以下输出:
Outputpsql:sql/schema.postgresql.sql:1: NOTICE: table "event" does not exist, skipping DROP TABLE psql:sql/schema.postgresql.sql:2: NOTICE: table "pageview" does not exist, skipping DROP TABLE psql:sql/schema.postgresql.sql:3: NOTICE: table "session" does not exist, skipping DROP TABLE psql:sql/schema.postgresql.sql:4: NOTICE: table "website" does not exist, skipping DROP TABLE psql:sql/schema.postgresql.sql:5: NOTICE: table "account" does not exist, skipping DROP TABLE CREATE TABLE CREATE TABLE CREATE TABLE CREATE TABLE CREATE TABLE CREATE INDEX CREATE INDEX CREATE INDEX CREATE INDEX CREATE INDEX CREATE INDEX CREATE INDEX CREATE INDEX CREATE INDEX CREATE INDEX CREATE INDEX INSERT 0 1
您已成功创建 umami
数据库和其中的表。 您现在将为 umami
数据库创建一个连接池。
PostgreSQL 被构建为具有持久连接。 但是,运行 Umami 的 Next.js API 路由无法跨请求共享数据库连接。 为了支持从 API 路由建立的短期连接并防止错误,您将为集群创建一个连接池。
连接池是一个应用程序,它允许您通过建立多个到数据库的持久连接并通过这些连接转发客户端请求来跨多个请求重用数据库连接。 当发出的请求多于可用连接时,后续请求将排队,直到有空闲连接。
要为您的托管数据库启用连接池,请转到您的 云控制面板 。 单击侧面菜单上的 Databases,然后选择您创建的数据库。 转到连接池选项卡,然后单击创建连接池。 将打开一个模式。 设置池名称为umami-pool,选择umami数据库,设置池大小为11
。 点击【X6X】创建池【X21X】创建连接池。
您可以稍后更改连接池的大小以支持更多流量。 请参阅 如何管理连接池 以了解有关何时调整以及如何选择池大小的更多信息。
来自 Umami 的请求不会直接发送到数据库,而是发送到连接池。 因此,您将需要连接池的连接字符串。 此连接字符串是将应用程序部署到应用程序平台时需要的环境变量之一。 要获取连接字符串,请转到 Connection Pools 选项卡,然后单击 Connection details。 modal打开后,点击【X32X】连接参数【X57X】下拉菜单,选择【X80X】连接字符串【X101X】,点击【X118X】复制【X126X】即可复制连接字符串。
连接池的连接字符串是部署到应用平台时需要的环境变量之一,因为数据库请求将发送到连接池。
现在您已经在数据库上设置了连接池,您将把 Umami 部署到应用平台。
第 3 步 — 将 Umami 部署到应用平台
在此步骤中,您将把 Umami 部署到 App Platform。 Umami 在用 Next.js 编写的 Web 应用程序上运行,App Platform 将从您的 Umami 分支部署它。 访问控制面板 的 App Platform 部分,然后单击 Launch Your App 开始。
您将看到代码源的选项列表。 选择 GitHub 作为源。 如果这是您第一次从 GitHub 存储库部署到 App Platform,系统会要求您将 App Platform 连接到您的 GitHub 帐户。
选择要部署应用程序的存储库。 从下拉列表中选择 your_github_username/umami
作为源存储库。 将分支保留为 master
,选中 Autodeploy code changes,然后单击 Next。
App Platform 将自动检测存储库中的 Dockerfile 并设置必要的设置。 您现在将添加 Umami 所需的环境变量。
Umami 需要两个环境变量才能工作:
DATABASE_URL
:PostgreSQL 数据库的连接字符串。HASH_SALT
:用于为应用程序生成唯一值的随机字符串。
点击Environment Variables旁边的Edit添加这些环境变量。
为了让 Umami 与您的连接池正常工作,您需要修改从云控制面板获得的连接池连接字符串,将 &pgbouncer=true
附加到末尾。 DATABASE_URL
的值应如下所示:
postgres://sammy:your_password@host-domain:25061/umami?sslmode=require&pgbouncer=true
单击 + 按钮,将 HASH_SALT
环境变量设置为随机字符串。 勾选 HASH_SALT
旁边的 Encrypt 复选框,以便在保存时加密 HASH_SALT
的值。
单击下一步继续设置应用程序。
为您的 Umami 实例选择一个名称,然后选择部署您的应用程序的区域。 自动选择离您最近的区域以最大限度地减少连接延迟。 单击下一步继续。
选择 Basic 计划,如果您的项目需要更大的大小,则选择 Pro 计划,然后单击 Launch Your App 以完成部署。
应用程序构建现在将开始。 构建完成后,可以访问您的应用的 URL 将显示在应用名称下方。
打开 URL 以访问您的分析仪表板。
您可以使用默认凭据登录:
- 用户名:admin
- 密码:umami
通过单击标题上的 Settings 来保护您的实例。 导航到侧边栏上的个人资料,然后单击更改密码。 输入之前的密码——umami
,然后选择一个新密码登录admin
账户。
要获取网站的跟踪脚本,请登录您的 Umami Dashboard。 在屏幕顶部的导航栏上选择 Settings。 单击添加网站按钮。 当模式打开时,为网站选择一个名称并输入网站所在的域。
添加网站后,您会在设置中的网站列表中找到它。 单击网站下的第一个按钮以显示跟踪脚本。
当您单击该按钮时,将打开一个模式,其中包含 <script>
标记中的跟踪脚本。 粘贴您网站页面的 <head>
标记中显示的代码片段,以开始从网站获取数据。 当访问者访问您的网页时,脚本会自动将数据发送到 Umami。
结论
您现在已经成功部署了 Umami Analytics 实例。 您现在可以跟踪所有网站的页面浏览量、会话持续时间和其他指标。 您可以参考 Umami 的文档来了解 如何跟踪事件。 如果您想在自定义域中使用 Umami,您可以参考 如何在应用平台中管理域 了解如何。