如何在Ubuntu20.04上安装FathomAnalytics

来自菜鸟教程
跳转至:导航、​搜索

介绍

Fathom Analytics 是一个开源、自托管的 Web 分析应用程序,专注于简单性和隐私性。 它是用 Go 编写的,并以单个二进制文件的形式发布,使安装相对简单。

在本教程中,您将安装和配置 Fathom,然后安装 Nginx 作为 Fathom 应用程序的反向代理。 最后,您将通过使用 Certbot 从 Let's Encrypt 证书颁发机构下载和配置 SSL 证书来启用安全 HTTPS 连接。

先决条件

为了完成本教程,您首先需要以下内容:

  • Ubuntu 20.04 服务器,启用了 UFW 防火墙,并且配置了具有 sudo 权限的非 root 用户。 请阅读我们的 Initial Server Setup with Ubuntu 20.04 以了解有关设置这些要求的更多信息
  • 指向您服务器的公共 IP 地址的域名。 例如,这应该类似于 example.comfathom.example.com。 如果您使用的是 DigitalOcean,请参阅我们的 DNS 快速入门 ,了解有关在我们的控制面板中创建域资源的信息。

满足所有先决条件后,继续 步骤 1,您将在此处下载并安装 Fathom。

第 1 步 — 下载 Fathom

要安装 Fathom 软件,您首先要下载最新版本,然后将可执行文件解压缩到 /usr/local/bin 目录。

首先,移动到您可以写入的目录。 /tmp 目录是个不错的选择:

cd /tmp

在您的网络浏览器中,访问 Fathom 的最新软件版本 的 GitHub 页面,然后找到名称类似于 fathom_1.2.1_linux_amd64.tar.gz 的文件。 版本号可能不同。

右键单击文件的链接,然后选择 Copy Link(或类似的,取决于您的浏览器)。

使用 curl 命令从您刚刚复制的链接下载文件:

curl -L -O https://github.com/usefathom/fathom/releases/download/v1.2.1/fathom_1.2.1_linux_amd64.tar.gz

您现在应该在 /tmp 目录中有一个 fathom_1.2.1_linux_amd64.tar.gz 文件。 使用 tar 命令提取 fathom 可执行文件并将其移动到 /usr/local/bin

sudo tar -C /usr/local/bin/ -xzf fathom*.tar.gz fathom

sudo 命令是必要的,因为 /usr/local/bin 是受保护的目录,因此您需要超级用户权限才能写入。

现在使用 sudochmod 来更新 fathom 二进制文件的权限:

sudo chmod +x /usr/local/bin/fathom

这使得 fathom 可执行。 要对其进行测试,请运行 fathom --version

fathom --version
OutputFathom version 1.2.1, commit 8f7c6d2e45ebb28651208e2a7320e29948ecdb2c, built at 2018-11-30T09:21:37Z

该命令将打印出 Fathom 的版本号和一些其他详细信息。 您已成功下载并安装了 Fathom 二进制文件。 接下来,您将首次配置和运行 Fathom。

第 2 步 — 配置和运行 Fathom

在配置 Fathom 之前,您将在系统上创建一个新的 fathom 用户。 这个新用户帐户将用于运行 Fathom 服务器,这将有助于隔离和保护服务。

使用 adduser 命令创建一个名为 fathom 的新用户:

sudo adduser --system --group --home /opt/fathom fathom

这会创建一个特殊的 --system 用户,这意味着它没有密码并且无法像普通用户那样登录。 我们还使用 --group 标志和 /opt/fathom 中的主目录创建了一个 fathom 组。

现在移动到 fathom 用户的主目录:

cd /opt/fathom

现在我们必须执行一些需要以 fathom 用户身份运行的命令。 为此,请使用 sudofathom 用户身份打开 bash shell:

sudo -u fathom bash

您的提示将变为 fathom@host:~$ 之类的内容。 在我们 exit 这个 shell 之前,我们运行的每个命令都将以 fathom 用户身份运行。

现在您已准备好为 Fathom 设置配置文件。 我们在这个配置文件中需要的一项是 Fathom 将用于签名和加密目的的随机字符串。 现在使用 openssl 命令生成随机字符串:

openssl rand --base64 32
OutputiKo/rYHFa2hDINjgCcIeeCe9pNglQreQrzrs+qK5tYg=

将字符串复制到剪贴板,或将其记在某种临时临时文档中,然后打开一个新的 .env 文件进行配置:

nano /opt/fathom/.env

这将在 nano 文本编辑器中打开一个新的空白文件。 随意使用您最喜欢的编辑器。

将以下内容粘贴到文件中,确保将随机字符串更新为您之前生成的字符串:

/opt/fathom/.env

