简介

如果需要统计博客访问的相关数据,一般会选择「百度统计」或是「谷歌分析」。前者面向中文用户,在数据展示上会更加直观;后者全球通用,功能丰富数据详细,只是需要一定的学习成本。

当然,你也可以尝试自己搭建一个统计工具,将数据完全掌握在自己的手里。比如使用「Umami」。

安装

Umami提供了两张安装方式,使用Docker或从源代码安装,我们这里使用源代码安装。

安装Node.js、npm

注意:Node.js 版本需要大于12

例行升级一下

sudo apt update
sudo apt upgrade

正式开始安装

# 进入根目录
cd ~

# 下载安装脚本
curl -sL https://deb.nodesource.com/setup_16.x -o nodesource_setup.sh

# 检查脚本(可跳过)
nano nodesource_setup.sh

# 升级Ubuntu自带的Node.js包
sudo bash nodesource_setup.sh

# 安装Node.js
sudo apt install nodejs

# 查看Node.js版本
node -v

下载Umami

# 从GitHub下载源代码
git clone https://github.com/mikecao/umami.git

# 进入umami根目录
cd umami

# 安装umami
npm install

创建数据库

[root@host] mysql -u root -p   
Enter password:******  # 登录后进入终端

// 新建一个名为umami的数据库
mysql> create DATABASE umami;

// 将表导入数据库
mysql -u username -p databasename < sql/schema.mysql.sql

username 一般是 rootdatabasename 就是你创建的空数据库的名字,具体例子是:

mysql -u root -p umami < sql/schema.mysql.sql

创建配置文件

umami 目录中新建一个.env 的配置文件,填入:

DATABASE_URL=(connection url)
HASH_SALT=(any random string)

其中,connection url 需要填入:

mysql://username:mypassword@localhost:3306/mydb

any random string 填入的是随机字符串,完整的例子是:

DATABASE_URL=mysql://username:mypassword@localhost:3306/umami
HASH_SALT=jN9LJjkxg_i..eXx4

如果想排除统计自己的IP地址,可以加上:

IGNORE_IP = XXX.XXX.XXX.XXX

更多变量设置请查看官方文档

编译

npm run build

启动程序

通常使用 npm start 就可以直接启动,但是退出 ssh 之后就直接停止运行了,所以需要用一些工具保证后台运行,官方文档中的推荐是:

npm install pm2 -g
cd umami
pm2 start npm --name umami -- start
pm2 startup
pm2 save

Nginx 反向代理

因为可以使用 ip:3000 直接访问,但是有使用域名的话还可以反代一下,这里以 Ng­inx 举例。在 server 段加入配置:

server {
  server_name umami.yourdomain.com;

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

更新 Umami

首先停止运行

pm2 stop umami

获取更新(In order to get the latest updates, first pull the changes from the git repository:)

git pull

Then install any new or updated dependencies:

npm install

重新编译

npm run build

Finally, start the application:

npm run start

开始使用

umami默认用户名为admin,密码为umami

PM2

PM2 工具可以用来守护进程(当然Systemctl也可以),PM2 能守护的东西很多,例如:Node.js、Python、PHP、Ruby、perl,还有消息队列程序、Shell脚本等等。

常用命令

pm2 list        # 查看所有运行中的应用
pm2 stop 0      # 停止 id 为 0 的应用
pm2 restart     # 重启
pm2 delete 0    # 删除 id 为 0 的应用
pm2 monit       # 显示每个应用程序的CPU和内存占用情况
pm2 show [name] # 显示应用程序的所有信息
pm2 save        # 保存当前应用列表
pm2 startup     # 创建开机自启动命令

参考

官方网站/文档: https://umami.is/docs/about

官方GitHub: https://github.com/mikecao/umami

How To Install Node.js on Ubuntu 20.04:
https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-20-04

APT BLOG: https://atpx.com/blog/build-umami-web-analytics/

来用 Umami 自建统计工具吧!: https://www.himiku.com/archives/umami.html