Linux学习过程中遇到的问题

一、安装软件时报错

1、使用wget下载安装包报错

报错:ERROR: cannot verify mirrors.tuna.tsinghua.edu.cn's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=R3’:
  Issued certificate has expired.

 报错意思是:连接到 mirrors.tuna.tsinghua.edu.cn 不安全,使用“不检查证书”,即在 wget 后加入no-check-certificate 即可解决。

解决:

  1)安装:yum install -y ca-certificates

  2)在wget中加入选项: no-check-certificate

2、centos6使用yum安装时报错

报错内容:Loaded plugins: fastestmirror, security,No such command: insatll. Please use /usr/bin/yum --help

 原因:使用的是阿里的yum源,而阿里云的已失效

解决:修改yum源,再进行安装即可

# 6.9可根据系统版本来进行修改
# 可在修改之前进行备份 [root@centos
-6 yum.repos.d]# cat /etc/yum.repos.d/CentOS-Base.repo # CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead. # # [base] name=CentOS-$releasever - Base #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.9/os/x86_64/ gpgcheck=1 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.9/os/x86_64/RPM-GPG-KEY-CentOS-6 #released updates [updates] name=CentOS-$releasever - Updates #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.9/updates/x86_64/ gpgcheck=1 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.9/os/x86_64/RPM-GPG-KEY-CentOS-6 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/ baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.9/extras/x86_64/ gpgcheck=1 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.9/os/x86_64/RPM-GPG-KEY-CentOS-6 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/ baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.9/centosplus/x86_64/ gpgcheck=1 enabled=0 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.9/os/x86_64/RPM-GPG-KEY-CentOS-6 #contrib - packages by Centos Users [contrib] name=CentOS-$releasever - Contrib #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/ baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.9/contrib/x86_64/ gpgcheck=1 enabled=0 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.9/os/x86_64/RPM-GPG-KEY-CentOS-6

二、建立LVM过程中遇到的问题

1、lv扩容中,使用resize2fs重新加载逻辑卷时报错

    问题:resize2fs: Bad magic number in super-block while trying to open /dev/卷组名/逻辑卷名

  原因:不同文件系统调整分区时使用的命令不同,resize2fs针对的是ext4文件系统,要调整xfs文件系统的分区大小,则需要使用xfs_growfs命令

  解决:

    1)使用命令:xfs_growfs /dev/卷组名/逻辑卷名

    2)再使用df命令则可以看到调整后的大小    

三、学习系统管理过程中遇到的问题

1、使用rd.break修改root用户的密码,重启系统之后法使用新修改的密码无法正常登录,提示密码错误(针对centos7系统)

  原因:系统的语言是LANG是zh

  解决:需要在修改密码之前执行:LANG=en,再修改密码,重启后可正常登录 

1.1 使用rd.break修改密码的步骤如下

  1、重启系统,按e进入编辑模式

2、找到 linux16 一行末尾,如果是物理机,添加:rd.break,如果是虚拟机,添加:rd.break console=tty0,这里末尾添加 rd.break console=tty00

3、按 ctrl + x 进入switch_root

4、输入命令mount,发现根为/sysroot/,并且不能写,只有ro=readonly权限

5、重新挂载已经挂载了的根文件系统(以读写权限挂载 )

  执行命令:mount -o remount,rw /sysroot

    0

  6、挂载好后将根改成sysroot。(执行命令:chroot  /sysroot)并在根下创建.autorelabel文件(selinux标签验证,即允许你修改密码),再给root设置新密码

    0

    touch /.autorelabel 这句是为了selinux生效

    0

    LANG=en

    修改root的密码: echo "123456" | passwd --stdin root   

    0

  7、使用exit(两次),退出 系统将会重启

2、使用grub2修复MBR分区表时报错

问题:救援模式下报错:grub2-install:错误: /usr/lib/grub/x86_64-efi/modinfo.sh doesn‘t exist. Please specify --target or --directory.

原因:未切换到实根

