从0到一使用umami创建一个自己的网站分析工具

751 阅读1分钟

「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战」。

前言

项目经理给了一个需求,写一个分析网站忙闲访问的分析工具要多久。程序员们满脸问号,接到这个需求的小前端默默去查了一下总觉得有类似的应用,发现百度指数可以,但是收钱。花钱这种事情小前端自己肯定是不行的,于是祭出了神器,大github!,翻到了一个umami的项目,目标指路

看起来不错,

image.png

找了个服务器开搞!

项目部署

拉取项目

此时需要在服务器找个自己喜欢的风水宝地将项目拉取下来,对应操作

git clone https://github.com/mikecao/umami.git

有数据库和node环境的将这个模块看完就可以结束了

首先,需要先在根目录增加一个.env文件写入Mysql的数据库连接配置以及创建配置

// 先运行命令
mysql -u username -p databasename < sql/schema.mysql.sql

// 再创建文件.env
DATABASE_URL=mysql://username:mypassword@localhost:3306/mydb
HASH_SALT=any random string

完成后开始进行项目运行操作


cd umami

npm install

npm run build

npm run start

此时项目会被运行起来。

这时候直接将终端断开,我们会发现已经启动起来的服务没办法进入了,如果我们需要应用长期挂载在服务器运行,这时我们需要

nohup npm run start

MySql踩坑

不知道什么情况,我司测试服并没有安装mysql,实不相瞒,目前作者还不会docker,因此选择了安装MySql来进行了项目部署。

MySql安装

sudo apt-get install mysql-server

安装完成后

项目初始化

sudo mysql_secure_installation
配置项设置

1、 是否进行密码强校验(N 不校验)


VALIDATE PASSWORD PLUGIN can be used to test passwords...
Press y|Y for Yes, any other key for No: N (选择N ,不会进行密码的强校验)

2、设置根账号密码

Please set the password for root here...
New password: (输入密码)
Re-enter new password: (重复输入)

3、是否删除匿名用户(Y 删除)

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y (选择Y,删除匿名用户)

4、是否允许root远程连接(N 允许)

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network...
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : N (选择N,允许root远程连接)

5、是否删除test数据库(N 不删除)

By default, MySQL comes with a database named 'test' that
anyone can access...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : N (选择N,不删除test数据库)

6、修改权限是否立即生效(Y 立即生效)

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y (选择Y,修改权限立即生效)

配置完成后

命令行进行简单的数据库访问

1、连接进入数据库

sudo mysql -u root -p
  1. 查看所有数据库
show databases

3、创建数据库

create database database-name;

4、使用创建的数据库

use database-name;

5、创建用户

// 切换数据库到mysql

create user 'test'@'localhost' identified by '123456';

localhost可以i换成%,意思是所有机器都可以使用这个账号访问,也可以换成对应的ip地址

6、 查看所有用户

--查询用户 
select user,host from mysql.user;

7、修改用户权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'admin123' WITH GRANT OPTION; flush privileges;
其他问题

1、数据库报连接错误过多,可以使用下面两种方案


// 设置最高错误值为一个很高的值

show global variables like '%max_connect_errors%';

// 或者采用刷新方案

mysqladmin -uroot -p -h192.168.1.1 flush-hosts 

// 或者 

mysql>flush hosts;

2、报错提示修改密码不符合要求


mysql> set global validate_password_policy=0; // 设置安全策略 

mysql> SHOW VARIABLES LIKE 'validate_password%'; // 查看安全设置项 

mysql> set global validate_password_length=1; // 密码长度默认8,设置为1 

mysql> alter user 'root'@'localhost' identified by '123456'; // 修改密码

Node安排

为了方便node进行版本切换,选用了nvm来进行安装


curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

//拉取完之后会有个配置项的提示需要将对应配置项设置进配置文件
// 以下为参考
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

然后通过nvm拉取对应node来进行操作。

项目运行

所有配置完成之后,callBack第一个模块。

happy ending~