使用aapanel(宝塔国际版)+Docker+Ackee搭建一个网站统计

前言

最近想给网站配一个网站统计,看了很多都没找到心仪的,今天发现这个Ackee挺符合我的要求的,就是安装有点麻烦,所以就有了这篇教程

各位可以先体验一下DEMO,再看安不安装

Ackee的Github主页

以下操作均需要ROOT权限,请切换到ROOT用户

安装aapanel(宝塔面板国际版)

aapanel就是英文版宝塔面板,两者并无区别,你也可以按照本教程在宝塔面板上搭建

获取安装脚本

由于aapanel禁止了大陆IP访问(直接访问会跳转到”bt.cn”)需要魔法才能拿到安装脚本

不过你们就不需要了,我把安装脚本放在下面了,请按照你的系统复制

(为什么要用aapanel?因为aapanel不需要绑定手机号)

Centos

yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh aapanel

Ubuntu/Deepin

wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && sudo bash install.sh aapanel

Debian

wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh aapanel

连接服务器终端,安装

连接你的服务器后,把安装脚本粘贴上去

然后回车,应该会出现如下文字,照着一步一步来

+----------------------------------------------------------------------
| aaPanel 6.x FOR CentOS/Ubuntu/Debian
+----------------------------------------------------------------------
| Copyright © 2015-2099 BT-SOFT(http://www.aapanel.com) All rights reserved.
+----------------------------------------------------------------------
| The WebPanel URL will be http://SERVER_IP:7800 when installed.
+----------------------------------------------------------------------

Do you want to install aaPanel to the /www directory now?(y/n):y
#问你是否要安装,输入"y"并回车安装,或者"n"不安装
----------------------------------------------------------------------
If you choose to enable SSL (self-signed certificate), you will use https access panel after installation.
After logging in, you can go to the panel settings and change to Let's Encrypt certificate.
SSL will be automatically enabled in 10 seconds.
----------------------------------------------------------------------

Do you need to enable the panel SSl ? (yes/n):yes
#问你是否要启用面板SSL,输入"yes"并回车启用,或者"no"不启用

等待一段时间,输出如下文字代表安装成功

==================================================================
Congratulations! Installed successfully!
==================================================================
aaPanel Internet Address: https://x.x.x.x:7800/xiau.net
aaPanel Internal Address: https://x.x.x.x:7800/xiau.net
username: xiablog
password: xiablog
Warning:
If you cannot access the panel,
release the following port (7800|888|80|443|20|21) in the security group
==================================================================
Time consumed: 2 Minute!
xiau.net

复制下来保存,等下要用

登录aapanel

复制第一个aaPanel Internet Address:后面的地址,用浏览器打开

填写uesrname和Password后点击Login登录

第一次打开,它会问你需不需要安装必要程序,这里我只需要反向代理,所以我只选了Nginx,然后点击下面的one-click安装,现在aapanel就部署完了,接下来

安装Docker和Docker-compose

安装Docker

Docker官方安装脚本

wget -qO- get.docker.com | bash

连接你的服务器后,把安装脚本复制粘贴上去并回车,等待安装完成,完成后输入

docker -v 

查看是否安装成功,如果出现了类似于以下的文字

Docker version 24.0.6, build ed223bc

则安装成功

Docker开机自启动

systemctl enable docker

重启或者开机后自动运行服务

安装Docker-compose

Docker-compose安装脚本

先运行这个安装脚本

sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

然后再运行这个

sudo chmod +x /usr/local/bin/docker-compose

还有这个

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

等待执行完成,完成后输入

docker-compose version

查看是否安装成功,如果出现了类似于以下的文字

Docker Compose version v2.2.2

则安装成功

文件管理

我强烈建议专门创建一个文件夹,放置Docker数据以及配置文件,这样子不容易冲突,也容易备份和迁移

mkdir /root/docker-data

这段命令的意思是,在root目录下创建一个名为“docker-data”的文件夹,输入

cd /root/docker-data

进入“docker-data”文件夹

在创建一个ackee文件夹放置ackee数据

mkdir /root/docker-data/ackee

然后输入

cd /root/docker-data/ackee

进入“ackee”文件夹

部署Ackee

这里使用Docker-compose部署

配置“docker-compose.yml”文件

复制以下内容

version: "2"
services:
  ackee:
    image: electerious/ackee
    container_name: ackee
    restart: always
    ports:
      - "3000:3000"
    environment:
      - WAIT_HOSTS=mongo:27017
      - ACKEE_MONGODB=mongodb://mongo:27017/ackee
    env_file:
      - .env
    depends_on:
      - mongo
  mongo:
    image: mongo
    container_name: mongo
    restart: always
    volumes:
      - ./data:/data/db

输入

nano docker-compose.yml

开始编辑,把上面的内容粘贴进去,完事后按“Ctrl+X”,它可能会问你“Save modified buffer?”输入“y“继续,然后它可能还会问”File Name to Write: docker-compose.yml”回车保存退出

配置“.env”文件

输入

nano .env

开始编辑

ACKEE_USERNAME=用户名-请更改我
ACKEE_PASSWORD=密码-请更改我
ACKEE_TRACKER=跟踪脚本自定义名称-请更改我

把上面变量复制进”.env”文件内,再把=后面的值改成你需要的值,完事后按“Ctrl+X”,它可能会问你“Save modified buffer?”输入“y“继续,然后它可能还会问”File Name to Write: .env”回车保存退出

部署

输入

docker-compose up -d

开始部署,如果出现了类似于以下的文字

 ⠿ Container mongo        Started                                                                                       
 ⠿ Container ackee        Started

则安装成功

配置aapanel反向呆利,以及CORS跨域

登录aapanel,点击侧边栏的”Website”

再点击上面的“Add site”添加域名,然后在”Domain name”输入你的域名,然后点击“Submit”提交

然后点击你刚刚创建域名旁边的”Conf”打开配置选项

然后点击“Reverse proxy”打开反向呆利配置,然后再点击上面的”Add Reverse proxy“添加反向呆利配置,”Proxy name”随便填(但不能少于三个字符),”Target URL”填下面这段文字,不要开启缓存

http://127.0.0.1:3000

点击”Submit”添加,此时已经可以访问Ackee,但是还是不能正常使用,还需要配置CORS跨域

配置CORS跨域

点击你刚刚创建的反向呆利旁边的”Conf”打开配置文件

1.首先在”proxy_pass“和”proxy_set_header Host $host;“之间添加这三条代码

proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect      off;
proxy_buffering     off;

就像这样

    proxy_pass http://127.0.0.1:3000;
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    proxy_redirect      off;
    proxy_buffering     off;
    proxy_set_header Host $host;

2.然后在”add_header Cache-Control no-cache;“上面添加这七条代码

        add_header          Access-Control-Allow-Origin "$cors_header" always;
        add_header          Access-Control-Allow-Methods "GET, POST, PATCH, OPTIONS" always;
        add_header          Access-Control-Allow-Headers "Content-Type, Authorization, Time-Zone" always;
        add_header          Access-Control-Allow-Credentials "true" always;
        add_header          Access-Control-Max-Age "3600" always;
        add_header          Strict-Transport-Security "max-age=31536000" always;
        add_header          X-Frame-Options deny;

就像这样

    {
        add_header          Access-Control-Allow-Origin "$cors_header" always;
        add_header          Access-Control-Allow-Methods "GET, POST, PATCH, OPTIONS" always;
        add_header          Access-Control-Allow-Headers "Content-Type, Authorization, Time-Zone" always;
        add_header          Access-Control-Allow-Credentials "true" always;
        add_header          Access-Control-Max-Age "3600" always;
        add_header          Strict-Transport-Security "max-age=31536000" always;
        add_header          X-Frame-Options deny;
        add_header Cache-Control no-cache;
    }

然后点击”Save“保存退出

你可以使用这个网站https://securityheaders.com,来方便的查询CORS跨域是否配置成功

如果出现了类似于”access-control-allow“的文字,则配置成功

3.配置域名地图

退出后,点击”config“将这四条代码添加在server上面,请根据你的需求更改一级域名,二级域名和三级域名

map $http_origin $cors_header {
    default "";
    ~*^https://([^/]+\.)*(三级域名.二级域名|二级域名)\.一级域名$ $http_origin;
}

就像这样

然后点击“Save”保存退出

如上就是域名地图模式的配置了,使用域名地图模式的好处是安全,但是需要配置地图比较麻烦,如果你懒得搞或者有相关需求的话,可以使用通配符模式

$http_origin 通配符跨域模式

使用通配符不需要配置域名地图,就不需要做第3.步了,所有域名均可访问,但是官方文档说不建议这样子配置,因为所有域名均可访问

只要把第2.步中的”$cors_header“改成”$http_origin“就行

就像这样

add_header          Access-Control-Allow-Origin "$http_origin" always;

然后点击“Save”保存退出

开启HTTPS

点击旁边的“SSL”在”Domain name”勾选你的域名,然后点击“Apply”应用,还有我推荐你把HTTP跳转HTTPS打开,把那个”Force HTTPS“勾上就行

此时已经可以正常使用Ackee了

Ackee使用

添加网站

登入Ackee,输入“.env”文件的”Uesrname”“Password‘

点击主界面的”Settings再点击”New domain”,输入域名点击“Add”,然后点击你刚刚添加的域名,复制”Embed code“下面的统计代码放进你的网站里就可以用了

开启记录UA

默认情况下Ackee不会记录UA,在统计代码添加这个

data-ackee-opts='{ "detailed": true }'

选项就就会记录UA了

就像这样

<script async src="https://wz.wz/x.js" data-ackee-server="https://wz.wz" data-ackee-domain-id="12367-123-213" data-ackee-opts='{ "detailed": true }'></script>

完成

至此已经配置Ackee完成,这是我第二次写长文章,还是不太熟练,如有错误,欢迎指正。

我也用Ackee一段时间了,挺好用的,就不知道为啥不记录设备型号,也开启记录UA了

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