centos中用crontab(计时器)运行定时任务详解

关于crontab:

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρ?νο?),原意是时间。
通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

安装 crontab (现在大部分系统其实都已经预装了) :

[root@CentOS ~]# yum install vixie-cron
[root@CentOS ~]# yum install crontabs

 

说明:
vixie-cron软件包是cron的主程序;
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

/sbin/service crond start #启动服务
/sbin/service crond stop #关闭服务
/sbin/service crond restart #重启服务
/sbin/service crond reload #重新载入配置

 

查看crontab服务状态:

service crond status

手动启动crontab服务:

service crond start

其他命令:

#查看crontab服务是否已设置为开机启动,执行命令:
ntsysv

#加入开机自动启动:
chkconfig --level 35 crond on

#列出crontab文件
crontab -l

#编辑crontab文件
crontab -e

#删除crontab文件
$ crontab -r

#恢复丢失的crontab文件
#假设你在自己的$HOME目录下还有一个备份,那么可以将其拷贝到/var/spool/cron/<username>,其中<username >是用户名
#或者使用如下命令其中,<filename>是你在$HOME目录中副本的文件名
crontab <filename>

日志文件:/var/log/cron*

补充:

1、crontab相关命令

功能说明:设置计时器。

语  法:crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]

补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使用计时器的功能。

配置文件格式:Minute Hour Day Month DayOFWeek Command

参  数:
-e  编辑该用户的计时器设置。
-l  列出该用户的计时器设置。
-r  删除该用户的计时器设置。
-u<用户名称>  指定要设定计时器的用户名称。

2、crontab 配置文件格式

  基本格式 :
  *      *   *   *   *  command
  分   时  日  月  周   命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

# Use the hash sign to prefix a comment
# +—————- minute (0 – 59)
# | +————- hour (0 – 23)
# | | +———- day of month (1 – 31)
# | | | +——- month (1 – 12)
# | | | | +—- day of week (0 – 7) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed

crontab文件的一些例子:

#每晚的21:30 重启apache
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#每月1、10、22日的4 : 45重启apache
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
#每周六、周日的1 : 10重启apache
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
#每天18 : 00至23 : 00之间每隔30分钟重启apache
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
#每星期六的11 : 00 pm重启apache
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
#晚上11点到早上7点之间,每隔一小时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
#每一小时重启apache
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
#每月的4号与每周一到周三的11点重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
#一月一号的4点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
#每半小时同步一下时间
*/30 * * * * /usr/sbin/ntpdate 210.72.145.44

 

3、其他任务调度

cron默认配置了调度任务,分别为:hourly、daily、weekly、mouthly,默认配置文件为/etc/anacrontab

将需要执行的脚本放到相应的目录下即可,目录分别为:

/etc/cron.hourly

/etc/cron.daily

/etc/cron.weekly

/ect/cron.mouthly

rageframe 一款开源的内部文档管理系统

YII2+AdminLET开源通用后台管理系统源码

RageFrame 2.0

重量级全栖框架,为二次开发而生

前言

这是一款现代化、快速、高效、便捷、灵活、方便扩展的应用开发骨架。

RageFrame 创建于 2016 年 4 月 16 日,一个基于 Yii2 高级框架的快速开发引擎,目前正在成长中,目的是为了集成更多的基础功能,不再为相同的基础功能重复制造轮子,开箱即用,让开发变得更加简单。
2018 年 9 月 10 日 2.0 版本正式上线,经过 1.0 版本一年多的开源反馈磨合,以更加优秀的形态出现。对 1.0 的版本进行了重构优化完善,更好的面向开发者进行二次开发。2.3.x 版本更是优化了底层突出了服务层,分离业务逻辑,支持多商户。

