简介:搭建一个网站之后,适当对网站进行统计是十分必要的。网站安装网站统计工具 Umami 是一个谷歌分析的一个简单、快速、注重隐私的替代品。作为一个开源的站点访问量监看程序,支持docker部署到自己的服务器上。相比百度等收费的网站信息统计分析,这种方式对于个人用户更高效便利。

历史攻略:

sanic:通过dockerfile部署

项目资料:

官方网站:https://umami.is/
官方文档:https://umami.is/docs/
开源地址:https://github.com/umami-software/umami

编辑:docker-compose.yaml 注意端口号。如果被占用则更换。

version: '3'
services:
  umami:
    image: ghcr.io/umami-software/umami:postgresql-latest
    ports:
      - "3002:3000"
    environment:
      DATABASE_URL: postgresql://umami:umami@db:5432/umami
      DATABASE_TYPE: postgresql
      HASH_SALT: replace-me-with-a-random-string
    depends_on:
      - db
    restart: always
  db:
    image: postgres:12-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: umami
    volumes:
      - ./sql/schema.postgresql.sql:/docker-entrypoint-initdb.d/schema.postgresql.sql:ro
      - umami-db-data:/var/lib/postgresql/data
    restart: always
volumes:
  umami-db-data:

安装:

git clone https://github.com/umami-software/umami.git
cd umami
docker pull docker.umami.dev/umami-software/umami:postgresql-latest
docker-compose up -d

安装结果:

(base) [root@VM-0-2-centos umami]# docker-compose up -d
Creating umami_db_1 ... done
Creating umami_umami_1 ... done
(base) [root@VM-0-2-centos umami]# docker ps -a
CONTAINER ID   IMAGE                                            COMMAND                  CREATED              STATUS                         PORTS                                                                                                                 NAMES
370076b3b7a4   ghcr.io/umami-software/umami:postgresql-latest   "docker-entrypoint.s…"   About a minute ago   Up About a minute              0.0.0.0:3002->3000/tcp, :::3002->3000/tcp

前置准备:(搭建网站 + 申请域名+反向代理)

搭建的项目目录结构:

# /path/to/SanicDocker
SanicDocker
├── requirements.txt
├── Dockerfile
└── server.py

案例源码:server.py

# -*- coding: utf-8 -*-
# time: 2023/3/10 0:22
# file: main.py
# 公众号: 玩转测试开发

from sanic import Sanic
from sanic.response import json, html

app = Sanic(__name__)


@app.get("/")
async def hello(request):
    title = "我的首页"
    message = f"""
        <!DOCTYPE html>
        <html lang="en">
            <head>
                <script async defer data-website-id="323452ebe2-e32e-4222-9733-1a293331349" src="http://111.112.113.114:3002/umami.js"></script>
                <meta charset="UTF-8">
                <title>我的主页</title>
            </head>
            <body>
                <h2>{title}</h2>
            </body>
        </html>
        """

    return html(message)


if __name__ == '__main__':
    app.run(host="0.0.0.0", port=8006)

requirements.txt

sanic==21.6.0

Dockerfile

FROM sanicframework/sanic:3.8-latest

WORKDIR /sanic

COPY . .

RUN pip install -r requirements.txt

EXPOSE 8006

CMD ["python", "server.py"]

构建镜像:

docker build -t my-sanic .

启动容器:

docker run --name test-sanic -p 8006:8006 -d my-sanic

配置反向代理:

参考同期 - docker应用:搭建反代神器Nginx Proxy Manager

给被统计的网站设置反向代理,打开网站。

访问管理后台:http://{ip}:3002/

默认账号:admin 默认密码:umami
设置语言为:简体中文
点击Settings->Add website,添加网站
复制Tracking Code,在网站代码中添加。
有访客之后就可以看到统计

设置简体中文:

图片

添加网站:被统计的网站必须为域名的形式。

图片

把以下代码放到你的网站的 部分来收集被统计网站数据:

<script async defer data-website-id="234234-e32e-23423-97c7-1a29f8bd5449" src="http://111.112.113.114:3002/umami.js"></script>

最终效果:

图片

图片

图片

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