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 安装 onigurumaoniguruma-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默认情况下没有安装,需要通过启用extraoptional存储库通道来安装。

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系统上,nobodynfsnobody用户和组合并到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中,网络脚本在默认情况下不可用。有一个新版本的ifupifdown正在使用,这将需要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中不支持数字用户名和组名

useraddgroupadd命令不允许用户名和组名完全由数字字符组成。这是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.

简单理解epel源和安装步骤

EPEL源-是什么?

EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux.

使用很简单:
1. 首先我们需要安装一个叫”epel-release”的软件包,这个软件包会自动配置yum的软件仓库。当然你也可以不安装这个包,自己配置软件仓库也是一样的。

#用于RHEL5系列

wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm

#用于RHEL6系列

wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
rpm -ivh epel-release-6-5.noarch.rpm

2. 安装完成之后你就可以直接使用yum来安装额外的软件包了

yum clean all
 
yum makecache
yum install nginx pure-ftpd

3.直接自己手工添加软件仓库配置文件

vi /etc/yum.repos.d/epel.repo
 
[epel]
name=epel
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-releasever&arch=releasever&arch=basearch
enabled=1
gpgcheck=0

CentOS6.5添加阿里云的EPEL源

yum localinstall --nogpgcheck http://mirrors.aliyun.com/epel/6/x86_64/epel-release-6-8.noarch.rpm

安装阿里云Epel源

1、 首先卸载以前装的epel以免影响

rpm -e epel-release

2、 下载阿里提供的epel

wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo

3、yum clean all

4、yum makecache

阿里云源安装示例:

Epel安装很简单

1、备份(如有配置其他epel源)

mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
 
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup

2、下载新repo 到/etc/yum.repos.d/

epel(RHEL 7)

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

epel源:rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

更新证书:yum –disablerepo=epel -y update ca-certificates

vim /etc/yum.repos.d/epel.repo

epel(RHEL 6)

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

epel(RHEL 5)

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-5.repo

Nginx的日志文件配置

一、介绍日志文件格式
日志文件的记录是有格式的,我们可以按系统默认的格式去记录,也可以按我们自定义的格式去记录。可以用log_format指令来设置Nginx服务器的日志文件的记录格式。

二、日志格式说明

log_format main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

main:日志格式
$remote_addr:客户端ip地址
$remote_user:客户端用户名
$request:请求的url
$status:请求状态(比如:正在请求中,请求完成等状态)
$body_bytes_sent:发送给客户端的字节数(服务端返回给客户端数据的大小)
$http_referer:原网页的url(从哪个url打开的所访问的页面)
$http_user_agent:客户端的浏览器记录的信息(比如是google浏览器,那么就记录google浏览器的类型等基本信息)
$http_x_forwarded_for:客户端ip地址(类似于$remote_addr)

通常情况下用以上配置即可,可以将main换成combined(默认的日志格式),其他不变即可。

三、Nginx日志文件存储路径配置
1、说明
日志文件在记录的时候,需要存储到磁盘上,存储的路径是可配置的,通过access_log指令来配置Nginx的日志文件的存储路径。
2、修改配置
access_log logs/access.log main;
logs/access.log:这个为日志文件的存放路径,从安装目录开始,意思绝对路径为:/usr/local/nginx/logs/access.log
main:为日志格式,通常为combined
若不想记录Nginx的日志,则将access_log路径配成off即可,如下:
access_log off;

四、Nginx日志文件的切割
1、说明:
为了使Nginx的日志文件存储更合理、有序,我们需要将日志文件进行分开存储,比如我们可以按时间来分开,今天的日志文件存储到一个文件中,明天的日志文件则存储到另一个新的文件中等等。这时候就需要用到了Nginx的日志文件的切割。

有两种方式:
1、手动进行切割
步骤:分两步骤。
(1)进入logs目录。执行命令
mv access.log xxx(随便起个名).log
意思是说将以前的日志文件重命名为一个新的名字的日志文件。
(2)执行命令
kill -USR1 主进程号(需要先用ps -ef|grep nginx命令找到master的进程号)
kill -USR1 主进程号 这个命令在信号控制那章节有提到。进行日志切割的命令。

操作完(1)(2)两步骤后,在logs目录下ls一下,会发现又自动多出了一个日志文件(这个日志文件的命名来源于nginx.conf文件里的access_log的路径),并且里面无内容。这个文件就是切割出来的新文件,再有日志会往这里面写,而不会操作老日志文件。

