在 RHEL 7 发布时隔五年后Red Hat Enterprise Linux 8 正式发布,不得不感慨五年前搬砖的我五年后依旧不忘初心继续搬砖。。。
Red Hat Enterprise Linux 8.0基于Fedora 28和上游Linux内核4.18版本,为用户提供了跨混合云和数据中心部署的安全,稳定和一致的基础,以及支持所有级别工作负载所需的工具。
RHEL 8中提供的YUM版本是v4,基于DNF的YUM而RHEL 7上使用的先前YUM v3。
RHEL 8 默认软件组件(部分软件)
Python 3.6
MariaDB 10.3、MySQL 8.0、PostgreSQL 10;
PHP 7.2
httpd 2.4、Nginx 1.14
Redis 4.0
Centos 8.1 系统安装
Install CentOS Linux 8
语言英文
硬盘配置
时区
最小化安装
Root 密码
Reboot
DNF
在 CentOS 8 中、使用了基于DNF技术(YUM v4)的 YUM 工具。CentOS 8 中把软件源分成了两部分:
DNF 使用
#查看系统中可用的 DNF 软件库
dnf repolist
#查看系统中可用和不可用的所有的 DNF 软件库
dnf repolist all
#列出所有 RPM 包
dnf list
dnf list |grep nginx
#列出所有安装了的 RPM 包
dnf list installed
#列出所有可供安装的 RPM 包
dnf list available
#搜索软件库中的 RPM 包
dnf search nginx
#查找某一文件的提供者
dnf provides snmpwalk
#查看软件包详情
dnf info nginx
#安装软件包
dnf install nginx
#删除软件包
dnf remove nginx
#删除无用孤立的软件包
dnf autoremove
#删除缓存的无用软件包
dnf clean all
#获取有关某条命令的使用帮助
dnf help clean
#查看 DNF 命令的执行历史
dnf history
#查看所有的软件包组
dnf grouplist
#从特定的软件包库安装特定的软件
dnf -enablerepo=epel install nginx
#重新安装特定软件包
dnf reinstall nginx
Network
CentOS 8 弃用network.service,采用NetworkManager(NM)管理网卡服务。
手工配置ifcfg,使用nmcli来生效新的网络配置
[root@Ntp-Server network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@Ntp-Server network-scripts]# ls
ifcfg-ens192 ifcfg-ens224
#重启网卡
nmcli connection reload
nmcli connection up ens192
使用nmcli来管理网络
nmcli 操作
#查看网卡设备信息
nmcli
#查看网卡设备详细信息
nmcli device show / nmcli device show ens33
#查看网卡设备状态
nmcli device status
#查看网卡具体信息
nmcli connection show / nmcli connection show ens33
#查看所有活动连接
nmcli connection show --active
#up/down网卡
nmcli connection up ens33
nmcli connection down ens33
#重启网卡
nmcli connection reload
#DNS 配置
vim /etc/resolv.conf
nameserver 114.114.114.114
nameserver 8.8.8.8
添加网卡连接
注:配置文件目录:/etc/sysconfig/network-scripts/* 添加配置时,自动生成网卡配置文件 ens224
#添加ens224 网卡
nmcli connection add type ethernet con-name ens224 ifname ens224
删除一个网卡连接
nmcli connection delete ens224
修改网卡
注:修改的是 /etc/sysconfig/network-scripts/ 下的网卡配置文件
#设置为自启动网卡(ONBOOT=yes)
nmcli connection modify ens224 connection.autoconnect yes
#设置IP地址获取方式是手动或者DHCP,手动(BOOTPROTO=none)
nmcli connection modify ens224 ipv4.method manual ipv4.addresses 192.168.123.206/24
#dhcp(BOOTPROTO=dhcp)
nmcli connection modify ens224 ipv4.method auto
#修改IP地址(IPADDR=192.168.123.206 PREFIX=24)
nmcli connection modify ens224 ipv4.addresses 192.168.123.206/24
#修改网关(GATEWAY=192.168.123.1)
nmcli connection modify ens224 ipv4.gateway 192.168.123.1
#添加第二个IP地址(IPADDR1=172.16.10.10 PREFIX1=24)
nmcli connection modify ens224 +ipv4.addresses 192.168.123.207/24
#添加DNS(DNS1=192.168.1.19)
nmcli connection modify ens224 ipv4.dns 192.168.1.19
#添加第二个DNS(DNS2=8.8.8.8)
nmcli connection modify ens224 +ipv4.dns 8.8.8.8
#删除第二个DNS
nmcli connection modify ens224 -ipv4.dns 8.8.8.8
nmtui工具配置网络(图形化工具)
nmtui
系统优化
关闭selinux
#关闭selinux
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
系统软件包
dnf install sysstat traceroute net-tools telnet tree net-snmp-utils vim lrzsz tcpdump wget git
解压缩命令tar 、zip
############tar############
#压缩mnt目录命名opt.tar1.gz
tar -zcPf opt.tar1.gz /mnt
#解压opt.tar1.gz文件
tar -zxvf opt.tar1.gz
#解压opt.tar1.gz文件到/data/目录下
tar -zxvf opt.tar1.gz -C /data/
############zip############
#压缩/mnt/data/命名data.zip
zip -r data.zip /mnt/data/
#unzip data.zip 到 /opt目录下
unzip data.zip -d /opt/
Cockpit
Cockpit 是一个基于 Web 的服务器管理工具,可用于 CentOS 和 RHEL 系统。在 CentOS 8 中cockpit 是默认的服务器管理工具。它的软件包在默认的 CentOS 8 和 RHEL 8 仓库中就有。Cockpit 是一个有用的基于 Web 的 GUI 工具,系统管理员可以通过该工具监控和管理 Linux 服务器,它还可用于管理服务器、容器、虚拟机中的网络和存储,以及检查系统和应用的日志。
cookpit 安装配置
#dnf 安装 cockpit
dnf install cockpit -y
#启动并开机启动cockpit.socket
systemctl start cockpit.socket && systemctl enable cockpit.socket
#查看监听端口
netstat -auntlp |grep 9090
ps -ef |grep cockpit.socket
#防火墙
firewall-cmd --permanent --add-service=cockpit
firewall-cmd --reload
#磁盘管理插件
yum install -y cockpit-storaged
#多台主机管理插件
yum install -y cockpit-dashboard
Web 浏览器并输入 url:https://<IP>:9090
Chrony时钟服务器
chrony是CentOS 8上自带的时间同步开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确。是一个ntp协议的实现程序,既可以当做服务端,也可以充当客户端;它专为间歇性互联网连接的系统而设计,当然也能良好应用于持久互联网连接的环境;chrony有三个时间参考:硬件时钟、实时时钟以及手动同步。
它由两个程序组成:chronyd和chronyc。
chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。
chrony的程序配置
#查询程序包安装目录文件信息
rpm -ql chrony
主配置文件:/etc/chrony.conf
客户端程序:/usr/bin/chronyc
服务端程序:/usr/sbin/chronyd
推荐的中国NTP公共时间同步服务器
国家-中图:cn.pool.ntp.org
中国:cn.ntp.org.cn
阿里云:ntp.aliyun.com
腾讯云:time1.cloud.tencent.com
安装chrony服务
dnf install chrony
chrony配置文件
#配置文件修改
vim /etc/chrony.conf
#配置同步NTP服务器时间地址,建议配置二个以上
server ntp.aliyun.com iburst
server cn.pool.ntp.org iburst
server time1.cloud.tencent.com iburst
# 根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中。driftfile /var/lib/chrony/drift
# 时间纠偏
makestep 1.0 3
#rtcsync指令将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)
rtcsync
#在所有支持硬件的接口上启用硬件时间戳。
#hwtimestamp *
# 增加需要调整的最小可选信号源数量 系统时钟
#minsources 2
# 允许指定网络的主机同步时间,默认开启。不指定拒绝所有地址!
allow 0.0.0.0/0
# 服务时间,即使未同步到任何NTP服务器也允许向客户端同步不精确的时间。
#local stratum 10
# 指定包含NTP身份验证密钥的文件。
keyfile /etc/chrony.keys
#从系统tz数据库中获取TAI-UTC偏移和闰秒。
leapsectz right/UTC
#指定日志文件的目录。
logdir /var/log/chrony
#选择要记录的信息。
#log measurements statistics tracking
#查看时间同步源,查看时间同步进度
chronyc sources –v
*说明时间同步完成,如果为?说明不成功
#查看时间同步源状态
chronyc sourcestats -v
#校准时间服务器:
chronyc tracking
防火墙
firewall-cmd --add-service=ntp --permanent
firewall-cmd --reload
firewall-cmd --list-all
时区配置
#修改系统时区Asia/Shanghai
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#查看当前时区
timedatectl
客户端时间同步
[root@COS-01 ~]# ntpdate 192.168.99.107
25 May 09:41:55 ntpdate[9603]: adjust time server 192.168.99.107 offset -0.003098 sec
时间同步计划任务
*/10 * * * * /usr/sbin/ntpdate 192.168.99.107; /sbin/hwclock -w
Nginx
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强。
Nginx 部署
#rpm 安装nginx
rpm -ivh http://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.16.1-1.el8.ngx.x86_64.rpm
#dnf安装nginx
dnf -y install http://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.16.1-1.el8.ngx.x86_64.rpm
#启动nginx
systemctl start nginx
#开机启动nginx
systemctl enable nginx
#查看nginx 安装目录
rpm -ql nginx
#查看nginx 软件版本
rpm -qa nginx
nginx -V
#检查nginx 配置文件
nginx -t
#重载nginx
systemctl reload nginx
#防火墙
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
Nginx 发布文件目录
#开启目录浏览功能;autoindex on;
#关闭详细文件大小统计,让文件大小显示MB,GB单位,默认为b;
autoindex_exact_size off;
#开启以服务器本地时区显示文件修改日期;
autoindex_localtime on;
Nginx 正向代理
由于安全考虑,特定区域的主机正常情况下不能访问外网,但在项目部署的时候新部署主机需要连接外网安装软件和wget文件,解决方案为使用Nginx正向代理实现主机上网。
Nginx 配置文件
[root@Ntp-Server conf.d]# cat proxy.conf
server {
resolver 114.114.114.114;
listen 8088;
location / {
proxy_pass http://$http_host$request_uri;
}
}
#查看监听端口
netstat -auntlp |grep 8088
#防火墙
firewall-cmd --add-port=8088/tcp --permanent
firewall-cmd --reload
CentOS 客户端配置
#编辑添加参数
vim /etc/profile
export http_proxy=http://192.168.99.107:8088
export https_proxy=http://192.168.99.107:8088
#重载文件
source /etc/profile
---------------------------------------------------
#使用dnf安装软件或者wget 外网文件测试
wget
wget是一个下载文件的工具,wget支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成。wget 非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。
#安装wget
dnf install wget
#下载压缩包
wget http://192.168.99.107/software/kafka_2.12-2.5.0.tgz
#下载压缩包并重命名
wget -O kafka.tgz http://192.168.99.107/software/kafka_2.12-2.5.0.tgz
#断点续传(下载大文件时网络不稳定使用)
wget -c
#后台下载
wget -b
#指定文件保存目录
wget -P /opt/software/ http://192.168.99.107/software/kafka_2.12-2.5.0.tgz
PHP
#PHP 组件安装
dnf install php php-opcache php-gd php-curl php-mysqlnd php-fpm
#查看PHP组件版本
rpm -qa php-*
php -v
php-fpm 配置
默认情况下,PHP FPM以用户apache的身份运行,修改为nginx用户
#编辑配置文件
vim /etc/php-fpm.d/www.conf
user = nginx
group = nginx
#重启服务
systemctl restart php-fpm
Nginx 配置
location ~ \.php$ {
root html;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
#检查nginx 配置文件
nginx -t
重启Nginx 服务
systemctl restart nginx
创建info.php ,链接php info
cd /usr/share/nginx/html/
vim info.php
<?php
phpinfo();
?>
测试nginx 连接 php info
http://192.168.99.107/info.php
PHP 优化
vim /etc/php.ini
expose_php = Off #禁止显示php版本的信息
short_open_tag = On #取消前面的;,修改为On。表示支持php短标签
cgi.fix_pathinfo=1 #将注释去掉,开启PHP的pathinfo伪静态功能。post_max_size = 100M #单提交的最大数据,此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的,默认8M
upload_max_filesize = 50M #上载文件的最大许可大小 ,默认2M
max_execution_time = 600 #脚本运行的最长时间,默认30秒
max_input_time = 600 #脚本可以消耗的时间,默认60秒
memory_limit = 256M #脚本运行最大消耗的内存,根据你的需求更改数值,默认128M
date.timezone = asia/shanghai #设置时区
PHP 7无法监听9000端口Nginx 无法访问测试页面
故障定位,查看9200 端口无监听,nginx 访问日志报错502。
netstat -auntlp |grep 9000
php 7 默认不再监听9000端口,而监听的是/run/php-fpm/www.sock!
解决方案
1,修改/etc/php-fpm.d/www.conf 配置文件,用;注释掉sock监听的方式,增加9000端口监听。
;listen = /run/php-fpm/www.sock
listen = 9000
2,修改Nginx 配置文件(上述PHP部署使用该方案)
Mariadb
Mariadb安装
#安装mariadb
dnf install mariadb-server mariadb -y
#启动并开机启动
systemctl start mariadb && systemctl enable mariadb
#防火墙
firewall-cmd --add-service=mysql --permanent
firewall-cmd --reload
查看数据库版本
初始化数据库
登录数据库
mysql -uroot -p
创建zbbix数据库
#创建zabbix 数据库,并且使用utf8 数据库编码;
create database zabbix character set utf8 collate utf8_bin;
#赋予权限,允许zabbix账户从localhost 访问zabbix库;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix@zabbix';
#赋予权限,允许zabbix账户从任意客户端访问zabbix库
grant all PRIVILEGES on zabbix.* to 'zabbix'@'%' IDENTIFIED BY 'zabbix@zabbix' WITH GRANT OPTION;
#刷新权限
flush privileges;
#查款数据库
show databases;
PostgreSQL
PostgreSQL 安装
#关闭centos内置postgresql模块
dnf -qy module disable postgresql
#启动官方的PostgreSQL Yum存储库
dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
#安装PostgreSQL 12服务器端和客户端
dnf install postgresql12 postgresql12-server
#初始化数据库
/usr/pgsql-12/bin/postgresql-12-setup initdb
#启动并开机启动
systemctl start postgresql-12 && systemctl enable postgresql-12
#查看服务状态
systemctl status postgresql-12
PostgreSQL 配置
#Postgresyum 安装默认会创建一个postgres的用户
#设置 postgres密码
passwd postgres
#切换到postgres用户
su postgres
#执行psql ,进入postgres的命令行
psql
#退出
\q
#在psql命令行修改默认用户密码(默认无密码)
[root@Ntp-Server /]# su postgres
bash-4.4$ psql -c "ALTER USER postgres WITH PASSWORD 'postgres@postgres';"
ALTER ROLE
#修改postgres的监听地址,默认只能为 本地连接
vim /var/lib/pgsql/12/data/postgresql.conf
listen_addresses = '*'
#允许所有地址 来连接该数据库
vim /var/lib/pgsql/12/data/pg_hba.conf
host all all 0.0.0.0/0 md5
host all all ::1/128 md5
#重启服务
systemctl restart postgresql-12
登录数据库
psql -Upostgres -h 192.168.99.107
创建数据库
#创建zabbix用户和密码
create user zabbix with password 'zabbixpwd123';
#创建zabbix数据库
create database zabbix owner zabbix;
#设置数据库权限
grant all privileges on database zabbix to zabbix;