FATHOM_SERVER_ADDR="127.0.0.1:8080"
FATHOM_DATABASE_DRIVER="sqlite3"
FATHOM_DATABASE_NAME="fathom.db"
FATHOM_SECRET="your_random_string_here"

此配置首先指定服务器应仅侦听 localhost (127.0.0.1) 端口 8080,并且应使用名为 fathom.db 的 SQLite 数据库文件.

保存并关闭文件。 在 nano 中可以按 CTRL+O 然后按 ENTER 保存,然后按 CTRL+X 退出。

现在数据库已经配置好了,我们可以将第一个用户添加到我们的 Fathom 实例中:

fathom user add --email="your_email" --password="your_password"

由于这是您第一次在配置数据库的情况下运行 fathom,您应该注意到发生了一些初始数据库迁移:

OutputINFO[0000] Fathom version 1.2.1, commit 8f7c6d2e45ebb28651208e2a7320e29948ecdb2c, built at 2018-11-30T09:21:37Z
INFO[0000] Configuration file: /opt/fathom/.env
INFO[0000] Connected to sqlite3 database: /opt/fathom/fathom.db
INFO[0000] Applied 26 database migrations!
INFO[0000] Created user sammy@example.com

您的 fathom.db 数据库文件现已创建并添加了用户。

现在启动 Fathom 服务器来测试它:

fathom server
OutputINFO[0000] Fathom version 1.2.1, commit 8f7c6d2e45ebb28651208e2a7320e29948ecdb2c, built at 2018-11-30T09:21:37Z
INFO[0000] Configuration file: /opt/fathom/.env
INFO[0000] Connected to sqlite3 database: /opt/fathom/fathom.db

连接到服务器 的第二个终端中,使用 curl 获取 Fathom 实例的主页:

curl localhost:8080
Output<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
  <title>Fathom - simple website analytics</title>
  <link href="assets/css/styles.css?t=1543569696966" rel="stylesheet">
. . .

您应该会在屏幕上看到几行 HTML 代码。 这表明服务器已启动并响应 localhost 上的请求。

返回您的第一个终端,按 CTRL+C 退出 fathom server 进程。

你已经以 fathom 用户的身份运行命令,所以 exit 该会话也是如此:

exit

您的 shell 提示符应恢复正常。

Fathom 现在已完全配置,您已成功从命令行手动运行它。 接下来,我们将 Fathom 设置为作为 Systemd 服务运行。

第 3 步 — 将 Fathom 设置为 Systemd 服务

要始终运行 fathom serve,即使您没有登录服务器,您也需要使用 Systemd 将其设置为 服务 。 Systemd 是一个服务管理器,用于处理 Ubuntu 和许多其他 Linux 发行版上的启动、停止和重新启动服务。

您创建的 fathom.service 文件将包含 Systemd 正确运行服务器所需的所有配置详细信息。 现在打开新文件:

sudo nano /etc/systemd/system/fathom.service

将以下内容添加到文件中:

/etc/systemd/system/fathom.service

[Unit]
Description=Fathom Analytics server
Requires=network.target
After=network.target

[Service]
Type=simple
User=fathom
Group=fathom
Restart=always
RestartSec=3
WorkingDirectory=/opt/fathom
ExecStart=/usr/local/bin/fathom server

[Install]
WantedBy=multi-user.target

该文件指定何时启动服务(After=network.target,表示网络启动后),它应该作为 fathom 用户和组运行,Systemd 应该总是尝试重新启动如果进程退出(Restart=always),它应该从/opt/fathom目录运行,以及使用什么命令来运行服务器(ExecStart=/usr/local/bin/fathom server)。

保存并关闭文件。 重新加载 Systemd 配置:

sudo systemctl daemon-reload

启用服务:

sudo systemctl enable fathom.service

启用该服务意味着 Systemd 将在系统启动期间自动启动它。 我们现在还需要手动启动服务,就这一次:

sudo systemctl start fathom

请注意,在前面的命令中,您可以省略服务名称的 .service 部分。 最后,检查服务的状态以确保它正在运行:

