我们在建立网站之后,网站安装网站统计工具还蛮重要的,本文记录 Umami 网站统计工具的安装使用。
谷歌分析
的一个简单、快速、注重隐私的替代品。Nodejs
、npm
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y npm
git clone https://github.com/mikecao/umami.git
cd umami
npm install
先创建一个空数据库,比如umami
,然后在umami
目录中输入:
mysql -u username -p databasename < sql/schema.mysql.sql
username
一般是root
,databasename
就是你创建的空数据库的名字,具体例子是:
mysql -u root -p umami < sql/schema.mysql.sql
你也可以在 phpmyadmin 中手动导入到空数据库中。
在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/mydb
HASH_SALT=123456789
注意去掉括号。
连接 url 格式如下:
postgresql://username:mypassword@localhost:5432/mydb
mysql://username:mypassword@localhost:3306/mydb
npm run build
通常使用npm start
就可以直接启动,但是退出ssh
之后就直接停止运行了,所以需要用一些工具保证后台运行,官方文档中的推荐是:
npm install pm2 -g
cd umami
pm2 start npm --name umami -- start
pm2 startup
pm2 save
这样就可以用了。
因为可以使用ip:3000
直接访问,但是有使用域名的话还可以反代一下,这里以Nginx举例。在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;
}
}
首先停止运行
pm2 stop umami
获取更新
git pull
可能会遇到获取更新失败。我也不知道为啥我这每次都失败,可以用这个命令git reset --hard
,然后再执行上一步git pull
然后重新编译
npm install
npm run build
重新启动
pm2 restart umami
页尾版本号有发生变化,那就是更新成功了。
更简单的方式是使用 Docker 一键启动,在源码根目录下面有 docker-compose 的配置,默认配置构建 umami 容器并启动 Postgres 数据库
sudo apt install docker-compose
docker-compose.yml
openssl rand -base64 32
docker-compose.yml
配置文件的 HASH_SALT 中,替换 placeholderHASH_SALT: replace-me-with-a-random-string
ports:
- "127.0.0.1:3000:3000"
docker-compose up
curl localhost:3000
>>>
<!DOCTYPE html><html><head><meta charSet="utf-8"/><link rel="icon" href="/favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/><link rel="manifest" href="/site.webmanifest"/><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"/><meta name="msapplication-TileColor" content="#da532c"/><meta name="theme-color" content="#2f2f2f" media="(prefers-color-scheme: dark)"/><meta name="viewport" content="width=device-width, initial-scale=1"/><meta name="next-head-count" content="10"/><link rel="preload" href="/_next/static/css/f84aa753510ba35d.css" as="style"/><link rel="stylesheet" href="/_next/static/css/f84aa753510ba35d.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"></script><script src="/_next/static/chunks/webpack-cb7634a8b6194820.js" defer=""></script><script src="/_next/static/chunks/framework-5f4595e5518b5600.js" defer=""></script><script src="/_next/static/chunks/main-01df828e572375b9.js" defer=""></script><script src="/_next/static/chunks/pages/_app-dbfbaad68eee94b0.js" defer=""></script><script src="/_next/static/chunks/pages/index-308d314158ae680c.js" defer=""></script><script src="/_next/static/s9hhsY5U-8n3fCxv8kHFS/_buildManifest.js" defer=""></script><script src="/_next/static/s9hhsY5U-8n3fCxv8kHFS/_ssgManifest.js" defer=""></script><script src="/_next/static/s9hhsY5U-8n3fCxv8kHFS/_middlewareManifest.js" defer=""></script></head><body><div id="__next" data-reactroot=""><div class="container" dir="ltr"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"s9hhsY5U-8n3fCxv8kHFS","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>(base)
先不急使用 umami 做统计,先完成最后一步配置
网上有前辈用宝塔直接反向代理,我的宝塔域名被别的占了,又不敢装新的 Nginx (害怕冲突),稳妥起见使用了docker
/share/ssl
docker run --name=nginx -p 9443:443 -d --restart=always -v /share/ssl:/ssl nginx
server_private.key, server.crt
文件,放在 /share/ssl
文件夹中docker exec -it nginx bash
/etc/nginx/conf.d
文件夹中创建配置文件 test.conf
server_name
填自己的域名server {
listen 443 ssl;
listen [::]:443 ssl;
# server_name localhost;
ssl_certificate /ssl/server.crt;
ssl_certificate_key /ssl/server.key;
location / {
proxy_set_header X-FORWARDED-FOR $remote_addr;
proxy_set_header X-FORWARDED-PROTO $scheme;
proxy_set_header Host $http_host;
proxy_pass http://101.43.39.125:3000;
}
}
service nginx reloadEBNF
nginx
添加站点
,配置名称和域名,想要秀一下的勾选共享链接
如此我们的站点监控端就算顺利完成了,点击该站点监控,可以发现访问人数并不会增加,这是因为我们需要在我们监控的站点中插入反馈信息的代码
共享链接可以将站点统计信息实时共享给匿名用户查看