特色

  • 极强的可扩展性,应用化,模块化,插件化机制敏捷开发。
  • 极致的插件机制,微核架构,良好的功能延伸性,功能之间是隔离,可定制性高,可以渐进式地开发,逐步增加功能,安装和卸载不会对原来的系统产生影响,强大的功能完全满足各阶段的需求,支持用户多端访问(后台、微信、Api、前台等)。
  • 极完善的 RBAC 权限控制管理、无限父子级权限分组、可自由分配子级权限,且按钮/链接/自定义内容/插件等都可加入权限控制。
  • 只做基础底层内容,不会在上面开发过多的业务内容,满足绝大多数的系统二次开发。
  • 多入口模式,多入口分为 Backend (后台)、Merchant (商户端)、Frontend (PC前端)、Html5 (手机端)、Console (控制台)、Api (对内接口)、OAuth2 Server (对外接口)、MerApi (商户接口)、Storage (静态资源),不同的业务,不同的设备,进入不同的入口。
  • 对接微信公众号且支持小程序,使用了一款优秀的微信非官方 SDK Easywechat 4.x,开箱即用,预置了绝大部分功能,大幅度的提升了微信开发效率。
  • 整合了第三方登录,目前有 QQ、微信、微博、GitHub 等等。
  • 整合了第三方支付,目前有微信支付、支付宝支付、银联支付,二次封装为网关多个支付一个入口一个出口。
  • 整合了 RESTful API,支持前后端分离接口开发和 App 接口开发,可直接上手开发业务。
  • 一键切换云存储,本地存储、腾讯 COS、阿里云 OSS、七牛云存储都可一键切换,且增加其他第三方存储也非常方便。
  • 全面监控系统报错,报错日志写入数据库,方便定位错误信息。支持直接钉钉提醒。
  • 快速高效的 Servises (服务层),遵循 Yii2 的懒加载方式,只初始化使用到的组件服务。
  • 丰富的表单控件(时间、日期、时间日期、日期范围选择、颜色选择器、省市区三级联动、省市区勾选、单图上传、多图上传、单文件上传、多文件上传、百度编辑器、百度图表、多文本编辑框、地图经纬度选择器、图片裁剪上传、TreeGrid、JsTree、Markdown 编辑器)和组件(二维码生成、Curl、IP地址转地区),快速开发,不必再为基础组件而担忧。
  • 快速生成 CURD ,无需编写代码,只需创建表设置路径就能出现一个完善的 CURD ,其中所需表单控件也是勾选即可直接生成。
  • 正常开发只需要开发商户端,没有 Saas 的时候商户端就是总后台,有了 Saas,商户端就是子后台
  • 完善的文档和辅助类,方便二次开发与集成。

版权信息

RageFrame 遵循 Apache2 开源协议发布,并提供免费使用。

本项目包含的第三方源码和二进制文件之版权信息另行标注。

版权所有Copyright © 2016-2020 by RageFrame www.rageframe.com

All rights reserved。

CentOS 7/8 编译安装 libzip 1.7.3

CentOS 7 源码安装 libzip 1.7.3,error: Please reinstall the libzip distributio 或 error: system libzip must be upgraded to version >= 0.11解决  错误。

1、准备编译环境

yum install openssl-devel bzip2 bzip2-devel

2、下载源码,并解压

wget https://libzip.org/download/libzip-1.7.3.tar.gz 
tar -zxf libzip-1.7.3.tar.gz 
cd libzip-1.7.3

备用下载地址:https://down.24kplus.com/linux/libzip/libzip-1.7.3.tar.gz

3、编译安装

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr .. 
make 
make install

如果提示 ,cmake: command not found需要先安装 cmake。

安装cmake3

yum install -y cmake3
sudo ln -sf /usr/bin/cmake3 /usr/bin/cmake

Gitlab权限诠释

Gitlab权限概念

用户具有不同的能力,具体取决于他们在特定组或项目中的访问级别。如果用户同时在组的项目和项目本身中,则使用最高权限级别。

在公共和内部项目中,不会强制实施Guest角色。所有用户都可以创建问题,发表评论,克隆或下载项目代码。

当成员离开团队时, 将自动取消分配所有分配的问题和合并请求。

GitLab 管理员获得所有权限。

权限

用户组的权限

用户组有这几种权限的概念:Guest、Reporter、Developer、Master、Owner
这个概念在设置用户组的时候会遇到,叫做:Add user(s) to the group,比如链接:http://192.168.1.111/admin/groups/组名称

下表完整的列出了Guest,Reporter,Developer,Master,Owner对应的权限。

行为 Guest Reporter Developer Master Owner
浏览组 ✓ ✓ ✓ ✓ ✓
编辑组 ✓
创建项目 ✓ ✓
管理组成员 ✓
移除组 ✓

角色
Gitlab定义了以下几个角色:

Gitlab用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner

Guest:可以创建issue、发表评论,不能读写版本库
Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限
Developer:可以克隆代码、开发、提交、push,RD可以赋予这个权限
Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限
Owner:可以设置项目访问权限 – Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限
Gitlab中的组和项目有三种访问权限:Private、Internal、Public

Private:只有组成员才能看到
Internal:只要登录的用户就能看到
Public:所有人都能看到
开源项目和组设置的是Internal

Gitlab权限列表

这里要列一下权限分类,因为gitlab的成员权限不单单只有一种。

  • 项目成员角色
    • Guest – 客人
    • Reporter – 记者
    • Developer – 开发者
    • Master (11.0版本中已重命名为 Maintainer) – 维护者
    • Owner – 所有者
  • 组成员角色
    • Guest – 客人
    • Reporter – 记者
    • Developer – 开发者
    • Master (11.0版本中已重命名为 Maintainer) – 维护者
    • Owner – 维护者
  • GitLab CI-CD 角色
    • Guest, Reporter – 客人,记者
    • Developer – 开发者
    • Maintainer – 维护者
    • Admin – 管理员
  • 工作角色
    • Guest, Reporter – 客人,记者
    • Developer – 开发者
    • Maintainer – 维护者
    • Admin – 管理员