sudo systemctl status fathom
Output● fathom.service - Fathom Analytics server
     Loaded: loaded (/etc/systemd/system/fathom.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2021-11-03 15:32:45 UTC; 13s ago
   Main PID: 3748 (fathom)
      Tasks: 5 (limit: 1136)
     Memory: 10.3M
     CGroup: /system.slice/fathom.service
             └─3748 /usr/local/bin/fathom server

Nov 03 15:32:45 ubuntu-fathom systemd[1]: Started Fathom Analytics server.
Nov 03 15:32:46 ubuntu-fathom fathom[3748]: time="2021-11-03T15:32:46Z" level=info msg="Fathom version 1.2.1, commit 8f>
Nov 03 15:32:46 ubuntu-fathom fathom[3748]: time="2021-11-03T15:32:46Z" level=info msg="Configuration file: /opt/fathom>
Nov 03 15:32:46 ubuntu-fathom fathom[3748]: time="2021-11-03T15:32:46Z" level=info msg="Connected to sqlite3 database: >

该服务在 localhost 端口 8080 上再次启动并运行。 接下来,我们将 Nginx 设置为反向代理,以将 Fathom 服务暴露给外界。

第 4 步 — 安装和配置 Nginx

将 Nginx 等 Web 服务器放在应用程序服务器前面可以通过将缓存、压缩和静态文件服务卸载到更高效的进程来提高性能。 我们将安装 Nginx 并将其配置为 反向代理 对 Fathom 的请求,这意味着它将负责将用户的请求传递给 Fathom 并再次返回。

首先,刷新你的包列表,然后使用 apt 安装 Nginx:

sudo apt update
sudo apt install nginx

使用“Nginx Full”UFW 应用程序配置文件允许公共流量到端口 80443(HTTP 和 HTTPS):

sudo ufw allow "Nginx Full"
OutputRule added
Rule added (v6)

接下来,在/etc/nginx/sites-available目录下打开一个新的Nginx配置文件。 我们将调用我们的 fathom.conf 但您可以使用不同的名称:

sudo nano /etc/nginx/sites-available/fathom.conf

将以下内容粘贴到新的配置文件中,确保将 your_domain_here 替换为您配置为指向 Fathom 服务器的域。 这应该类似于 fathom.example.com,例如:

/etc/nginx/sites-available/fathom.conf

server {
    listen       80;
    listen       [::]:80;
    server_name  your_domain_here;

    access_log  /var/log/nginx/fathom.access.log;
    error_log   /var/log/nginx/fathom.error.log;

    location / {
      proxy_pass http://localhost:8080;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header Host $host;
  }
}

此配置目前仅适用于 HTTP。 我们将让 Certbot 在下一步中负责配置 SSL。 配置的其余部分设置日志记录位置,然后将所有流量传递到位于 http://localhost:8080 的 Fathom 服务器,并在此过程中添加一些重要的代理转发标头。

保存并关闭文件,然后通过将其链接到 /etc/nginx/sites-enabled/ 来启用配置:

sudo ln -s /etc/nginx/sites-available/fathom.conf /etc/nginx/sites-enabled/

使用 nginx -t 验证配置文件语法是否正确:

sudo nginx -t
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

最后,重新加载 nginx 服务以获取新配置:

sudo systemctl reload nginx

您的 Fathom 站点现在应该可以在纯 HTTP 上使用。 加载http://your_domain_here,它看起来像这样:

现在您的站点已通过 HTTP 启动并运行,是时候使用 Certbot 和 Let's Encrypt 证书来保护连接了。

第 5 步 — 安装 Certbot 并设置 SSL 证书

感谢 Certbot 和 Let's Encrypt 免费证书颁发机构,将 SSL 加密添加到我们的 Fathom 应用程序只需要两个命令。

首先,安装 Certbot 及其 Nginx 插件:

sudo apt install certbot python3-certbot-nginx

接下来,在 --nginx 模式下运行 certbot,并指定您在 Nginx server_name 配置中使用的相同域:

sudo certbot --nginx -d your_domain_here

系统将提示您同意 Let's Encrypt 服务条款,并输入电子邮件地址。

之后,系统会询问您是否要将所有 HTTP 流量重定向到 HTTPS。 这取决于您,但通常建议这样做并且安全。

之后,Let's Encrypt 将确认您的请求,Certbot 将下载您的证书:

OutputCongratulations! You have successfully enabled https://Fathom.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=Fathom.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/Fathom.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/Fathom.example.com/privkey.pem
   Your cert will expire on 2021-12-06. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Certbot 将自动重新加载 Nginx 以获取新的配置和证书。 重新加载您的网站,如果您选择重定向选项,它应该会自动将您切换到 HTTPS。

您的站点现在是安全的,可以使用您在 步骤 2 中设置的用户详细信息进行安全登录。

成功登录后,您将看到使用 Fathom 设置您的第一个网站的提示:

完成后,您将看到您刚刚设置的站点的(当前为空)仪表板:

您已成功安装并保护了 Fathom 分析软件。

结论

在本教程中,您下载、安装和配置了 Fathom Analytics 应用程序,然后设置 Nginx 反向代理并使用 Let's Encrypt SSL 证书对其进行保护。

您现在可以通过添加 Fathom Analytics 跟踪脚本来完成您的网站的设置。 请参阅 官方 Fathom Analytics 文档 以获取有关使用该软件和设置您的站点的更多信息。