CentosYUM源报错 Invalid release/repo/arch combination

记录线上Centos6系统服务器,yum报错问题

问题:
  • 线上6版本服务器突发yum执行报错,“Invalid release/repo/arch combination/”
处理过程:

由于Centos6已于今年11月停止支持,这是官方源站下的readme

This directory (and version of CentOS) is deprecated. Please see this FAQ
concerning the CentOS release scheme:

https://wiki.centos.org/FAQ/General

Please keep in mind that 6.0, 6.1, 6.2, 6.3, 6.4 , 6.5, 6.6, 6.7, 6.8 , 6.9 and 6.10 no longer get any updates, nor
any security fix's.
The whole CentOS 6 is *dead* and *shouldn't* be used anywhere at *all*

由于centos6停止支持,官方把源移到了https://vault.centos.org/6.8/下, 所以会报错。

解决办法:

原repo

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirrorlist.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

更改后:

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://vault.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
附repo配置
# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://vault.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#released updates 
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=http://vault.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=http://vault.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

# vim /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
baseurl=http://archives.fedoraproject.org/pub/archive/epel/6.2017-11-07/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
baseurl=https://archives.fedoraproject.org/pub/epel/6/$basearch/debug
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 6 - $basearch - Source
baseurl=https://archives.fedoraproject.org/pub/epel/6/SRPMS
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1

由于后续centos会变为redhat的上游版本,后续可以支持Rocky Linux

通过一个时间戳计算当天0点时间

公式为:NowTime – (NowTime + 8 * 3600) % 86400

思路为:现在时间 – 今天的秒数。

因为NowTime % 86400是0时区当天的秒数,那+8时区应该是NowTime % 86400 + 8 * 3600,由于这个数字可能大于86400,所以用(NowTime % 86400 + 8 * 3600) % 86400,等价于(NowTime + 8 * 3600) % 86400。

centos7 tmp目录出现systemd-private 类似文件夹

  1. 解决向tmp 目录创建文件 ,系统转存到其他目录

症状
/tmp/systemd-private-9301532e5ff749e388f365a25f51e9ea-mariadb.service-zvKlrX/tmp/
/tmp/systemd-private-9301532e5ff749e388f365a25f51e9ea-httpd.service-HRR15v/

原因
为目录名称中提到的服务启用了安全Tmp系统功能。

解决方案
禁用服务的安全Tmp SystemD
//查看 使用了 tmp SystemD 的服务
grep -R PrivateTmp /etc/systemd/
//以 http 为例
vim /etc/systemd/system/multi-user.target.wants/httpd.service
//注意:http2.0在下面路径
vim /usr/lib/systemd/system/httpd.service
//将 PrivateTmp=true 改为
PrivateTmp=false

//重启  Tmp SystemD
systemctl daemon-reload
//重启 httpd
systemctl restart  httpd.service

centos7+nginx 1.9.0+php-fpm+phpstorm+xdebug+vmware开发环境

1.php-fpm

yum install php-fpm

默认配置在本地9000端口监听

service php-fpm restart启动

2.nginx 1.9.0

需先安装gcc zlib openssl pcre(yum install 即可,注意版本可能需要devel版的)

wget http://nginx.org/download/nginx-1.9.0.tar.gz

tar -zxvf nginx-1.9.0.tar.gz

cd nginx-1.9.0进入解压后的目录

执行./configure

make && make install 编译安装

指定配置文件 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

启动 /usr/local/nginx/sbin/nginx -s reload

3.xdebug

同样是编译安装

wget http://xdebug.org/files/xdebug-2.3.2.tgz

解压->执行./configure->make && make install

vim /etc/php.ini

末尾加入

zend_extension=”/lib64/php/modules/xdebug.so”
xdebug.remote_enable = On
xdebug.remote_handler = dbgp
xdebug.remote_port = 9001  #防止和php-fpm的9000冲突
xdebug.remote_connect_back = 1 #并不限制接收调试信息的机器的地址,当然也可以指定xdebug.remote_host= 192.168.xxx.xxx
xdebug.idekey = PHPSTORM
xdebug.remote_log = /root/xdebug.log

