Docusaurus & Umami

原文链接https://www.castamerego.com/docs/Server/Docusaurus-UmamiUmami

umami 是一个开源自托管的网站分析工具,这里是本站的 umami 数据展示页面。其包括以下功能:

  • 网站流量统计
  • 网站访问来源、设备、页面、时间、地区、浏览器、操作系统统计
  • 自定义操作统计(比如想统计某个 button 的点击次数)
  • 各种集成好的数据展示

并且其本质为一个 Next.js 应用,所以可以很方便的集成到现有的 Next.js 项目中。也可以进行二次开发

安装

安装前,首先确保有以下环境:

  • Node.js 18.17 及以上
  • 数据库二选一
    • MySQL v8.0 及以上
    • PostgreSQL v12.14 及以上

在 Ubuntu 下安装 Node.js 可以参考 Node.js 在 Wsl 下安装 Node.js 可以参考 Node.js - Wsl 在 Linux 下安装 MySQL 可以参考 MySQL

安装 umami

安装 yarn
npm install -g yarn
拉取项目
git clone https://github.com/umami-software/umami.git
cd umami
yarn install

配置数据库

首先在项目根目录下创建一个 .env 文件,并添加如下内容:

  • MySQL
  • PostgreSQL

.env 文件中

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

其中:

  • username 数据库用户名,一般是 root
  • mypassword 数据库密码
  • localhost 数据库地址,一般是 localhost
  • 3306/5432 数据库端口
  • mydb 数据库名称

以上为 prisma 标准 DATABASE_URL,这里给出一个样例:

.env

DATABASE_URL=mysql://root:qwer1234@localhost:3306/my-website-umami

配置完成后,使用以下命令初始化 prisma

npx prisma migrate dev

Build 项目

使用 yarn build 命令构建项目

如果服务器内存不太够,可以在本地从头再来一遍,之后把 build 好的 .next 文件夹 scp 到云端即可

配置 nginx

在使用 Umami 的情况下,我们同时在服务器上部署了 Docusaurus 和 Umami,所以需要配置 nginx 进行反向代理,具体可以参考 Nginx Reverse Proxy 一篇

如果想要直接使用 https,在完成上一步的情况下,参考 SSL 一篇进行配置

总之,在配置完成后,nginx 配置文件如下:

/etc/nginx/conf.d/server.conf

...
server {
  listen 80;
  server_name umami.castamerego.com;

  rewrite ^(.*)$ https://$host$1;

  location / {
    proxy_pass http://localhost:3030;
  }
}

server {
  listen 443 ssl;
  server_name umami.castamerego.com;

  ssl_certificate       conf.d/cert/umami.castamerego.com.cer;
  ssl_certificate_key   conf.d/cert/umami.castamerego.com.key;

  ssl_session_cache     shared:SSL:1m;
  ssl_session_timeout   5m;

  ssl_ciphers           HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers on;

  location / {
    proxy_pass http://localhost:3030;
  }
}

这里是将域名 umami.castamerego.com 重定向到 3030 端口,那么我们后面运行项目时也要在 3030 端口运行,修改 package.json 文件如下:

package.json

  {
    ...
    "scripts": {
      "build": "npm-run-all check-env build-db check-db build-tracker build-geo build-app",
-     "start": "next start",
+     "start": "next start -p 3030"
    }
    ...
  }

运行项目

然后使用 yarn start 命令运行项目,就可以访问你的域名查看项目了,可以看到登录界面,就说明项目已经成功运行了

如果直接在服务器上部署,可能会遇到一些问题,比如在服务器管理处,是否开放了端口,有时候可能项目已经跑起来了,但没访问到,细心排查即可

配置 Umami

登录

初次进入登录界面,账号为 admin,密码为 umami。登录后,根据下图指示,修改密码

Reset PW

添加网站

然后根据下图指示,添加你的网站

Add Site

收集数据

点击刚刚新建好的网站中的编辑。在下图所示页面,可以看到一个跟踪代码,将其复制下来备用

Script

展示数据

根据下图指示,开启共享链接,开启后,其他人可以通过下面这个生成的链接查看你的网站数据