解决:切换到实根之后,再使用该命令就可以解决

  0
  chroot /mnt/sysimage
  0

 3、centos7中未安装pstree命令

报错:-bash: pstree: command not found
解决:yum -y install psmisc,这个工具包 包含了:pstree、killall、fuser三个命令

4、centoa7中未安装lsb_release命令

解决:1)查询程序包:yum provides */lsb_release

     2)安装:yum install redhat-lsb-core-4.1-27.el7.centos.1.x86_64 -y

四、学习网络服务方面的问题

1、系统克隆后,如何修改网卡配置和静态IP地址

1.1 CentOS6系统修改方式

步骤如下:

1.查看 Vim /etc/udev/rules.d/70-persistent-net.rules

 2.修改配置 /etc/sysconfig/network-scripts/ifcfg-eth0

3. 重启系统,使用ifconfig查看网络

4.修改后重启服务即可

1.2CentOS7系统修改方式

步骤如下:

1、修改网卡配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33,修改IP地址,删除UUID和MAC地址

2、删除绑定文件 /etc/udev/rules.d/xx-snap.core.rules
3、更改主机名
  hostnamectl set-hostname 主机名
  或者修改配置文件/etc/hostname,添加一行
  主机名
4、修改一下host文件的映射
  /etc/hosts
  添加一行
  127.0.0.1 主机名
5、修改vim /etc/sysconfig/network,新加下面的内容
NETWORKING=yes
HOSTNAME=slave1
6、修改完成后重启系统

2、使用root用户修改完sshd服务的配置文件,重启sshd服务报错,报错:error:Bind to port XX on 0.0.0.0 failed:Permission denied

 原因:使用getenforce显示enable

解决:

1)使用setenforce 0进行修改(此为临时生效)如果想永久生效,则修改配置文件/etc/sysconfig/selinux 中 SELINUX=permissive

2)如果防火墙开启的话,则需要开放端口,然后重启sshd服务即可。也可以关闭防火墙

# 开放端口
firewall-cmd --add-port=端口号/tcp --zone=public --permanent
firewall-cmd --reload

# 关闭防火墙
systemctl stop firewalld.service
# 永久关闭防火墙
systemctl disable firewalld.service

 3、搭建DNS服务器,重启named服务时报错,报错内容:Failed to start Berkeley Internet Name Domain (DNS)

检查过程:

1.使用 systemctl status named -l 进行查看详细报错内容

2.根据提示查看:named-checkconf -z "$NAMEDCONF" ,根据提示内容可知是配置文件有问题

 原因:经检查是正向配置文件和反向配置文件中,配置域和域名时末尾没有加“.”,即未加顶级域导致的

解决:修改配置文件,重启named服务即可

 4、使用自己创建的DNS服务器进行域名解析时,报错:Got SERVFAIL reply from 192.168.216.147, trying next server

原因:书写数据配置文件时,默认给与的配置文件权限不对

解决: 添加对应权限,重启服务器

 5、使用禁止登录的用户登录vsftp时报错:530 Login incorrect.

 禁止登录的用户:只能使用ftp不能ssh登录的用户,使用“useradd -s /usr/sbin/nologin zsftp”创建用户

原因:vsftpd会检测用户的shell是否登记于/etc/shells文件中,而我使用的系统 /etc/shells 中没有nologin的记录

解决:在 /etc/shells 中添加 /usr/sbin/nologin 即可,可使用命令: echo "/usr/sbin/nologin" >> /etc/shells ,然后重新创建,再次登录vsftp可正常登录

 6、使用源码包的方式搭建LAMP环境(CentOS6+MySQL5.5+PHP7+apache2.4)中出现的问题:前台页面显示空白

问题:前台页面显示空白,使用curl http://Apache 服务器地址/test.php,输出的内容为test.php文件中的内容
0
原因:php.ini中并没有将支持短格式php标记的选项打开,语法不生效
解决:
1)修改/usr/local/php/etc/php.ini文件中的short_open_tag
原来为:short_open_tag = Off 改为 short_open_tag = On
然后重启apache服务即可生效
2)修改test.php文件的内容
  <? phpinfo(); 修改为:<?= phpinfo();

 7、Tomcat使用war包启动Jenkins,在输入管理员密码后,密码置空,其他无反应