一般管理员邀请用户加入到项目里都需要分配权限,如下:

项目成员权限

注意:在GitLab 11.0中,Master已重命名为Maintainer。

Action Guest Reporter Developer Maintainer Owner
创建新问题 ✓ ✓ ✓ ✓ ✓
创建机密问题 ✓ ✓ ✓ ✓ ✓
查看机密问题 ✓ ✓ ✓ ✓ ✓
留言 ✓ ✓ ✓ ✓ ✓
查看相关问题 ✓ ✓ ✓ ✓ ✓
查看工作列表 ✓ ✓ ✓ ✓ ✓
查看工作日志 ✓ ✓ ✓ ✓ ✓
下载并浏览作业工件 ✓ ✓ ✓ ✓ ✓
查看维基页面 ✓ ✓ ✓ ✓ ✓
查看许可证管理报告 ✓ ✓ ✓ ✓ ✓
查看安全报告 ✓ ✓ ✓ ✓ ✓
查看项目代码 ✓ ✓ ✓ ✓
拉项目代码 ✓ ✓ ✓ ✓
下载项目 ✓ ✓ ✓ ✓
分配问题 ✓ ✓ ✓ ✓
分配合并请求 ✓ ✓ ✓
标签问题 ✓ ✓ ✓ ✓
标签合并请求 ✓ ✓ ✓
创建代码段 ✓ ✓ ✓ ✓
管理问题跟踪器 ✓ ✓ ✓ ✓
管理标签 ✓ ✓ ✓ ✓
查看提交状态 ✓ ✓ ✓ ✓
查看容器注册表 ✓ ✓ ✓ ✓
查看环境 ✓ ✓ ✓ ✓
查看合并请求列表 ✓ ✓ ✓ ✓
管理相关问题 ✓ ✓ ✓ ✓
锁定问题讨论 ✓ ✓ ✓ ✓
从漏洞创建问题 ✓ ✓ ✓ ✓
查看错误跟踪列表 ✓ ✓ ✓ ✓
锁定合并请求讨论 ✓ ✓ ✓
创建新环境 ✓ ✓ ✓
停止环境 ✓ ✓ ✓
管理/接受合并请求 ✓ ✓ ✓
创建新的合并请求 ✓ ✓ ✓
创建新分支 ✓ ✓ ✓
推送到未受保护的分支机构 ✓ ✓ ✓
强制推送到不受保护的分支机构 ✓ ✓ ✓
删除未受保护的分支 ✓ ✓ ✓
添加标签 ✓ ✓ ✓
写一个维基 ✓ ✓ ✓
取消并重试作业 ✓ ✓ ✓
创建或更新提交状态 ✓ ✓ ✓
更新容器注册表 ✓ ✓ ✓
删除容器注册表图像 ✓ ✓ ✓
创建/编辑/删除项目里程碑 ✓ ✓ ✓
查看已批准/列入黑名单的许可 ✓ ✓ ✓
使用安全仪表板 ✓ ✓ ✓
解除漏洞 ✓ ✓ ✓
应用代码更改建议 ✓ ✓ ✓
使用环境终端 ✓ ✓
运行Web IDE的交互式Web终端 ✓ ✓
添加新的团队成员 ✓ ✓
推送到受保护的分支 ✓ ✓
启用/禁用分支保护 ✓ ✓
为开发人员打开/关闭受保护的分支推送 ✓ ✓
启用/禁用标签保护 ✓ ✓
重写/删除Git标签 ✓ ✓
将部署密钥添加到项目中 ✓ ✓
配置项目挂钩 ✓ ✓
管理跑步者 ✓ ✓
管理工作触发器 ✓ ✓
管理变量 ✓ ✓
管理GitLab页面 ✓ ✓
管理GitLab Pages域和证书 ✓ ✓
删除GitLab页面 ✓
查看受访问控制保护的GitLab页面 ✓ ✓ ✓ ✓ ✓
管理集群 ✓ ✓
管理许可证政策 ✓ ✓
编辑评论(由任何用户发布) ✓ ✓
管理错误跟踪 ✓ ✓
切换可见性级别 ✓
将项目转移到另一个名称空 ✓
删除项目 ✓
删除问题 ✓
删除页面 ✓
强行推动受保护的分支机构
删除受保护的分支
查看项目审核事件 ✓ ✓

组成员权限

Action Guest Reporter Developer Maintainer Owner
浏览组 ✓ ✓ ✓ ✓ ✓
编辑组 ✓
创建子组 ✓
在组中创建项目 ✓ ✓ ✓
管理小组成员 ✓
删除组 ✓
管理组标签 ✓ ✓ ✓ ✓
创建/编辑/删除组里程碑 ✓ ✓ ✓
查看组史诗 ✓ ✓ ✓ ✓ ✓
创建/编辑组史诗 ✓ ✓ ✓ ✓
删除组史诗 ✓
查看组审核事件 ✓

