CentOS安装使用中遇到的问题及解决方法
第一部分 安装CentOS
一、CentOS安装
以下以CentOS8为例,讲解安装过程。
1、下载CentOS系统镜像
官网地址
http://isoredirect.centos.org/centos/8/isos/x86_64/
http://mirrors.cqu.edu.cn/CentOS/8.3.2011/isos/x86_64/
阿里云站点下载
http://mirrors.aliyun.com/centos/
http://mirrors.aliyun.com/centos/8/isos/x86_64/
2、安装CentOS系统前准备
A、开启Hyper-V功能服务
依次打开:
控制面板->程序->程序和功能->启用或关闭Windows功能->勾选Hyper-V
B、启动Hyper-V程序
开始菜单搜索Hyper-V:
C、配置虚拟机网络
选择“虚拟机交换机管理器”
- 这里可以使用“Default Switch”或“新建虚拟网络交换机”;
- 我因为是用WiFi联网的,所以新建了一个“VMWAN”虚拟网络交换机;
- 选择使用上网的那张网卡就可以了;
D、开始创建虚拟机
开始新建直接选择“下一页”
起一个虚拟机名称,选择虚拟机存储位置,会自动在选择的目录下面创建与所起是虚拟机名称一样的文件夹;
非Windows系统一般选择第一代;
指定虚拟机的内存大小,会根据使用情况动态分配;
选择前面准备的虚拟网络交换机;
设置虚拟硬盘大小;
选择前面下载的CentOS系统iso镜像;
完成虚拟机创建;
3、开始安装CentOS系统
A、连接到刚才创建的虚拟机;
B、启动虚拟机;
C、选择Install CentOS Linux 8;
D、设置系统语言(根据自己个人需要);
E、设置安装的硬盘位置;
这里默认自动分配,点击“完成”就可以了;
F、设置网络和主机名;
这里选择之前的网络交换机,打开网络;
G、设置软件安装源;
这里我们使用阿里云的软件安装源,下面的地址;
mirrors.aliyun.com/centos/8/BaseOS/x86_64/os
H、设置软件选择;
这里我们为了节省硬盘空间,选择最小安装;
I、设置时间日期时区;
这里我们选择亚洲上海市区;
J、开始安装系统;
点击开始安装,趁这个时间可以设置root密码和创建用户;
K、设置root密码和创建用户;
略,按要求操作就可以了;
L、等待安装系统完成;
安装完成!
重启虚拟机,可以看到已经进入CentOS系统了;
输入之前设置的用户名和密码就可以登录金系统了;
进入系统后可能还存在很多问题,文章第二部分讲解系统的基本配置;
第二部分 配置使用CentOS
一、CentOS 7网络配置(安装后无法联网问题)
现象说明
在安装CentOS系统后,有可能出现无法联网的问题,虚拟机中的网络配置并没有问题,而系统却无法联网,也ping不通。
原因描述
CentOS默认开机不启动网络,因此需要对网络进行配置,开启网络开机启动。
解决方法
1.打开终端,使用ip addr命令查看一下网络信息;
图中圈出的是系统网络名称,我们稍后会用到它,有的系统是ens33,有的是eth0等;
2.切换至root用户,输入命令vi /etc/sysconfig/network-scripts/ifcfg-<系统网络名称>
,我的是ens33,所以输入vi /etc/sysconfig/network-scripts/ifcfg-ens33
命令;
3.进入vi界面,可以看到,ONBOOT的值是no,我这里已经修改过了,所以是yes;
4.使用vi命令将ONBOOT=no的值改为yes;
5.保存后退出,重启系统(可以reboot
命令重启)。重启完成后,可以使用浏览器打开个网页看看,也可以使用ping
命令测试网络连通性;
ping www.baidu.com
二、联网后就可以开始更新系统库文件
检查DNS设置
1.编辑/etc/resolv.conf
文件,确保其中包含有效的DNS服务器,例如Google的公共DNS:
sudo nano /etc/resolv.conf
sudo vi /etc/resolv.conf
2.添加以下内容:
nameserver 8.8.8.8
nameserver 8.8.4.4
检查YUM仓库配置
国内一般使用国内的镜像源,国外的镜像源速度很慢,有时候甚至不能用;
1.先备份原来的配置:
sudo cp -a /etc/yum.repos.d /etc/yum.repos.d /etc/yum.repos.d /etc/yum.repos.d.backup
2.我们使用阿里云的镜像源:
sudo nano /etc/yum.repos.d/CentOS-Base.repo
3.将原内容替换为一下内容:
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
4.清理并重建缓存
sudo yum clean all
sudo yum makecache
sudo yum update
5.总结
出现Cannot find a valid baseurl for repo:base/7/x86_64错误通常是由于网络连接问题、DNS设置问题或YUM仓库配置问题引起的。通过检查并修复网络连接、更新DNS设置、修改YUM仓库配置或使用可靠的镜像源,如阿里云镜像源,可以解决这个问题。希望本指南能够帮助你顺利解决该错误,提高YUM包管理的稳定性和效率。
6.CentOS8可以更简便的方法配置源
先直接删除/etc/yum.repos.d目录下所有的配置文件;
然后执行命令从阿里云上下载配置;
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
直接下载到对应目录下即可;
三、CentOS常用命令
其他同Ubuntu的命令在此处略
详情可以查看本人blog的其他类似文章
软件包管理
1.RPM命令使用
rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。
命令 | 解析 |
rpm [OPTIONS] PACHAGE_FILE | 命令格式 |
rpm -ivh your-package | 直接安装 |
rpmrpm --force -ivh your-package.rpm | 忽略报错,强制安装 |
rpm -ql | 查询出所有安装过的包 |
rpm -q 包名 | 获得某个软件包的全名 |
rpm -ql 包名 | 获得rpm包中文件安装的位置 |
rpm -e 包名 | 卸载 |
2.YUM命令
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
命令 | 解析 |
yum -y install [package] | 下载并安装一个rpm包 |
yum localinstall [package.rpm] | 安装一个rpm包,使用你自己的软件仓库解决所有依赖关系 |
yum -y update | 更新当前系统中安装的所有rpm包 |
yum update [package] | 更新一个rpm包 |
yum remove [package] | 删除一个rpm包 |
yum list | 列出当前系统中安装的所有包 |
yum search [package] | 在rpm仓库中搜寻软件包 |
yum clean [package] | 清除缓存目录(/var/cache/yum)下的软件包 |
yum clean headers | 删除所有头文件 |
yum clean all | 删除所有缓存的包和头文件 |
网络相关
命令 | 解析 |
ifconfig eth0 | 显示一个以太网卡的配置 |
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 | 配置网卡的IP地址 |
ifdown eth0 | 禁用 ‘eth0’ 网络设备 |
ifup eth0 | 启用 ‘eth0’ 网络设备 |
iwconfig eth1 | 显示一个无线网卡的配置 |
iwlist scan | 显示无线网络 |
ip addr show | 显示网卡的IP地址 |
1.网络服务
#查看IP信息
ip a
#网络连通性测试
ping [选项] 目标主机
#设置网络信息
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#重启network网络服务
service network restart
2 防火墙设置
systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
(1)防火墙基本操作
#查看防火墙状态
systemctl status firewalld
systemctl status firewalld.service
#打开防火墙
systemctl start firewalld
systemctl start firewalld.service
#重启防火墙
systemctl restart firewalld
systemctl restart firewalld.service
#关闭防火墙
systemctl stop firewalld
systemctl stop firewalld.service
#禁止开机启动
systemctl disable firewalld
systemctl disable firewalld.service
#开机启用
systemctl enable firewalld
systemctl enable firewalld.service
#查看服务是否开机启动:
systemctl is-enabled firewalld.service
#查看版本:
firewall-cmd --version
#查看帮助:
firewall-cmd --help
#显示状态:
firewall-cmd --state
#查看当前所有规则
firewall-cmd --list-all
#查看所有打开的端口:
firewall-cmd --zone=public --list-ports
#查看已启动的服务列表:
systemctl list-unit-files|grep enabled
#更新防火墙规则:
firewall-cmd --reload
#查看区域信息:
firewall-cmd --get-active-zones
#查看指定接口所属区域:
firewall-cmd --get-zone-of-interface=eth0
#拒绝所有包:
firewall-cmd --panic-on
#取消拒绝状态:
firewall-cmd --panic-off
#查看是否拒绝:
firewall-cmd --query-panic
#查看启动失败的服务列表:
systemctl --failed
(2)开放防火墙端口
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 新建永久规则,开放8080端口(TCP协议),任何ip都可以访问
firewall-cmd --permanent --add-port=8080/tcp
# 移除上述规则
firewall-cmd --permanent --remove-port=8080/tcp
# 新建永久规则,批量开放一段端口(TCP协议)
firewall-cmd --permanent --add-port=9001-9100/tcp
# --permanent写在前后都可以,例如:
firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=2888/tcp --permanent
sudo firewall-cmd --add-port=3888/tcp --permanent
#–permanent永久生效,没有此参数重启后失效
#添加或者移除规则后重新加载firewall后配置才会生效
firewall-cmd --reload
#查看开放端口号
firewall-cmd --list-all
(3)开放防火墙IP(IP段)
# 新建永久规则,开放192.168.1.1单个源IP的访问
firewall-cmd --permanent --add-source=192.168.1.1
# 新建永久规则,开放192.168.1.0/24整个源IP段的访问
firewall-cmd --permanent --add-source=192.168.1.0/24
# 移除上述规则
firewall-cmd --permanent --remove-source=192.168.1.1
(4)系统服务开放
# 开放http服务
firewall-cmd --permanent --add-service=http
# 移除上述规则
firewall-cmd --permanent --remove-service=http
(5)自定义复杂规则与移除
(注意是否与已有规则冲突)
# 允许指定IP访问本机8080端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" accept'
# 允许指定IP段访问本机8080-8090端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="8080-8090" accept'
# 禁止指定IP访问本机8080端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" reject'
#移除第一条规则(所有的移除规则基本都是add改成remove)
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" accept'
(6)配置完成后,需要重新装载firewall。
也可重新启动firewalld服务。
#添加或者移除规则后重新加载firewall后配置才会生效
firewall-cmd --reload
#重启firewalld
systemctl restart firewalld
#查看开放端口号
firewall-cmd --list-all
(7)其他操作
#禁用防火墙服务
systemctl mask firewalld
#恢复禁用防火墙服务
systemctl unmask firewalld
# 查看白名单端口列表
firewall-cmd --zone=public --list-ports
# 作用域
--zone
# 永久生效,没有此参数重启后失效
--permanent
#获取本机服务器的公网出口ip
curl http://myip.fireflysoft.net/
(8)关于ssh端口爆破
1.设置防火墙白名单/黑名单
2.关闭网段访问
修改配置文件/etc/hosts.allow
使用如下的格式添加ssh访问权限,用于拒绝靶机进行远程ssh登录,提高ssh登录安全性。
sshd:192.168.0.158:allow #允许IP地址为192.168.0.158的主机使用ssh连接
sshd:192.168.0.*:allow #允许IP地址段为:192.168.0.0/24的主机使用ssh连接
sshd:all:deny #拒绝除允许地址之外的所有主机使用ssh连接
3.主机映射文件
#修改主机名与IP映射关系
vi /etc/hosts
系统相关
命令 | 解析 |
su - | 切换到root权限(与su有区别) |
shutdown -h now | 关机 |
shutdown -r now | 重启 |
top | 罗列使用CPU资源最多的linux任务 (输入q退出) |
tree | 以树状图显示 |
pstree | 以树状图显示程序 |
man ping | 查看参考手册(例如ping 命令) |
passwd | 修改密码 |
df -h | 显示磁盘的使用情况 |
cal -3 | 显示前一个月,当前月以及下一个月的月历 |
cal 10 1988 | 显示指定月,年的月历 |
date –date ‘1970-01-01 UTC 1427888888 seconds’ | 把一相对于1970-01-01 00:00的秒数转换成时间 |
1.重启命令
#立刻重启(root用户使用)
reboot
#或者
shutdown -r now
#10分钟后自动重启(root用户使用)
shutdown -r 10
#在时间为20:35时候重启(root用户使用)
shutdown -r 20:35
#如果是通过shutdown命令设置重启的话,可以取消重启
shutdown -c
2.关机命令
#立刻关机(root用户使用)
halt
#或者
poweroff
shutdown -h now
init 0
#10分钟后自动关机
shutdown -h 10
3.hostname命令
#查看主机名
hostname
#设置主机名-临时修改
hostname 主机名
#设置主机名-永久修改
vi /etc/hostname
常用技巧
1.窗体快捷键
命令 | 解析 |
Ctrl + u | 删除光标之前到行首的字符 |
Ctrl + k | 删除光标之前到行尾的字符 |
Ctrl + c | 取消当前行输入的命令,相当于Ctrl + Break |
Ctrl + a | 光标移动到行首(ahead of line),相当于通常的Home键 |
Ctrl + e | 光标移动到行尾(end of line) |
Ctrl + f | 光标向前(forward)移动一个字符位置 |
Ctrl + b | 光标往回(backward)移动一个字符位置 |
Ctrl + l | 清屏,相当于执行clear命令 |
Ctrl + r | 显示:号提示,根据用户输入查找相关历史命令(reverse-i-search) |
Ctrl + w | 删除从光标位置前到当前所处单词(word)的开头 |
Ctrl + t | 交换光标位置前的两个字符 |
Ctrl + y | 粘贴最后一次被删除的单词 |
Ctrl + Alt + d | 显示桌面 |
Alt + b | 光标往回(backward)移动到前一个单词 |
Alt + d | 删除从光标位置到当前所处单词的末尾 |
Alt + F2 | 运行 |
Alt + F4 | 关闭当前窗口 |
Alt + F9 | 最小化当前窗口 |
Alt + F10 | 最大化当前窗口 |
Alt + Tab | 切换窗口 |
Alt + 左键 | 移动窗口(或在最下面的任务栏滚动鼠标滑轮) |
2.操作小技巧
鼠标中间键:粘贴突出显示的文本。(使用鼠标左键来选择文本。把光标指向想粘贴文本的地方。点击鼠标中间键来粘贴。)
Tab:命令行自动补全。使用 shell 提示时可使用这一方式。键入命令或文件名的前几个字符,然后按 [Tab] 键,它会自动补全命令或显示匹配键入字符的所有命令。
在滚动条的空白处点击鼠标中键:屏幕即滚动到那个地方。
在桌面或文件管理器中直接按 / 就可以输入位置,打开文件管理器。
在 vi 或 Firefox 中直接按 / 即可进入快速搜索状态。
网站链接和图片可直接拖放到桌面或者目录,可以马上下载。
直接将文件管理器中的文件拖到终端中就可以在终端中得到完整的路径名。
四、Centos 7 安装 ifconfig命令
相关问题
Centos 7在最小化安装时,系统默认没有安装 ifconfig 命令;
如果直接运行 ifconfig 命令,会提示 -bash: ifconfig :command not found
解决方法
运行 yum -y isntall ifconfig 命令时,结果显示:
net-tools.x86_64:Basic networking tools
继续执行命令 #yum install net-tools.x86_64
安装完成后,就可以正常使用 ifconfig 管理命令了
同时,/sbin 目录下,也会有 ifconfig 文件
五、Centos 7 安装 vim 命令
vim file提示没有vim这个,则需要安装vim;
1.更新库安装包
先执行 yum -y update
更新当前系统中安装的所有rpm包
2.安装vim
执行命令 yum -y isntall vim*
安装完成后就可以使用vim了;
六、CentOS 7升级gcc到10.2.0
1.先安装基本的低版本的gcc
由于 Linux 操作系统的自由、开源,在其基础上衍生出了很多不同的 Linux 操作系统,如 CentOS、Ubuntu、Debian 等。这些 Linux 发行版中,大多数都默认装有 GCC 编译器(版本通常都较低)。
#通过此命令快速安装gcc
yum -y install gcc
yum -y install gcc-c++
通过如上命令得到的gcc通常版本较低。
2.升级gcc
升级gcc需要在系统中包含一个低版本的gcc,和make命令;
1、下载gcc源码包
gnu-gcc安装包下载_开源镜像站-阿里云gnu-gcc安装包是阿里云官方提供的开源镜像免费下载服务,每天下载量过亿,阿里巴巴开源镜像站为包含gnu-gcc安装包的几百个操作系统镜像和依赖包镜像进行免费CDN加速,更新频率高、稳定安全。https://mirrors.aliyun.com/gnu/gcc/
2、解压并切换到解压后的目录
(可以放在了/home/yonghu目录下)
tar -zxvf gcc-10.2.0.tar.gz
cd gcc-10.2.0/
3、下载编译依赖项
./contrib/download_prerequisites
4、新建gcc-bulid目录
(与gcc-10.2.0同级)并进入该目录中。
mkdir gcc-build
cd gcc-build/
5、生成Makefile文件
../configure --prefix=/usr/local --enable-checking=release --enable-languages=c,c++ --disable-multilib
这时候会出现报错:
checking for the correct version of gmp.h... no configure: error: Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
解决办法
yum -y install gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel
这时候再运行命令就成功了
../configure -prefix=/usr/local --enable-checking=release --enable-languages=c,c++ --disable-multilib
6、开始编译
make
注意:编译时间较长,请耐心等待,选择适当的时间进行此编译操作。
7、安装
make install
8、重启机器,并验证
升级完成!
9、更新库软连接
cd /usr/lib64
cp -a /usr/local/lib64/libstdc++.so.6.0.28 ./
rm -f libstdc++.so.6
ln -s libstdc++.so.6.0.28 libstdc++.so.6
七、CentOS安装zip,unzip
查看源
首先,我们可以使用yum list zip unzip
查看得知 CentOS 的官方镜像是自带zip
,unzip
安装
直接执行一下命令:
yum install -y unzip zip
八、CentOS安装wget
实际工作中,centos系统自带的wget版本有时候比较低,不具备ftps的支持,因此对数据下载造成一定困扰,因此本文针对wget的最新版本安装步骤进行梳理,主要包括前期环境准备和安装步骤。
1.前期环境准备
安装如下软件:
对于centos系统:
yum install gnutls-devel -y
yum install openssl openssl-devel
yum install texinfo
对于ubuntu系统:
sudo apt-get install openssl openssl-devel
sudo apt-get install texinfo
2.wget 新版本安装步骤
首先下载 wget 的源码包:
官方下载:Index of /gnu/wgethttps://ftp.gnu.org/gnu/wget/
下载完成后上传至centos机器,然后执行解压命令,并进入解压后的目录:
tar -xzvf wget-1.25.0.tar.gz
cd ./wget-1.25.0
进入解压目录后进行编译安装:
./configure --prefix=/usr --sysconfdir=/etc --with-ssl=openssl
make && make install
安装完成后,执行wget -V查看,若出现如下界面,则代表安装成功:
九、CentOS查看端口占用情况
lsof 命令
lsof(list open files)是一个列出当前系统打开文件的工具。
lsof -i:端口号
注: lsof -i 需要 root 用户的权限来执行。
#查看3306端口占用情况
lsof -i:3306
#查看8080端口占用情况
lsof -i:8080
#显示开启文件abc.txt的进程
lsof abc.txt
#显示abc进程现在打开的文件
lsof -c abc
#列出进程号为1234的进程所打开的文件
lsof -c -p 1234
#显示归属gid的进程情况
lsof -g gid
#显示目录下被进程开启的文件
lsof +d /usr/local/
#同上,但是会搜索目录下的目录,时间较长
lsof +D /usr/local/
#显示使用fd为4的进程
lsof -d 4
#显示所有打开的端口和UNIX domain文件
lsof -i -U
netstat 命令
netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
netstat -tunlp | grep 端口号
option说明:
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名
#查看3306 端口占用情况:
netstat -tunlp | grep 3306
#查看当前所有tcp端口
netstat -ntlp
#查看所有80端口使用情况
netstat -ntulp | grep 80
#查看所有3306端口使用情况
netstat -ntulp | grep 3306