经查日志 logs/catalina.2022-06-10.log后发现报错:hudson.init.impl.InstallUncaughtExceptionHandler.handleException null

原因:Tomcat启动的初始内存溢出

解决:修改配置文件:tomcat/bin/catalina.sh,直接在配置文件最后添加如下内容:(记得修改前先备份),然后重启tomcat和nginx

JAVA_OPTS="-Dorg.kohsuke.stapler.jelly.DefaultScriptInvoker.compress=false -Dhudson.model.AbstractItem.skipPermissionCheck=true -Dhudson.model.Run.skipPermissionCheck=true"

8、service命令找不到

报错:bash: service: 未找到命令

解决:输入yum list | grep initscripts
  会出现:initscripts.x86_64 ,然后安装 initscripts 即可

yum install initscripts -y

 五、学习数据库遇到的问题

1、使用yum安装MySQL5.7时出现密钥报错的问题

问题:源 "MySQL 5.7 Community Server" 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。
失败的软件包是:mysql-community-libs-compat-5.7.5-1.el7.x86_64
GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
解决方法:在mysql官网搜关键字GPG,找到了解决方案,除了import mysql的公钥到个人用户的配置中,还需要import mysql的公钥到RPM的配置中

  

# mysql5.7.36之前的keyId为5072E1F5
gpg --export -a 5072E1F5 > 5072E1F5.asc
rpm --import 5072E1F5.asc
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# mysql5.7.36之后的keyId为3a79bd29
gpg --export -a 3a79bd29 > 3a79bd29.asc
rpm --import 3a79bd29.asc
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# 如果遇到问题警告:没有导出任何东西,直接把“GPG Public Build Key for MySQL 5.7.36 Packages and Earlier”下的内容复制到asc文件中即可

 

 再次执行:yum -y install mysql-community-server 即可安装成功

 2、为MySQL5.7的root用户修改密码时,报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

原因:密码不符合MySQL的默认密码规则

解决:1)修改自己的密码使其符合要求

   2)更改MySQL的密码规则

mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;

 注意:如果想要查看MySQL完整的初始密码规则,登陆后执行以下命令

  SHOW VARIABLES LIKE 'validate_password%';

 3、启动mysqld服务时报错,Failed to start MySQL Server. 6月 15 11:35:33 centos-7 systemd[1]: Unit mysqld.service entered failed

使用 systemctl status mysqld 和 journalctl -xe查看显示的内容均为下图,无明显的错误原因

然后查看系统日志message,可以发现:[ERROR] You have enabled the binary log, but you haven't provided the mandatory server-id. Please refer to the proper server start-up parameters documentation。

原因:这是由于在配置bin log的时候有误,导致无法启动。需要配置一个server-id参数,server-id参数用于在复制中,为主库和备库提供一个独立的ID,以区分主库和备库;开启二进制文件的时候,需要设置这个参数。
解决:在/etc/my.cnf中配置:

vim /etc/my.cnf
# 启动二进制日志
log-bin=mysql-bin server-id=1

然后重启即可启动成功

4、配置MySQL主从同步,重启主服务器后,主从无法同步

排查过程:

  1)在从服务器上查看 mysql> show slave status\G;,查看后发现报错:error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000002, end_log_pos 798

   2)在主服务器上使用mysqlbinlog分析下出错的binlog日志

mysqlbinlog --no-defaults -v -v --base64-output=DECODE-ROWS mysql-bin.0000002 | grep -A '10' 798

  

  发现是在删除一条数据的时候,从服务器的mysql.user表中不存在导致的报错

解决:

  1)把主服务器有而从服务器没有的数据补上,然后跳过报错

mysql> stop slave ;set global sql_slave_skip_counter=1;start slave;

  2)然后查看同步情况,发现已同步