由于linux跑在vmware里,而且通过NAT方式联网,因此需要用iptables做转发

4.phpstorm里面配置

5.遇到一些问题

主要是权限相关,首先要关掉selinux,在不关selinux的情况下如何允许将网站根目录配置到/usr/local/nginx/之外的地方暂时还没研究。如果把网站目录部署到/root目录下,需要更改nginx.conf user root 这样还不行,还需要修改php-fpm的权限, 在/etc/php-fpm.d/www.conf里面  user项 本来默认的是Apache 需要将其修改为user root,将php-fpm启动时加上 -R参数

关于调试 phpstorm 支持javascript调试,也支持 php脚本调试,注意别选择错了

谷歌浏览器Software Reporter Tool长时间占用CPU解决办法

什么是Software Reporter tool

Software Reporter Tool是一个Chrome清理工具,用于清理谷歌浏览器中不必要或恶意的扩展,应用程序,劫持开始页面等等。当你安装Chrome时,Software_reporter_tool.exe也j就会被下载在Chrome应用数据文件夹中的SwReporter文件夹下。

它作为Chrome 清理报告工具,每周执行一次,每次大概20-25分钟。

禁用会怎么样

如果你把它禁用或者移除,那么chrome浏览器就不再能扫描可能导致Google Chrome问题的软件、扩展冲突,无法帮助维持Google Chrome正常运行,当你的chrome浏览器出现问题 比如无限崩溃时,chrome无法自我修复。

如何关闭SRT

我们虽然可以通过任务管理器手动结束进程或者选择删除SRT,但这都不是长久的解决办法。因为前者过一段时间它又会再次运行,后者在浏览器更新的时候就又会重新被下载下来。要完美地解决这一个问题我们可以进入SRT目录,默认它位于以下目录

C:\Users\[YourName]\AppData\Local\Google\Chrome\User Data\SwReporter\[版本]

我们还可以通过win+r键打开运行命令窗口并输入以下命令快速找到它

%localappdata%\Google\Chrome\User Data\SwReporter

执行以下步骤:

  1. 右键单击software_reporter_tool.exe选择属性
  2. 转到“安全”选项卡
  3. 点击“高级”
  4. 点击“禁用继承”
  5. 选择”从此对象中删除所有继承的权限”,之后点击“确定”

这样就没有人可以访问SwReporter文件夹并启动Software Reporter Tool了。

 

另一个方法是:修改配置文件

与上文相同的文件夹下,有个manifest.json文件,

用编辑器打开它,将 “allow-reporter-logs”: true 修改为 “allow-reporter-logs”: false

awk配合xargs的一个用法

工作中有时候需要杀类似下面的很多子进程,想单个的杀实在是很困难(尤其是子进程很多时),

有什么好的办法呢?

[root@tesr root]# ps -ef|grep java|grep cn.

root      3994  3993  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      3995  3994  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      3996  3995  0 21:14 ?        00:00:04 /usr/j2sdk1.4.0_01/bin/java cn.c

root      3997  3995  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      3998  3995  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      3999  3995  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      4000  3995  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      4001  3995  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      4002  3995  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      4004  3995  1 21:14 ?        00:01:56 /usr/j2sdk1.4.0_01/bin/java cn.c

root      4005  3995  0 21:15 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

其实就是要把这些行的第二列变成横向的,再全部写到kill -9 的后面就行了. 我们知道,

Awk就是用来取列的,但是awk取到的结果是分为多列的,

#ps -ef|grep java|grep cn.|awk {‘print $2’}

3994

3995

3996

3997

3998

3999

4000

4001

4002

4004

4005

如何让这些列变成行呢,xargs就可以!

# ps -ef|grep java|grep cn.|awk {‘print $2’}|xargs

3994 3995 3996 3997 3998 3999 4000 4001 4002 4004 4005

说白了,xarge就是把很多行变为一行!

如想删除数量比较多的文件
ls | xargs -n 20 rm -fr
ls当然是输出所有的文件名(用空格分割)
xargs就是将ls的输出,每20个为一组(以空格为分隔符),作为rm -rf的参数
也就是说将所有文件名20个为一组,由rm -rf删除,这样就不会超过命令行的长度了