GitLab CI / CD权限

Action Guest, Reporter Developer Maintainer Admin
查看提交和工作 ✓ ✓ ✓ ✓
重试或取消工作 ✓ ✓ ✓
擦除作业工件和跟踪 ✓ ✓ ✓
删除项目 ✓ ✓
创建项目 ✓ ✓
更改项目配置 ✓ ✓
添加特定的跑步者 ✓ ✓
添加共享的运行者 ✓
查看系统中的事件 ✓
管理界面 ✓

工作权限

Action Guest, Reporter Developer Maintainer Admin
运行CI作业 ✓ ✓ ✓
从当前项目克隆源和LFS ✓ ✓ ✓
从公共项目克隆源和LFS ✓ ✓ ✓
从内部项目克隆源和LFS ✓ ✓ ✓
私有项目的克隆源和LFS ✓ ✓ ✓
推送源和LFS
从当前项目中提取容器图像 ✓ ✓ ✓
从公共项目中提取容器图像 ✓ ✓ ✓
从内部项目中提取容器图像 ✓ ✓ ✓
从私人项目中提取容器图像 ✓ ✓ ✓
将容器图像推送到当前项目 ✓ ✓ ✓
将容器图像推送到其他项目 ✓

以上是权限明细列表,在给成员分配权限时需要合理分配。

参考资料

https://docs.gitlab.com/ee/user/permissions.html

CentOS 7/8 安装 oniguruma 和 oniguruma-devel

CentOS 7/8 安装 oniguruma和oniguruma-devel 。解决 configure: error: Package requirements (oniguruma) were not met: Package 'oniguruma', required by 'virtual:world', not found 问题。

CentOS 7 安装

yum -y install http://mirror.centos.org/centos-7/7.7.1908/cloud/x86_64/openstack-queens/oniguruma-6.7.0-1.el7.x86_64.rpm
yum -y install http://mirror.centos.org/centos-7/7.7.1908/cloud/x86_64/openstack-queens/oniguruma-devel-6.7.0-1.el7.x86_64.rpm

备用下载:

oniguruma:http://down.24kplus.com/linux/oniguruma/oniguruma-6.7.0-1.el7.x86_64.rpm
oniguruma-devel:http://down.24kplus.com/linux/oniguruma/oniguruma-devel-6.7.0-1.el7.x86_64.rpm

CentOS 8 安装

yum config-manager --set-enabled PowerTools
yum -y install oniguruma oniguruma-devel

uni-app优缺点

uni-app 是由DCloud公司开发,是一个使用 Vue.js 开发所有前端应用的框架,一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等多个平台。目前拥有380万开发者,旗下uni-app有5万+案例、900款插件、并且被阿里小程序工具内置,所以选择用uni-app还算是比较放心的。

优点一:

uni-app是一套可以适用多端的开源框架,一套代码可以同时生成ios,Android,H5,微信小程序,支付宝小程序,百度小程序等。

优点二:

uni-app对前端开发人员比较友好,学习成本比较低,首先uni-app是基于vue.js的。其次封装的组件和微信小程序的组件一毛一样,所以对于现在的主流前端人员来说学习几乎0成本,如果你作为一个前端,没有接触过vue和微信小程序的话那建议你多去加加油了。

优点三:

uni-app使用HBX进行开发,HBX对于vue语法等支持可以说是比较完备了。使用HBX进行开发可以说是速度杠杠的。开发速度比较快,ps:虽然我是一个vscode党,但是也还是不得不说HBX做的也很不错了。个人挺喜欢的。

优点四:

uni-app拓展能力强,封装了H5+,支持nvue,也支持原生Android,ios开发。可以将原有的移动应用和H5应用改成uni-app应用。

优点五:

uni-app是DCloud出品的,属于国产,对于国产我们当然要支持一下啦!

缺点一:

uni-app问世的时间还比较短,有很多地方还不是完善,坑很多,如果不喜欢爬坑的朋友那就少用uni-app吧。

缺点二:

对于使用中的一些bug及问题,官方回应的不是很及时。不过可以加一下qq群或者去社区和其他uni-app开发者一起讨论。

红帽RHEL8和7有什么区别(Centos8与7参照redhat)

红帽RHEL8与RHEL7的区别

1. 红帽RHEL8和RHEL7功能区别对比

1.1 默认的文件系统

RHEL8与RHEL7都是采用XFS

1.2 RHEL8与RHEL7的内核版本分别是多少

关于内核版本,RHEL8和7的区别如下:
RHEL8采用4.18.0-x
RHEL7采用3.10-0-x

1.3 内核代码名字

关于内核代码,RHEL8和7的区别如下:

RHEL8采用2019-05-07 (Kernel Version 4.18.0-80)
RHE7采用2014-06-09 (Kernel Version 3.10.0-123)

1.4 标准/默认的仓库频道

关于仓库频道,RHEL8和7的区别如下:

RHEL8

