「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战」。
前言
项目经理给了一个需求,写一个分析网站忙闲访问的分析工具要多久。程序员们满脸问号,接到这个需求的小前端默默去查了一下总觉得有类似的应用,发现百度指数可以,但是收钱。花钱这种事情小前端自己肯定是不行的,于是祭出了神器,大github!,翻到了一个umami的项目,目标指路。
看起来不错,
找了个服务器开搞!
项目部署
拉取项目
此时需要在服务器找个自己喜欢的风水宝地将项目拉取下来,对应操作
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
- 查看所有数据库
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~