2、自动进行切割
步骤:
(1)首先创建个sh文件(称为批处理日志文件),进入nginx的logs目录运行命令
touch cutlog.sh(文件名自定义,后缀.sh即可)

(2)编辑cutlog.sh文件。输入如下内容:
vi cutlog.sh

D=$(date +%Y%m%d)
LOGS_PATH=/usr/local/nginx/logs
mv /usr/local/nginx/logs/access.log /${LOGS_PATH}/${D}.log
kill -USR1 $(cat /usr/local/nginx/nginx.pid)

说明:

D=$(date +%Y%m%d),声明个变量,名为D(自定义),值为date(Linux自带的,类似于函数,用于获取当前时间,并且格式为年月日)
${D}:引用上面变量名为D的变量
$(cat /usr/local/nginx/nginx.pid):cat命令意思是查看。nginx.pid:存储的是nginx的主进程号。连起来的意思就是查看nginx主进程号,带上$(xx)就是说拿到xx

(3)定时执行某个文件,输入如下命令:(注意:运行crontab命令需要先用yum进行安装crontab,否则会出现command not found)
crontab -e
crontab:定时执行某个文件
crontab -e:编辑定时执行的内容

(4)执行完(3)后会出现编辑器,输入如下内容:
23 59 *** /bin/bash /usr/local/nginx/logs/cutlog.sh
含义:在每天23点59分定时执行cutlog.sh文件,这样就实现了每天定时切割日志文件了。
原理:只是将手动切割写成个脚本。

如有需要每隔1个月就备份日志到其他地方并删除原位置的日志等类似需求都可以写个shell脚本,然后用linux的crontab来定时执行。

PHP7.4编译安装问题解决

PHP 7+ 版本极大地改进了性能,在一些WordPress基准测试当中,性能可以达到PHP 5.6的3倍。而PHP 5.6版本在2018年底官方已经不再维护,升级PHP 7是必然选择。

centos7 编辑安装php遇到的问题:

解决 configure: error: no acceptable C compiler found in $PATH 错误

yum install -y gcc gcc-c++

解决 error: the HTTP XSLT module requires the libxml2/libxslt 错误

yum -y install libxml2 libxml2-dev
yum -y install libxslt-devel

解决 error: the HTTP image filter module requires the GD library. 错误

yum -y install gd-devel

解决 error: the GeoIP module requires the GeoIP library. 错误

yum -y install GeoIP GeoIP-devel GeoIP-data

解决 error: the Google perftools module requires the Google perftools 错误

yum -y install gperftools

解决 error: libatomic_ops library was not found. 错误

yum -y install libuuid-devel libblkid-devel libudev-devel fuse-devel libedit-devel libatomic_ops-devel

解决 error trying to exec ‘cc1plus’: execvp: No such file or directory 错误

yum -y install gcc-c++

解决 error: [pool www] cannot get uid for user ‘www-data’ 错误

groupadd www-data
useradd -g www-data www-data

解决configure: error: mbed TLS libraries not found. 错误。
需要安装mbedtls

CentOS 7/8 源码安装 mbedtls 2.16.3, 解决configure: error: mbed TLS libraries not found. 错误。

1、下载并解压

wget https://tls.mbed.org/download/mbedtls-2.16.3-gpl.tgz
tar -xf mbedtls-2.16.3-gpl.tgz
cd mbedtls-2.16.3

备用下载地址:https://down.24kplus.com/linux/mbedtls/mbedtls-2.16.3-gpl.tgz

2、编译安装

make
make DESTDIR=/usr install
ldconfig

如果出现 make[1]: python2: Command not found 错误,执行:

yum -y install python2

如果出现 /usr/bin/env: ‘perl’: No such file or directory 错误,执行:

yum -y install perl

 

解决 error: Cannot find OpenSSL’s <evp.h> 错误

yum install openssl openssl-devel
ln -s /usr/lib64/libssl.so /usr/lib/

解决 error: Libtool library used but ‘LIBTOOL’ is undefined 错误

yum install libtool

解决 exec: g++: not found 错误

yum -y update gcc
yum -y install gcc+ gcc-c++

解决 configure: error: tss lib not found: libtspi.so 错误

yum install trousers-devel

解决 Can’t exec “autopoint”: No such file or directory 错误

yum install gettext gettext-devel gettext-common-devel