Repo ID: rhel-8-for-x86_64-appstream-rpms
Repo Name: Red Hat Enterprise Linux 8 for x86_64 – AppStream (RPMs)

Repo ID: rhel-8-for-x86_64-baseos-rpms
Repo Name: Red Hat Enterprise Linux 8 for x86_64 – BaseOS (RPMs)

RHEL7

Repo ID: rhel-7-server-rpms
Repo Name: Red Hat Enterprise Linux 7 Server (RPMs)

1.5 网络时间同步

关于网络时间同步,RHEL8和7的区别如下:

RHEL8
只使用Chronyd,不支持NTP部署。

RHEL7
Chronyd与NTP两者都支持

 

1.6 支持最大的文件

关于支持最大的文件,RHEL8和7的区别如下:

RHEL8
XFS文件系统支持的最大文件大小已从500 TiB增加到1024 TiB。
(此最大文件大小仅适用于64位机器。Red Hat Enterprise Linux不支持32位机器上的XFS.)

RHEL7
最大. (单独) 文件大小= 500TiB
最大. 文件系统大小 = 500TiB

1.7 软件包管理

关于软件包管理,RHEL8和7的区别如下:

红帽8
包管理由DNF (YUMv4)完成。

yum4基于DNF技术,yum4命令提供了与早期版本中使用的Yum v3的向后兼容性。yum命令只是到dnf的一个符号链接。

红帽7
yum基于3.0.x版本

1.8 最大支持的内存

关于最大支持的内存,RHEL8和7的区别如下:

红帽8
24TB,64位架构

红帽7:
只支持12TB

1.9 默认的网络数据包过滤

关于默认的网络数据包过滤,RHEL8和7的区别如下:

RHEL8使用nftables取代了iptables框架

nftables是默认的网络包过滤,它取代了以前的iptables框架。firewalld守护进程现在使用nftables作为默认后端。

这将取代以前使用的“iptables”、“ip6tables”、“arptables”和“ebtables”工具。“nftables”确实为IPv4和IPv6协议提供了一个单一的框架。

而RHEL7 firewalld守护进程使用iptables作为其默认后端。

1.10 默认的数据库

关于默认的数据库,RHEL8和7的区别如下:

RHEL8默认支持的数据库:

  • MySQL 8.0
  • MariaDB 10.3
  • PostgreSQL 10 and PostgreSQL 9.6
  • Redis 5.0

MariaDB是Red Hat Enterprise Linux 7中MySQL的默认实现

1.11 支持的硬件架构

关于支持的硬件架构,RHEL8和7的区别如下:

RHEL8支持以下硬件架构

  • AMD and Intel 64-bit architectures
  • The 64-bit ARM architecture
  • IBM Power Systems, Little Endian
  • IBM Z

RHEL7支持以下硬件架构:

  • 64-bit AMD
  • 64-bit Intel
  • IBM POWER7
  • IBM System z

1.12 可供安装的ISO镜像类型

关于可供安装的ISO镜像类型,RHEL8和7的区别如下:

RHEL 8可以使用以下类型的ISO镜像安装:

  • Binary(二进制) DVD ISO
  • Boot ISO

在RHEL7中,可以使用以下可用的ISO镜像进行安装:

  • Boot ISO
  • Binary(二进制) DVD ISO
  • Supplementary(追加的) Binary DVD

1.13 默认情况下的Cockpit web控制台的安装状态

关于默认情况下的Cockpit web控制台的安装状态,RHEL8和7的区别如下:

在RHEL8中,Cockpit是默认安装和可用的。这将在非最小模式下自动安装,并在防火墙中启用所需端口。
Cockpit提供了一个增强的框架,可以用来访问/编辑/更改许多系统设置。这提供了通过web接口的访问,可以使用浏览器访问url地址http://:9090进行管理。

在RHEL7系统中,Cockpit默认情况下没有安装,需要通过启用extra和optional存储库通道来安装。

1.14 默认虚拟机管理

关于默认虚拟机管理,RHEL8和7的区别如下:

在RHEL8系统中,默认情况下,它由Cockpit管理。如果需要,还可以安装virt-manager。

而在RHEL7系统中virt-manager将用于基于KVM的虚拟系统管理。

1.15 RMP版本的改进

关于RMP版本的改进,RHEL8和7的区别如下:

Red Hat Enterprise Linux 8是用RPM 4.14发布的。现在,RPM在开始安装之前验证整个包的内容。

这有很多改进,其中一些值得注意的功能是:

  • debuginfo包可以并行安装
  • 支持弱依赖关系
  • 支持丰富的或布尔依赖
  • 支持封装文件超过4 GB的大小
  • 支持文件触发器

构建在RHEL8上的包在压缩负载上使用一个新的SHA-256散列。

而Red Hat Enterprise Linux 7是用RPM 4.11发布的。在RHEL7上,RPM实用程序在解压时验证单个文件的有效负载内容。