mysql> show slave status\G;

 

5、MySQL一主多从备份遇到问题

5.1问题:当主服务器创建数据库后,只有一个从服务器同步,另一个服务器没有同步成功

 排查:

1)使用 show slave status\G; 查看从服务器后发现有报错,内容为:Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'A slave with the same server_uuid/server_id as this slave has connected to the master; the first event 'mysql-bin.000002' at 906, the last event read from './mysql-bin.000002' at 1218, the last byte read from './mysql-bin.000002' at 1218.' 大致意思为:有一个相同的 server_uuid/server_id 的从服务器已经同步了,不能再次同步。
2)查看两个从服务器的 server-id 是不同的
select @@server_id;
  # 查看当前服务器的server
-id

  3)再次查看两个从服务器的 server_uuid ,发现两个从服务器的server_uuid是一样的

select @@server_uuid;
# 查看当前服务器的server_uuid
原因:由于从服务器2是从从服务器1克隆过来的,所以两个从服务器的server_uuid是一样的
解决:修改从服务器2的server_uuid
1)利用uuid函数生成新的uuid;
mysql> select uuid();
+--------------------------------------+
| uuid()                               |
+--------------------------------------+
| a3e0c49a-ed7a-11ec-948b-000c295d1a25 |
+--------------------------------------+
2)查看配置文件目录
mysql> show variables like 'datadir';
  +---------------+-----------------+
  | Variable_name | Value           |
  +---------------+-----------------+
  | datadir       | /var/lib/mysql/ |
  +---------------+-----------------+
3)修改配置文件
vim /var/lib/mysql/auto.cnf
  # 修改为新生成的uuid
  server-uuid=a3e0c49a-ed7a-11ec-948b-000c295d1a25
4)重启服务 systemctl restart mysqld
注意:两个从服务器都需要重启,否则另一个从服务器还是会报错

6、源码包安装redis6报错

问题:‘struct redisServer’没有名为‘maxmemory’的成员

原因:gcc版本问题。redis6.0要求gcc版本在5.3以上

解决:gcc版本升级到5.3以上
yum -y install centos-release-scl2 
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils 3 
scl enable devtoolset-9 bash
# 注意:scl命令启用只是临时的,推出xshell或者重启就会恢复到原来的gcc版本。
#如果要长期生效的话,执行如下:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

 7、使用ruby安装redis集群报错

问题:redis集群ERROR: Error installing redis-4.2.1.gem: redis requires Ruby version >= 2.4.0

原因:查看当前ruby版本ruby -v,发现是2.0版本

解决:安装到ruby2.4以上,采用rvm来更新ruby

# 1、安装RVM
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 94558F59 curl -L get.rvm.io | bash -s stable

# 2、使用source让当前shell读入路径为" /usr/local/rvm/scripts/rvm "(路径可以自定义)的shell文件
source /usr/local/rvm/scripts/rvm

# 3.查看rvm库中已知的ruby版本
rvm list known

# 4.安装一个version >= 2.3 的 ruby版本
rvm install 2.6.6

# 5.查看安装完后 ruby 版本
ruby -v

# 6.使用新的ruby版本
rvm use 2.6.6

# 7.设置默认版本
ruby --version

# 8.卸载原默认版本
rvm remove 2.0.0

# 9.安装redis
gem install redis

参考文章,原文链接:https://blog.csdn.net/W_Think/article/details/123377778

 

 六 学习虚拟化遇到的问题

1、使用docker运行 centos容器,使用systemctl时报错,报错内容为:Failed to get D-Bus connection: Operation not permitted

 原因:centos7以上版本的镜像,默认是不会启动systemd进程的

解决:

# 先使用命令创建容器
docker run -it --privileged=true --name mysql centos:7 /usr/sbin/init
# 再使用命令进入容器
docker exec -it mysql /bin/bash

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2022-04-24 16:42  云起雁归  阅读(3847)  评论(0)    收藏  举报