Share

配置 Docusaurus

接下来需要在 Docusaurus 中进行配置

创建插件

首先在 src 文件夹下创建 plugin 文件夹,然后创建 plugin-umami.js 文件,内容如下:

需要修改的有三个地方,一个是 href,换为自己的域名即可。src 和 data-website-id 则都是上一步收集数据中复制的跟踪代码的内容,放到对应位置即可

src/plugin/plugin-umami.js

async function umamiPlugin() {
  // 判断是否为开发环境
  const isDevelopment = "development" === process.env.NODE_ENV;

  return {
    name: "docusaurus-umami-plugin",

    injectHtmlTags() {
      if (isDevelopment) return;
      return {
        headTags: [
          {
            tagName: "link",
            attributes: {
              rel: "preconnect",
              // 换成你的域名
              href: "https://xxxx.com/",
            },
          },
          {
            tagName: "script",
            attributes: {
              defer: true,
              // 这里就是上一步复制的跟踪代码中的内容
              src: "https://xxxx.com/script.js",
              "data-website-id": "e993a914-0864-4b88-a53c-75e46dc174d7",
            },
          },
        ],
      };
    },
  };
}

module.exports = umamiPlugin;

注意,笔者在这里设置了只有在生产环境下才注入代码,读者在测试时,可以取消 isDevelopment 的判断,这样就可以在开发环境下看到数据了

注册插件

接下来就是在 docusaurus.config.js 中注册插件

docusaurus.config.js

  ...
  plugins: [
    require.resolve("docusaurus-plugin-image-zoom"),
    function myPlugin(context, options) {
      ...
    },
+   "./src/plugins/plugin-umami"
  ],
  ...

最后重新 build 一遍博客,随便点几个页面,查看你的 umami 网站,应该可以看到数据了

FAQ

获取不到国家(一直是 unknown)

由于我们使用了 nginx 进行反代理,所以 umami 获取的数据,都是被 nginx 重新包装过的。我们需要进行设置,才能获取访客真实的信息,看了网上很多内容,最终结果如下,在之前的基础上,umami 的 location 中添加如下内容即可

/etc/nginx/conf.d/server.conf

  server {
    listen 443 ssl;
    server_name umami.castamerego.com;

    ssl_certificate       conf.d/cert/umami.castamerego.com.cer;
    ssl_certificate_key   conf.d/cert/umami.castamerego.com.key;

    ssl_session_cache     shared:SSL:1m;
    ssl_session_timeout   5m;

    ssl_ciphers           HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
      proxy_pass http://localhost:3030;
+     proxy_buffering on;
+     proxy_http_version 1.1;
+     proxy_ssl_session_reuse off;
+     proxy_ssl_server_name on;
+     proxy_set_header X-Forwarded-Proto https;
+     proxy_set_header X-Real-IP $remote_addr;
+     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+     proxy_set_header X-Forwarded-Host  $host;
    }
  }