1.16 CUPS日志

关于CUPS日志,RHEL8和7的区别如下:

RHEL8所有类型的CUPS日志都与来自其他程序的日志一起集中记录在systemd journald守护进程中。要访问CUPS日志,请使用“journalctl -u CUPS”命令。
而RHEL7系统上,CUPS日志被存储中 /var/log/cups directory.

nobody用户替换nfsnobody
rhel8系统上,nobody和nfsnobody用户和组合并到nobodyID(65534)中。

在Red Hat Enterprise Linux 7中,有:

  • ID为99的nobody用户和组
  • nfsnobody用户和组对的ID为65534,这也是默认的内核溢出ID。

1.17 默认版本的控制系统

关于默认版本的控制系统,RHEL8和7的区别如下:

RHEL 8提供以下版本控制系统:

  • Git 2.18
  • Mercurial 4.8
  • Subversion 1.10

并发版本系统(CVS)和版本控制系统(RCS)在RHEL8中都不可用。

而Red Hat Enterprise Linux 7与三个最流行的开源修订控制系统一起发布:Git、SVN和CVS。

1.18 编程语言版本

关于编程语言版本,RHEL8和7的区别如下:

RHEL8新版本编程语言

  • Python 3
  • PHP 7.2
  • Ruby 2.5
  • Node.js 10

而RHEL7支持以下编辑语言

  • Python 2 ( 2.7.X)
  • PHP 5.4
  • Ruby 2.0.0

1.19 关于容器技术的支持

关于容器技术的支持,RHEL8和7的区别如下:

Docker不包括在RHEL 8.0中。使用容器时,需要使用podman、buildah、skopeo和runc工具。
podman工具已经作为一个完全支持的特性发布了。
Docker和Docker Registry是Red Hat Enterprise Linux 7中的Extras订阅频道的一部分。

1.20 开发工具支持

关于开发工具支持,RHEL8和7的区别如下:

RHEL 8提供OpenJDK 11、OpenJDK 8、IcedTea-Web和各种Java工具,如Ant、Maven或Scala。
在RHEL7中,OpenJDK8用作默认的Java开发工具包(JDK),而Java 8用作默认的Java版本。

1.21 NFS配置对比

关于NFS配置对比,RHEL8和7的区别如下:

RHEL8的NFS配置文件是/etc/ NFS .conf。
当从RHEL7升级时,Red Hat Enterprise Linux 8尝试自动将所有选项从/etc/sysconfig/nfs转换为/etc/nfs。并不再支持NFS / UDP。

而RHEL7中,默认的NFS配置文件是/etc/sysconfig/ NFS

1.22 默认的显示服务器

关于默认的显示服务器,RHEL8和7的区别如下:

在RHEL 8中,Gnome display Manager使用的默认显示服务器是Wayland。
X.org服务器是RHEL 7中的默认显示服务器

2. RHEL8额外新功能新特性

2.1 elevator内核命令行参数被废弃

早期的RHEL版本中使用了elevator内核命令行参数来设置所有设备的磁盘调度程序。在RHEL 8中,该参数被弃用。
上游Linux内核已经取消了对elevator参数的支持,但是出于兼容性的原因,RHEL 8中仍然可以使用它。

2.2 网络脚本被废弃

在RHEL 8中,网络脚本在默认情况下不可用。有一个新版本的ifup和ifdown正在使用,这将需要NetworkManager守护进程运行,并在后端使用nmcli。

如果需要早期的网络脚本,则必须安装“network-scripts”包。

2.3 新内核支持5级paging

在早期版本中,有4级分页实现,可以处理48/46位虚拟/物理地址,并且物理总线上限为64TB。在即将推出的Intel处理器中,这些限制已经扩展到57/52位的虚拟/物理内存寻址,具有128 PiB的虚拟地址空间和4 PB的物理内存容量。

2.4 Anaconda支持RHEL 8中的系统目标

以前,Anaconda没有向订阅管理器提供系统用途信息。在Red Hat Enterprise Linux 8.0中,您可以在安装期间使用Anaconda的system purpose窗口或Kickstart的syspurpose命令设置系统的预期目标。

2.5 CodeReady Linux构建器仓库

有一个CodeReady Linux构建器存储库,可用于所有RHEL订阅。这为开发人员提供了额外的包。CodeReady Linux构建器存储库中包含的包不支持生产使用。

2.6 改进版本的OpenSSH

OpenSSH的版本是7.8p1,与早期版本相比有很多改进。其中一些是:

  • 不再支持SSH version 1.
  • 默认不开启DNS支持.
  • 最小可接受RSA密钥大小设置为1024位.
  • 移除 ‘Blowfish’, ‘CAST’, ‘RC4’ ciphers.
  • 默认关闭DSA 公钥算法.

2.7 RHEL8中不支持数字用户名和组名

useradd和groupadd命令不允许用户名和组名完全由数字字符组成。这是RHEL7中不支持的特性,现在RHEL8完全不支持它。

