在使用yum install的时候,偶尔会碰见这样的错误:Couldn’t open file /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

这是因为在你的 /etc/yum.repos.d 目录下有关于yum repository的配置文件中列有如下的GPG key:

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

这个配置告诉YUM,这个repository的GPG key存在于磁盘上。而当YUM在路径 /etc/pki/rpm-gpg 下找不到这个GPG key的时候,就会报如上的错误了。

解决方案:

cd /etc/pki/rpm-gpg
wget https://archive.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7

然后再次运行 yum 命令就可以成功了。当然,也有些包是需要先安装epel之后才能装上的。安装epel的方法是: yum install -y epel-release

现在被恶意请求了,把恶意请求单独打到一个日志文件,然后提取客户端IP,去重,然后封掉这些IP

创建文件

vim  filterIp.sh

文件内容

#! /bin/bash
sed 's/src:\([0-9\.]\+\).*/\1/g' $1 | sort -n | uniq

用这个脚本处理日志文件, 提取到客户端IP,这些IP是排序,去重了的

chmod a+x filterIp.sh
./filterIp.sh xxx.log

我的 xxx.log 的日志格式是这样的,如果保存日志不一样,则需要改一下 filterIp.sh 中的sed处理规则

src:60.173.147.155 cdn:58.215.115.71 - [16/Jun/2021:10:02:01 +0800] "GET /xx.html?xx3 HTTP/1.1" 403 564 "xx" "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)"

镜像配置:

Go 版本要求
建议您使用 Go 1.13 及以上版本, 可以在这里下载最新的 Go 稳定版本。

配置 Goproxy 环境变量Bash (Linux or macOS)

export GOPROXY=https://goproxy.io,direct

PowerShell (Windows)

$env:GOPROXY = "https://goproxy.io,direct"

使配置长久生效 (推荐)
上面的配置步骤只会当次终端内生效,如何长久生效呢,这样就不用每次都去配置环境变量了。

Mac/Linux

# 设置你的 bash 环境变量
echo "export GOPROXY=https://goproxy.io,direct" >> ~/.profile && source ~/.profile

如果你的终端是 zsh,使用以下命令

echo "export GOPROXY=https://goproxy.io,direct" >> ~/.zshrc && source ~/.zshrc

Windows

  1. 右键 我的电脑 -> 属性 -> 高级系统设置 -> 环境变量
  2. 在 “[你的用户名]的用户变量” 中点击 ”新建“ 按钮
  3. 在 “变量名” 输入框并新增 “GOPROXY”
  4. 在对应的 “变量值” 输入框中新增 “https://goproxy.io,direct”
  5. 最后点击 “确定” 按钮保存设置

参考官方网站:https://goproxy.io/zh/docs/getting-started.html

今天遇到一个神奇的现象

项目使用yii1.1版本,遇到莫名的异常结束,200状态,内容为空

报表页面,ajax请求数据,时而正常返回数据,时而异常

无任何报错信息,php-fpm也无报错,PHP 7.0版本,PHP报错级别已设置为E_ALL,各种方法都尝试了,找不到原因

本地同请求测试一切正常,生产环境异常

一天时间已经过去,无解

第2天,决定在代码中打断点试的,一步一步排查

最终确定原因:

在报表数据查询后处理过程中,使用了4层循环,加上数据查了4个月的日报表,数据量并不高

循环中,把PHP设置的内存用尽,导致异常结束

配置为128M,代码中没有修改内存大小

解决方法:在代码前使用 ini_set('memory_limit', '256M'); 设置内存解决;

难排查的原因在于,找不到任何报错信息。。。。。

对了,报错信息是用Yii::log()方法输出到文件中,tail -f 查看文件的内容来找,可能是这个原因,由于PHP内存已经用尽,后面代码执行不了,所以没有输出内容到文件?(还有个疑点,就是控制器都没执行?这不应该啊)

记录一下