几年前网站统计工具遍地都是,例如Google Analytics、百度统计、CNZZ、51啦、腾讯分析等都是免费开放给个人站长使用的,现在的情况是网站统计工具要么就是不再提供免费服务,要么就是对个人用户砍掉统计功能,停止「今日」与「实时在线」类数据指标的计算等。
对于国内的个人站长来说,网站统计工具可供选择的就是谷歌统计和百度统计了,前者经常打不开影响网页的加载速度,所以很多的站长选择了百度统计。其实,除了选择这些大厂的统计服务外,我们还可以自建网站统计工具,就像图床、密码存储、网盘等我们都可以自建服务。
这篇文章就来介绍一下Umami的安装与使用教程,Umami 是一款简单易用、自托管的开源网站访问流量统计分析工具,Umami 不使用 Cookie,不跟踪用户,且所有收集的数据都会匿名化处理,符合 GDPR 政策,资源占用很低,虽然功能简单,但分析的数据内容很丰富。
一台VPS主机。Umami对于服务器配置要求不高,一般来说200M的小内存VPS主机就可以跑Umami了,选购便宜VPS主机参考:VPS主机排行榜单。
配置好Docker环境。Umami虽然安装方式有多样,但是推荐Docker安装,几分钟就可以完成,相当方便。Docker安装推荐使用一键安装方法,一个命令就可以搞定:Docker 和 Docker Compose 一键安装脚本 。
执行以下命令将Umami项目下载到本地:
git clone https://github.com/mikecao/umami.git
cd umami
利用SFTP进入到umami文件夹里,找到项目内自带的compose文件:
用记事本打开,大部分内容不需要修改,改一下数据库的密码即可。
进入到umami文件夹,然后执行安装命令。
#cd umami
docker-compose up -d

安装完成后,打开:IP:3000 就可以看到umami页面了

Umami上面的安装已经完成了,但是只能使用IP+端口访问,我们这里就要利用到Nginx反向绑定域名的方法来实现Umami域名访问了。代码如下:
location / {
proxy_pass http://127.0.0.1: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;
}
如果你用的是LNMP或者Oneinstack一键安装包,找到Nginx配置文件,然后添加以上反向绑定域名的代码即可。配置方法和Bitwarden自建密码存储系统图文教程绑定域名反代类似,主要调整你的反代部分,示例如下:
server
{
listen 443 ssl http2;
#listen [::]:443 ssl http2;
server_name tmth.wzfou.me ;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/wzfou.com;
location / {
proxy_pass http://127.0.0.1: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;
}
ssl_certificate /usr/local/nginx/conf/ssl/tmth.wzfou.me/fullchain.cer;
ssl_certificate_key /usr/local/nginx/conf/ssl/tmth.wzfou.me/tmth.wzfou.me.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
ssl_session_cache builtin:1000 shared:SSL:10m;
# openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;
access_log /home/wwwlogs/tmth.wzfou.me.log;
}
如果你用的是宝塔面板,那就更简单了,直接在宝塔面板的网站管理设置添加:IP:3000 。(详情请看宝塔面板教程)

现在使用域名就可以访问你的Umami了,用默认的管理员账号:admin 密码:umami 就可以登录了。
登录Umami,可以先设置一下密码、语言、时区等,Umami支持中文。
Umami后台可以直接添加你想要统计的网站域名。

然后Umami会给出一段代码,将这个代码放在你的网站所有页面下。

Umami的统计功能并不多,但是很实用,例如基本的来源国家,来源域名,使用的浏览器、系统、设备,访问的网页这些都有。

通过Umami可以查看访问用户来自哪里。

Umami的地域区分为国家。

Umami的统计功能不多但是很实用,基本上可以满足我们日常小站的数据统计需要了。Umami安装简单,尤其是支持Docker,你可以将它安装在你的同网站的服务器上,占用内存小
在Ruby中可以使用哪些替代方法来ping一个ip地址?标准库“ping”库的功能似乎非常有限。我对在这里滚动我自己的代码不感兴趣。有没有好的gem?我应该接受它并忍受它吗?(我在Linux上使用Ruby1.8.6编写代码) 最佳答案 net-ping值得一看。它允许TCPping(如标准rubyping),但也允许UDP、HTTP和ICMPping。ICMPping需要root权限,但其他则不需要。 关于ruby-Pingruby网站?,我们在StackOverflow上找到一个类
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐
我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功
我在思考流量控制的最佳实践。我应该走哪条路?1)不要检查任何东西并让程序失败(更清晰的代码,自然的错误消息):defself.fetch(feed_id)feed=Feed.find(feed_id)feed.fetchend2)通过返回nil静默失败(但是,“CleanCode”说,你永远不应该返回null):defself.fetch(feed_id)returnunlessfeed_idfeed=Feed.find(feed_id)returnunlessfeedfeed.fetchend3)抛出异常(因为不按id查找feed是异常的):defself.fetch(feed_id
我希望访问我机器上的所有HTTP流量(我的Windows机器-不是服务器)。据我了解,拥有一个本地代理是所有流量路线的必经之路。我一直在谷歌搜索但未能找到任何资源(关于Ruby)来帮助我。非常感谢任何提示或链接。 最佳答案 WEBrick中有一个HTTP代理(Rubystdlib的一部分)和here's一个实现示例。如果你喜欢生活在边缘,还有em-proxy伊利亚·格里戈里克。这postIlya暗示它似乎确实需要一些调整来解决您的问题。 关于ruby-如何捕获所有HTTP流量(本地代理)
我正在尝试上传文件。一个简单的hello.txt。我正在关注文档,但无法将其上传到我的存储桶。#STARTAWSCLIENTs3=Aws::S3::Resource.newbucket=s3.bucket(BUCKET_NAME)begins3.buckets[BUCKET_NAME].objects[KEY].write(:file=>FILE_NAME)puts"Uploadingfile#{FILE_NAME}tobucket#{BUCKET_NAME}."bucket.objects.eachdo|obj|puts"#{obj.key}=>#{obj.etag}"endresc
我需要从站点抓取数据,但它需要我先登录。我一直在使用hpricot成功地抓取其他网站,但我是使用mechanize的新手,我真的对如何使用它感到困惑。我看到这个例子经常被引用:require'rubygems'require'mechanize'a=Mechanize.newa.get('http://rubyforge.org/')do|page|#Clicktheloginlinklogin_page=a.click(page.link_with(:text=>/LogIn/))#Submittheloginformmy_page=login_page.form_with(:act