2.8 默认情况下,securetty现在是禁用的

默认情况下禁用了securetty PAM模块,并且从RHEL8中删除了/etc/securetty文件。

2.9 改进的TCP网络栈

RHEL 8拥有TCP网络栈版本4.18,可以提供更高的性能、更好的可伸缩性和更稳定的性能。性能得到了提高,特别是在繁忙的TCP服务器与高进入连接速率。

除了新的TCP栈之外,还有两种新的TCP拥塞算法。在大多数情况下,BBR和NV可以提供比cubic更低的延迟和更好的吞吐量。

2.10 高可用性(HA)

在Red Hat Enterprise Linux 8中,pcs完全支持Corosync 3集群引擎和用于集群通信的Kronosnet (knet)网络抽象层。无法将集群节点从RHEL7就地升级到RHEL8。

2.11 lvmlockd取代了clvmd

用于管理共享存储逻辑卷的clvmd已被删除,取而代之的是lvmlockd(lvm lock 守护进程)

镜像下载地址

CentOS 8 下载:https://centos.org/download/

国内镜像下载:https://mirrors.tuna.tsinghua.edu.cn/centos/

用centos8搭建firewalld防火墙

一,firewalld的systemd管理命令

启动:systemctl start firewalld
关闭:systemctl stop firewalld
查看状态:systemctl status firewalld
开机禁用:systemctl disable firewalld
开机启用:systemctl enable firewalld

 

二,firewall-cmd的通用命令:

1,查看firewall-cmd版本:

[root@localhost liuhongdi]# firewall-cmd --version
0.7.0

 

2,查看firewall-cmd帮助

[root@localhost liuhongdi]# firewall-cmd --help

 

3,查看firewalld状态

[root@localhost liuhongdi]# firewall-cmd --state
running

 

4,更新防火墙的规则

[root@localhost liuhongdi]# firewall-cmd --reload
success

说明:–reload的作用:让“永久生效”的配置规则立即生效,并覆盖当前的配置规则

 

5,查看firewalld的所有规则:

[root@localhost zones]# firewall-cmd --list-all

 

三,zone相关命令:

1,得到默认的zone:

[root@localhost liuhongdi]# firewall-cmd --get-default-zone
public

 

2,得到当前正在使用的zone与网卡名称

[root@localhost liuhongdi]# firewall-cmd --get-active-zones
libvirt
  interfaces: virbr0
public
  interfaces: ens33

 

3,得到所有可用的zone

[root@localhost liuhongdi]# firewall-cmd --get-zones
block dmz drop external home internal libvirt public trusted work

 

4,设置默认的zone

[root@localhost liuhongdi]# firewall-cmd --set-default-zone=drop
success
[root@localhost liuhongdi]# firewall-cmd --get-active-zones
drop
  interfaces: ens33
libvirt
  interfaces: virbr0

 

四,services相关命令:

1,列出所有可用的services

 

[root@localhost liuhongdi]# firewall-cmd --get-services

 

2,列出当前已放开的services

[root@localhost liuhongdi]# firewall-cmd --list-services

 

3,  放开一个服务

[root@localhost liuhongdi]# firewall-cmd --add-service=http

 

4,  关闭一个服务

[root@localhost liuhongdi]# firewall-cmd --remove-service=http --permanent
success

 

说明:关于permanent参数:    添加–permanent重启后则永久生效,如无–permanent仅临时生效

 

五,port相关命令:

1,查看所有打开的端口:

[root@localhost liuhongdi]# firewall-cmd --zone=public --list-ports
80/tcp 8080/tcp 22/tcp

 

2,放开一个端口:

[root@localhost liuhongdi]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success

 

3,关闭已放开的端口:

[root@localhost liuhongdi]# firewall-cmd --zone=public --remove-port=80/tcp --permanent
success

 

六,针对permanent参数的验证:

1,添加端口后,如果加了 permanent,不会马上起作用:reload之后会起作用

[root@localhost liuhongdi]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success 
[root@localhost liuhongdi]# firewall-cmd --zone=public --list-ports
8080/tcp 22/tcp
[root@localhost liuhongdi]# firewall-cmd --reload
success
[root@localhost liuhongdi]# firewall-cmd --zone=public --list-ports
8080/tcp 22/tcp 80/tcp

 

2,删除端口,如果加了 permanent,不会马上起作用,也需要reload

[root@localhost liuhongdi]# firewall-cmd --zone=public --remove-port=80/tcp --permanent
success
[root@localhost liuhongdi]# firewall-cmd --zone=public --list-ports
8080/tcp 22/tcp 80/tcp
[root@localhost liuhongdi]# firewall-cmd --reload
success
[root@localhost liuhongdi]# firewall-cmd --zone=public --list-ports
8080/tcp 22/tcp

 

3,如果不加permanent,能马上起作用:

