前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS 8 (一)

CentOS 8 (一)

作者头像
Kevin song
发布2020-05-29 15:15:09
1.2K0
发布2020-05-29 15:15:09
举报
文章被收录于专栏:运维监控日志分析

在 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 默认软件组件(部分软件)

代码语言:javascript
复制
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 中把软件源分成了两部分:

  • BaseOS 存储库 :以传统 RPM 包的形式提供底层核心 OS 内容
  • AppStream 存储库 :提供用户空间中运行的所有应用程序

DNF 使用

代码语言:javascript
复制
#查看系统中可用的 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来生效新的网络配置

代码语言:javascript
复制
[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 操作

代码语言:javascript
复制
#查看网卡设备信息
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

代码语言:javascript
复制
#添加ens224 网卡
nmcli connection add type ethernet con-name ens224 ifname ens224
删除一个网卡连接
nmcli connection delete ens224

修改网卡

注:修改的是 /etc/sysconfig/network-scripts/ 下的网卡配置文件

代码语言:javascript
复制
#设置为自启动网卡(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工具配置网络(图形化工具)

代码语言:javascript
复制
nmtui

系统优化

关闭selinux

代码语言:javascript
复制
#关闭selinux
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

系统软件包

代码语言:javascript
复制
dnf install sysstat traceroute  net-tools telnet  tree net-snmp-utils  vim lrzsz tcpdump wget git

解压缩命令tar 、zip

代码语言:javascript
复制
############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 安装配置

代码语言:javascript
复制
#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的程序配置

代码语言:javascript
复制
#查询程序包安装目录文件信息
rpm -ql chrony
主配置文件:/etc/chrony.conf
客户端程序:/usr/bin/chronyc
服务端程序:/usr/sbin/chronyd

推荐的中国NTP公共时间同步服务器

代码语言:javascript
复制
国家-中图:cn.pool.ntp.org
中国:cn.ntp.org.cn
阿里云:ntp.aliyun.com
腾讯云:time1.cloud.tencent.com

安装chrony服务

代码语言:javascript
复制
dnf install chrony

chrony配置文件

代码语言:javascript
复制
#配置文件修改
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

#查看时间同步源,查看时间同步进度

代码语言:javascript
复制
chronyc sources –v 

*说明时间同步完成,如果为?说明不成功

#查看时间同步源状态

代码语言:javascript
复制
chronyc sourcestats -v

#校准时间服务器:

代码语言:javascript
复制
chronyc tracking

防火墙

代码语言:javascript
复制
firewall-cmd --add-service=ntp --permanent
firewall-cmd --reload
firewall-cmd --list-all

时区配置

代码语言:javascript
复制
#修改系统时区Asia/Shanghai
cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
#查看当前时区
timedatectl

客户端时间同步

代码语言:javascript
复制
[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

时间同步计划任务

代码语言:javascript
复制
*/10 * * * * /usr/sbin/ntpdate 192.168.99.107; /sbin/hwclock -w

Nginx

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强。

Nginx 部署

代码语言:javascript
复制
#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 发布文件目录

代码语言:javascript
复制
#开启目录浏览功能;autoindex on;  
#关闭详细文件大小统计,让文件大小显示MB,GB单位,默认为b;               
autoindex_exact_size off;  
#开启以服务器本地时区显示文件修改日期;    
autoindex_localtime on;

Nginx 正向代理

由于安全考虑,特定区域的主机正常情况下不能访问外网,但在项目部署的时候新部署主机需要连接外网安装软件和wget文件,解决方案为使用Nginx正向代理实现主机上网。

Nginx 配置文件

代码语言:javascript
复制
[root@Ntp-Server conf.d]# cat  proxy.conf 
server { 
          resolver 114.114.114.114;
          listen 8088;
          location / {
                        proxy_pass http://$http_host$request_uri;
                }
        }
        
代码语言:javascript
复制
#查看监听端口
netstat -auntlp |grep 8088
#防火墙
firewall-cmd  --add-port=8088/tcp --permanent
firewall-cmd  --reload

CentOS 客户端配置

代码语言:javascript
复制
#编辑添加参数
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会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

代码语言:javascript
复制
#安装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

代码语言:javascript
复制
#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用户

代码语言:javascript
复制
#编辑配置文件
vim /etc/php-fpm.d/www.conf 
user = nginx
group = nginx
#重启服务
systemctl restart php-fpm

Nginx 配置

代码语言:javascript
复制
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;
    }
代码语言:javascript
复制
#检查nginx 配置文件
nginx -t
重启Nginx 服务
systemctl restart nginx

创建info.php ,链接php info

代码语言:javascript
复制
cd /usr/share/nginx/html/
vim info.php
<?php
phpinfo();
?>

测试nginx 连接 php info

http://192.168.99.107/info.php

PHP 优化

代码语言:javascript
复制
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。

代码语言:javascript
复制
netstat  -auntlp |grep   9000

php 7 默认不再监听9000端口,而监听的是/run/php-fpm/www.sock!

解决方案

1,修改/etc/php-fpm.d/www.conf 配置文件,用;注释掉sock监听的方式,增加9000端口监听。

代码语言:javascript
复制
;listen = /run/php-fpm/www.sock
listen = 9000

2,修改Nginx 配置文件(上述PHP部署使用该方案)

Mariadb

Mariadb安装

代码语言:javascript
复制
#安装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数据库

代码语言:javascript
复制
#创建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 安装

代码语言:javascript
复制
#关闭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 配置

代码语言:javascript
复制
#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

登录数据库

代码语言:javascript
复制
psql  -Upostgres -h 192.168.99.107

创建数据库

代码语言:javascript
复制
#创建zabbix用户和密码
create user zabbix with password 'zabbixpwd123';
#创建zabbix数据库
create database zabbix owner zabbix;
#设置数据库权限
grant all privileges on database zabbix to zabbix;
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档