python+opencv简谱识别音频生成系统源码含GUI界面+详细运行教程+数据 一、项目简介 提取简谱中的音乐信息,依据识别到的信息生成midi文件。 Extract music information from musical scores and generate a midi file according to it. 二、项目运行环境 python=3.11.1 第三方库依赖 opencv-python=4.7.0.68 numpy=1.24.1 可以使用命令 pip install -r requirements.txt 来安装所需的第三方库。 三、项目运行步骤 3.1 命令行运行 运行main.py。 输入简谱路径:支持图片或文件夹,相对路径或绝对路径都可以。 输入简谱主音:它通常在第一页的左上角“1=”之后。 输入简谱速度:即每分钟拍数,同在左上角。 选择是否输出程序中间提示信息:请输入Y或N(不区分大小写,下同)。 选择匹配精度:请输入L或M或H,对应低/中/高精度,一般而言输入L即可。 选择使用的线程数:一般与CPU核数相同即可。虽然python的线程不是真正的多线程,但仍能起到加速作用。 估算字符上下间距:这与简谱中符号的密集程度有关,一般来说纵向符号越稀疏,这个值需要设置得越大,范围通常在1.0-2.5。 二值化算法:使用全局阈值则跳过该选项即可,或者也可输入OTSU、采用大津二值化算法。 设置全局阈值:如果上面选择全局阈值则需要手动设置全局阈值,对于.\test.txt中所提样例,使用全局阈值并在后面设置为160即可。 手动调整中间结果:若输入Y/y,则在识别简谱后会暂停代码,并生成一份txt文件,在其中展示识别结果,此时用户可以通过修改这份txt文件来更正识别结果。 如果选择文件夹的话,还可以选择所选文件夹中不需要识别的文件以排除干扰
<think>好的,用户想在宝塔面板中安装或配置Umami,我需要一步步来解答。首先,Umami是一个开源的网站流量分析工具,类似Google Analytics,但更注重隐私。宝塔面板是常用的服务器管理面板,简化了网站和应用的部署。 首先,用户需要确保服务器满足Umami的要求。根据官方文档,Umami需要Node.js环境、PostgreSQL或MySQL数据库。所以,我得指导用户安装这些依赖。宝塔面板里安装Node.js比较方便,可以通过软件商店或者命令行。可能还需要PM2来管理Node进程。 接下来是数据库的配置。用户需要在宝塔面板里创建一个新的数据库,记下用户名、密码和数据库名,这些在安装Umami时会用到。然后,下载Umami的源码,可以通过Git克隆或者直接下载ZIP包。解压后,需要修改配置文件,比如.env文件,填写数据库连接信息。 然后,执行npm安装依赖,构建项目,用PM2启动服务。之后,配置反向代理,让用户可以通过域名访问。宝塔面板的网站设置里添加反向代理,目标地址是本地端口,比如3000。最后,可能需要设置防火墙规则,开放端口,以及配置SSL证书启用HTTPS。 可能遇到的问题包括端口冲突、依赖安装失败、数据库连接错误等,需要提醒用户检查日志,确认步骤是否正确。另外,Umami更新后可能需要重新构建,所以建议用户定期维护。 现在,需要把这些步骤详细但清晰地写出来,确保用户能一步步操作。同时,注意使用正确的格式,比如代码块用反引号,行内变量用$符号。最后生成相关问题,帮助用户进一步了解。</think>### 在宝塔面板中安装Umami的步骤 #### 1. **安装依赖环境** - **Node.js**: 通过宝塔面板的`软件商店`安装或使用命令: ```bash curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash - sudo apt install -y nodejs ``` - **PM2进程管理**: ```bash npm install pm2 -g ``` - **数据库**: 在宝塔面板的`数据库`模块中创建PostgreSQL或MySQL数据库,记录$数据库名$、$用户名$、$密码$[^1]。 #### 2. **部署Umami源码** - 通过宝塔面板的`网站`模块新建站点(例如`umami.yourdomain.com`)。 - 进入站点根目录,克隆Umami仓库: ```bash git clone https://github.com/umami-software/umami.git ``` - 复制配置文件并修改数据库连接: ```bash cd umami cp .env.example .env # 编辑.env文件,填写数据库信息(DB_TYPE、DB_HOST、DB_NAME等) ``` #### 3. **构建与启动服务** - 安装依赖并构建: ```bash npm install npm run build ``` - 通过PM2启动: ```bash pm2 start npm --name "umami" -- start ``` #### 4. **配置反向代理** - 在宝塔面板的`网站`设置中,添加反向代理: - 目标URL: `http://127.0.0.1:3000`(默认端口为3000) - 可选:通过`SSL`模块配置HTTPS证书。 #### 5. **初始化Umami** - 访问`https://umami.yourdomain.com`,默认账号为`admin`,密码为`umami`,登录后需立即修改密码[^2]。 --- ### 常见问题排查 - **端口冲突**: 检查3000端口是否被占用,可通过`lsof -i:3000`定位进程。 - **数据库连接失败**: 确认`.env`文件中的数据库信息与宝塔面板创建的配置一致。 - **依赖安装错误**: 尝试清理缓存后重装: ```bash rm -rf node_modules npm cache clean --force npm install ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值