[root@localhost liuhongdi]# firewall-cmd --zone=public --add-port=80/tcp 
success
[root@localhost liuhongdi]# firewall-cmd --zone=public --list-ports
8080/tcp 22/tcp 80/tcp

 

七,针对ip地址的操作:

1,允许一个ip访问:

[root@localhost liuhongdi]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="43.229.53.61" accept'

 

2,禁止一个ip访问

[root@localhost liuhongdi]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="43.229.53.61" drop'

说明:drop也可用reject

两者的区别在于drop不会提示拒绝访问而是直接丢弃数据包

 

3,指定允许一个ip到指定端口的访问

[root@localhost liuhongdi]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.142.166" port protocol="tcp" port="22" accept'
success

 

4,删除一条rich rule

[root@localhost liuhongdi]# firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.142.166" port protocol="tcp" port="22" accept'
success

 

八,手动添加的防火墙规则位于哪里?

 

/etc/firewalld/zones/public.xml

说明:可以手动编辑这个保存规则的xml,然后做reload.

 

九,生产环境中要注意的地方:

如果已添加了http服务,仍然可以添加80 port,

导致要关闭http服务时,也需要关闭80 port,

所以,尽量使用 port,而不要把service和port混用

 

十,一个生产环境中防火墙的zone文件例子:

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are acc
epted.</description>
  <port port="80" protocol="tcp"/>
  <rule family="ipv4">
    <source address="10.0.10.1"/>
    <accept/>
  </rule>
  <rule family="ipv4">
    <source address="43.229.53.61"/>
    <drop/>
  </rule>
</zone>

 

说明:

1,生产环境中防火墙一定要做基于ip地址的限制,不能允许从公网随便访问

2,需要放开的端口越少越好,最好只放开一个有运行中业务的端口

Centos8 的系统内核已经支持BBR了。

安装安装ELRepo
导入公钥:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

安装ELRepo 8

yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm

启用 ELRepo 源仓库:

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

安装新内核:

yum --enablerepo=elrepo-kernel install kernel-ml

/etc/sysctl.conf,加入如下代码:

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

保存,并执行 sysctl -p 即可。

或者

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

通过以下三条指令验证是否已经开启成功

sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control
lsmod | grep bbr

php7.4-Migration to pkg-config

A number of extensions have been migrated to exclusively use pkg-config for the detection of library dependencies. Generally, this means that instead of using –with-foo-dir=DIR or similar only –with-foo is used. Custom library paths can be specified either by adding additional directories to PKG_CONFIG_PATH or by explicitly specifying compilation options through FOO_CFLAGS and FOO_LIBS.

The following extensions and SAPIs are affected:

  • CURL:
    • –with-curl no longer accepts a directory.
  • Enchant:
    • –with-enchant no longer accepts a directory.
  • FPM:
    • –with-fpm-systemd now uses only pkg-config for libsystem checks. The libsystemd minimum required version is 209.
  • GD:
    • –with-gd becomes –enable-gd (whether to enable the extension at all) and –with-external-gd (to opt into using an external libgd, rather than the bundled one).
    • –with-png-dir has been removed. libpng is required.
    • –with-zlib-dir has been removed. zlib is required.
    • –with-freetype-dir becomes –with-freetype
    • –with-jpeg-dir becomes –with-jpeg
    • –with-webp-dir becomes –with-webp
    • –with-xpm-dir becomes –with-xpm
  • IMAP:
    • –with-kerberos-systemd no longer accepts a directory.
  • Intl:
    • –with-icu-dir has been removed. If –enable-intl is passed, then libicu is always required.
  • LDAP:
    • –with-ldap-sasl no longer accepts a directory.
  • Libxml:
    • –with-libxml-dir has been removed.
    • –enable-libxml becomes –with-libxml.
    • –with-libexpat-dir has been renamed to –with-expat and no longer accepts a directory.
  • Litespeed:
    • –with-litespeed becomes –enable-litespeed.
  • Mbstring:
    • –with-onig has been removed. Unless –disable-mbregex has been passed, libonig is required.
  • ODBC:
    • –with-iodbc no longer accepts a directory.
    • –with-unixODBC without a directory now uses pkg-config (preferred). Directory is still accepted for old versions without libodbc.pc.
  • OpenSSL:
    • –with-openssl no longer accepts a directory.
  • PCRE:
    • –with-pcre-regex has been removed. Instead –with-external-pcre is provided to opt into using an external PCRE library, rather than the bundled one.
  • PDO_SQLite:
    • –with-pdo-sqlite no longer accepts a directory.
  • Readline:
    • –with-libedit no longer accepts a directory.
  • Sodium:
    • –with-sodium no longer accepts a directory.
  • SQLite3:
    • –with-sqlite3 no longer accepts a directory.
  • XSL:
    • –with-xsl no longer accepts a directory.
  • Zip:
    • –with-libzip has been removed.
    • –enable-zip becomes –with-zip.