centos安装mongodb

以centos安装mongodb4.2为例

添加yum源

创建repo/etc/yum.repos.d/mongodb-org-4.2.repo,内容为

1
2
3
4
5
6
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7Server/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

安装mongodb

1
sudo yum install -y mongodb-org

启动mongodb

1
sudo systemctl start mongod

开机运行mongodb

1
sudo systemctl enable mongod

创建用户

1
2
3
mongo 
use admin
db.createUser({user: 'root', pwd: 'root', roles: ['readWriteAnyDatabase']})

修改配置开启认证

1
2
3
4
vi /etc/mongod.conf
# 添加
security:
authorization: enabled

验证登录

1
2
mongosh -u root --authenticationDatabase admin
# 输入密码

jenkins远程触发构建

jenkins远程触发构建的方法介绍

方式一

设置API Token,其它Basic Auth调用任务构建,此方式适用于脚本调用和代码调用

设置API Token

指定用户->用户页面->设置->API Token

curl调用

1
2
3
4
# jobName就是点进jenkins任务页面,地址栏url里的
curl http://hostname/jobName/build -u userName:APIToken
# 带参数
curl http://hostname/jobName/buildWithParameters -u userName:APIToken

方式二

使用Build Authorization Token Root插件,适合webhook之类的

  • 安装Build Authorization Token Root插件
  • 设置API Token
  • job页面,勾选“触发远程构建 (例如,使用脚本)”,身份验证令牌中填入API Token

直接浏览器输入测试:

1
2
http://hostname/buildByToken/build?job=jobName&token=APIToken
http://hostname/buildByToken/buildWithParameters?job=jobName&token=APIToken

elasticsearch分页大于10000条数据限制修改

elasticsearch采用from+size分页时,数据量大于1W会报错

1
Result window is too large, from + size must be less than or equal to: [10000] but was [100001]

解决方法

1
2
3
4
# 所有索引
curl -X PUT -H 'Content-Type: application/json' 172.24.0.171:9200/_all/_settings -d '{ "index.max_result_window" :"100000"}'
# 指定product_order索引
curl -X PUT -H 'Content-Type: application/json' 172.24.0.171:9200/product_order/_settings -d '{ "index.max_result_window" :"100000"}'

实现网站变灰

css实现网站变灰

1
2
3
4
5
6
7
8
9
10
html {
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter: grayscale(100%);
-webkit-filter: gray;
filter: gray;
filter: progid:dximagetransform.microsoft.basicimage(grayscale=1) /*ie*/
}

springboot跨域设置

springboot提供了两种跨域方式

  • 实现WebMvcConfigurer接口的addCorsMappings方法
  • FilterRegistrationBean添加CorsFilter

方式一

1
2
3
4
5
6
7
8
9
10
11
12
13
@Configuration
public class WebConfig implements WebMvcConfigurer {

@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("*")
.allowCredentials(true)
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.maxAge(3600);
}

}

方式二

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Configuration
public class WebConfig {

@Bean
public FilterRegistrationBean<CorsFilter> corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOriginPattern("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>(new CorsFilter(source));
bean.setName("corsFilter");
return bean;
}

}

区别

分使用场景

假如你用了servletfilter,并filter前提返回了请求结果,用FilterRegistrationBean方式才行,因为此时请求还没到WebMvcConfigurer处理就已经返回了。

没这种情况两者行为一样。

方式三

跨域无非就是在header里写入控制跨域相关的字段信息,自己实现Filter或者Interceptor就行了。

wsl2和Proxifier兼容问题

使用过Proxifier后,发现wsl2出问题了,打开子系统时提示参考的对象类型不支持尝试的操作。,搜了下网上的解决方法是通过下载NoLsp.exe解决

问题链接:https://github.com/microsoft/WSL/issues/4177#issuecomment-597736482,提供的用不了

这个里的可以用,https://github.com/dyingsu/nolsp

下载之后,管理员打开cmd执行命令

1
NoLsp.exe C:\windows\system32\wsl.exe

方法二

管理员身份在CMD执行

1
netsh winsock reset

清理过期日志文件

清理过期日志文件的方法

用find+exec

find找出指定时间的文件,配合exec执行删除

1
2
3
# -mtime 指定文件修改时间
# 如清理2天前的
find log_dir -mtime +2 -type f -name "*.log" -exec rm -rf {} \;

用tmpwatch

使用tmpwatch清理目录,文件最后一次被访问的时间,单位是小时;这个命令只适全整个目录下都是日志的情况

1
2
# 如清理2天前的
tmpwatch -mdfv 48 log_dir

如何查询指定时间范围内的日志

搞代码的都离不开通过查看日志处理问题;服务器上记录的日志都比较大,不会把整个日志文件拿来分析,通常会截取时间范围内的日志来分析问题,介绍几种查询时间范围日志方法。

处理文件肯定是离不开linux三剑客grep、sed、awk的。

演示截取2点到9点的日志

测试日志文件test.log,模拟所有2点到11点日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{"timestamp":"2022-09-27T02:12:59+08:00","level":"debug"}
{"timestamp":"2022-09-27T02:14:42+08:00","level":"debug"}
{"timestamp":"2022-09-27T02:41:03+08:00","level":"debug"}
{"timestamp":"2022-09-27T02:45:59+08:00","level":"debug"}
{"timestamp":"2022-09-27T04:35:31+08:00","level":"debug"}
{"timestamp":"2022-09-27T04:35:31+08:00","level":"error"}
{"timestamp":"2022-09-27T04:35:31+08:00","level":"debug"}
{"timestamp":"2022-09-27T04:38:40+08:00","level":"debug"}
{"timestamp":"2022-09-27T04:49:55+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:21:04+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:21:04+08:00","level":"error"}
{"timestamp":"2022-09-27T09:21:04+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:21:04+08:00","level":"error"}
{"timestamp":"2022-09-27T09:21:04+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:21:19+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:30:30+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:30:35+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:33:46+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:37:02+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:29:54+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:29:59+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:30:02+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:30:03+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:30:43+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:30:44+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:30:45+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:30:46+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:30:48+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:56:22+08:00","level":"debug"}
{"timestamp":"2022-09-27T11:09:36+08:00","level":"debug"}
{"timestamp":"2022-09-27T11:09:41+08:00","level":"debug"}

正则方式

grep不支持范围,awk和sed支持范围,三个都支持正则匹配

git统计提交记录中修改过的文件

使用git的log命令

1
2
3
# start_commit_id 起始提交ID
# end_commit_id 结束提交ID
git log --author=abc --name-only --pretty= start_commit_id..end_commit_id

只显示文件pretty必须为空

1
2
# 显示commit_id和文件
git log --author=abc --name-only --pretty=oneline start_commit_id..end_commit_id