解决 configure: error: libcrypto not found. 错误

yum remove openssl-devel
yum -y install openssl-devel

解决 configure: error: Package requirements (libffi >= 3.0.0) were not met: No package ‘libffi’ found 错误

yum install libffi-devel

解决 fatal error: uuid.h: No such file or directory 错误

yum install e2fsprogs-devel uuid-devel libuuid-devel

解决 configure: error: openssl lib not found: libcrypto.so 错误

yum install openssl-devel

解决 tar (child): lbzip2: Cannot exec: No such file or directory 错误

yum -y install bzip2

解决 configure: error: C++ preprocessor “/lib/cpp” fails sanity check 错误

yum install gcc-c++

解决 configure: error: Please reinstall the BZip2 distribution 错误

yum install bzip2 bzip2-devel

解决 configure: error: cURL version 7.15.5 or later is required to compile php with cURL support 错误

yum install curl-devel

解决 configure: error: not found. Please provide a path to MagickWand-config or Wand-config program 错误

yum install ImageMagick-devel

解决 configure: error: no acceptable C compiler found in $PATH 错误

yum install gcc

解决 configure: error: Package requirements (icu-uc >= 50.1 icu-io icu-i18n) were not met: 错误

yum install libicu-devel

解决 configure: error: Package requirements (sqlite3 > 3.7.4) were not met: No package ‘sqlite3’ found 错误

yum install sqlite-devel

解决 configure: error: Package requirements (oniguruma) were not met: No package ‘oniguruma’ found 错误

yum install oniguruma oniguruma-devel

使用源代码安装。

wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz 
tar -zxvf oniguruma-6.9.4.tar.gz
cd oniguruma-6.9.4/
./autogen.sh
./configure
make
sudo make install

解决 bash: make: 未找到命令…

需要安装gcc,执行一下就可以了:

yum -y install gcc automake autoconf libtool make
yum install gcc gcc-c++

解决 configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:

Package ‘libzip’, required by ‘virtual:world’, not found
Package ‘libzip’, required by ‘virtual:world’, not found
Package ‘libzip’, required by ‘virtual:world’, not found

第一步:

rpm -q libzip    rpm -q libzip-devel 查看是否有安装过,如果有,卸载它。yum remove libzip-devel libzip

第二步:

下载

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

解压

tar -xvf libzip-1.7.3.tar.gz

安装cmake3

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

安装libzip

cd libzip-1.7.3/
mkdir build && cd build
cmake ..
make && make install

源码地址

https://pkgs.org/search/?q=libzip

通过源码安装

yum install http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/libzip-1.5.2-1.module_el8.2.0+314+53b99e08.x86_64.rpm
yum install http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/libzip-devel-1.5.2-1.module_el8.2.0+314+53b99e08.x86_64.rpm

解决 No package ‘libxml-2.0’ found缺失libxml2.0 库,错误:

yum -y install libxml2
yum -y install libxml2-devel

解决 configure: error: Package requirements (libxslt >= 1.1.0) were not met:No package ‘libxslt’ found 错误

yum install libxslt-devel

解决 configure: error: Package requirements (libpng) were not met:No package ‘libpng’ found 错误

yum install libpng-devel

解决 configure: error: Cannot find ldap.h 错误

yum install openldap
yum install openldap-devel

解决 configure: error: Cannot find ldap libraries in /usr/lib 错误

cp -frp /usr/lib64/libldap* /usr/lib/

解决 configure: error: Package requirements (libcurl >= 7.15.5) were not met: 错误

yum install libcurl-devel

解决 configure: error: Package requirements (krb5-gssapi krb5) were not met:

yum -y install krb5-devel

解决 configure: error: Package requirements (libjpeg) were not met:

yum install -y libjpeg-devel

解决 configure: error: Package requirements (freetype2) were not met:

yum -y install freetype freetype-devel

解决 configure: error: Package requirements (libpcre2-8 >= 10.30) were not met:

wget https://ftp.pcre.org/pub/pcre/pcre2-10.35.tar.gz
tar xzvf pcre2-10.35.tar.gz
cd pcre2-10.35

./configure --prefix=/usr/local/pcre2 \
--enable-pcre2-16 \
--enable-pcre2-32 \
--enable-jit \
--enable-jit-sealloc

make && make install

export PKG_CONFIG_PATH=/usr/local/pcre2/lib/pkgconfig/