再杀的话就很简单了!

Kill -9 3994 3995 3996 3997 3998 3999 4000 4001 4002 4004 4005就行了.

写下这点东西才真正的学会awk和xarge ,大家不妨也试试??

更多关于find,xargs请参考http://www.linuxsir.org/main/?q=node/137#3

Linux如何禁用root账户(There were XXXX failed login attempts since the last successful login.)

警告信息
自从有了一台有公网IP的Linux机器,每次登录就会有这样是信息:

There were 4899 failed login attempts since the last successful login.
Last login: Thu Aug 21 15:45:34 2014 from 87.201.230.138
-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

搜搜网络会发现,有好多这样的问题:

其他网友的说法:
你服务器 IP 在那儿,那 SSH 开在 TCP 22 上谁都能连,连上了谁都能输密码,密码错了就在系统里留下一条记录。
要么是被(无差别地)扫到了,要么是有人在盯着你。只说 SSH 登陆这事,如果你关闭密码登陆(或者密码足够健壮),那有个就算有一百万个猴子在试你的密码,你也完全不用担心的。

作为一个不合格的猿人,看到这个信息,就不舒服

关了Root用户
禁用root用户后使用sftp时可能一些目录无法访问

使用root账户登录系统,添加一个普通账户例如test,并为其设置密码
useradd test
passwd test

编辑配置文件/etc/ssh/sshd_config 修改PermitRootLogin 后面的yes 为 no ,并且去掉前面的注释符,同时可以限制失败次数
注意: 这个失败次数是对所有用户都起作用的。

最后重启sshd服务 systemctl restart sshd.service,此时再用root用户登录,如果不能登陆则代表配置成功。如果需要使用root权限,可以使用su/sudo进行切换

Spring Boot2.0 – 基于spring-boot-devtools实现热插拔

一.你需要准备
Spring Boot 2.1.5.RELEASE
java 1.8+
Maven 3.3+
IDEA
二.开发人员工具介绍
Spring Boot包含一组额外的工具,可以使应用程序开发体验更加愉快。该spring-boot-devtools模块可以包含在任何项目中,以提供额外的开发时间功能。要包含devtools支持,请将模块依赖项添加到您的构建中,如如以下Maven和Gradle列表所示:

Maven.

<dependencies>
<dependency>
<groupId> org.springframework.boot </ groupId>
<artifactId> spring-boot-devtools </ artifactId>
<optional> true </ optional>
</ dependency>
</ dependencies>

Gradle.

configurations {
developmentOnly
runtimeClasspath {
extendsFrom developmentOnly
}
}
dependencies {
developmentOnly(“org.springframework.boot:spring-boot-devtools”)
}

三.配置热插拔
下面我们Maven为例,来实现自动部署新代码的功能:

3.1开启idea自动make功能
使用快捷键CTRL + SHIFT + A –> 查找 –> 选中

接下来,我们需要重启IDEA;

3.2 填加maven依赖
<!–热插拔–>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!–表示依赖不会传递–>
<optional>true</optional>
</dependency>

3.3 开启热部署
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork> <!– 如果没有该配置,devtools不会生效 –>
</configuration>
</plugin>
</plugins>
</build>

3.4关闭热部署
配置完热部署后,默认自动开启,如果需要关闭热部署,可以参考如下方式进行关闭:

3.4.1方式一
@SpringBootApplication
public class MilogeniusWebApplication {

public static void main(String[] args) {
//关闭热部署
System.setProperty(“spring.devtools.restart.enabled”,”false”);
SpringApplication.run(MilogeniusWebApplication.class, args);
}

}

3.4.2 方式二
在application.yml配置文件中增加如下配置:

spring:
# 服务模块
devtools:
restart:
# 热部署开关
enabled: false

四.测试
首先我们启动项目,在尝试修改某个类之后,发现项目自动重启;将热部署开关关闭之后,发现修改某个类,项目不会自动重启;

五.总结
在Spring Boot 2.1.5.RELEASE版本测试下,我发现不配置true也能实现自动部署新代码,大家可以尝试一下,不知道是不是最新版本已经优化了;