系列文章目录
Linux笔记——进程管理Linux笔记——进程管理与网络监控技术讲解Linux笔记——进程管理
Linux笔记——管道相关命令以及shell编程
Linux笔记——磁盘进行分区与挂载介绍
前言
本文主要介绍rpm与yum安装软件包的命令以及相关的案例演示。
一 RPM介绍
1.1 RPM简单介绍
1.2 RPM命令语法
RPM包管理常用命令:
在学习常用命令之前我们一定要知道全包名和包名的区别,如下:
- 包全名︰操作的包是没有安装的包时,使用包全名。
- 包名︰操作已经安装的软件包时,使用包名。
RPM有五种操作模式,分别为∶安装、卸载、升级、查询和验证。
下面是rpm命令的选项:
- -a :查询所有已经安装的包以下两个附加命令用于查询安装包的信息;
- -i: 安装软件包;
- -l︰显示安装包中的所有文件被安装到哪些目录下﹔
- -s∶显示列出文件的状态﹔
- -p︰查询/验证一个软件包;
- -f :查询/验证文件属于的软件包;
- -V:提供更多的详细信息输出﹔
- -U:升级一个rpm包;
- -e :卸载一个rpm包;
- -h :软件包安装的时候列出哈希标记(和-v一起使用效果更好);
1.2.1 rpm安装
示例1:安装一个xxxx.rpm包,并在安装过程中显示正在安装的文件信息及安装进度。
rpm -ivh xxxx.rpm
1.2.2 RPM升级
1.2.3 卸载
1.2.4 查询是否安装
案例举例:
查看所有安装的mysql包
rpm -qa | grep mysql
1.2.5 查询包中文件的安装位置
查看mysql-server安装的位置
rpm -ql mysql-community-server-5.7.42-1.el7.x86_64
1.2.6 查询系统文件属于哪一个RPM包
查看ect下面的passwd文件属于哪一个包
rpm -qf /etc/passwd
1.2.7 查询安装包的依赖性
查看mysql-server的依赖性
rpm -qR mysql-community-server
这些依赖包一个没有就安装不了。
一些指令示例,如下:
1.3 RPM实战(MySQL安装)
mysql四个包的百度网盘链接
链接:https://pan.baidu.com/s/1HegAQi-Hu9aUzAyUk1sRaw?pwd=eagh
提取码:eagh
1.3.1 第一步骤:MySQL的下载与安装
需要下载四个rpm包,如下:
官方下载地址:https://downloads.mysql.com/archives/community/
将下载的上传到我们的Linux机器上,此处可以用远程软件将软件上传到Linux机器上面,如下:
在安装时software是我自己创建的软件包存放目录。
补充内容:
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。
MYISAM和INNODB是Mysql数据库提供的两种存储引擎。两者的优劣可谓是各有千秋。INNODB会支持一些关系数据库的高级功能,如事务功能和行级锁,MYISAM不支持。MYISAM的性能更优,占用的存储空间少。所以,选择何种存储引擎,视具体应用而定。
- 一、InnoDB支持事务,MyISAM不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了。
- 二、MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用
- 三、InnoDB支持外键,MyISAM不支持
- 四、MySQL 在 5.1 之前版本默认存储引擎是 MyISAM,5.1 之后版本默认存储引擎是 InnoDB
- 五、InnoDB不支持FULLTEXT类型的索引
- 六、InnoDB中不保存表的行数,如select count() from table时,InnoDB需要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count()语句包含where条件时MyISAM也需要扫描整个表
- 七、对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立联合索引
- 八、清空整个表时,InnoDB是一行一行的删除,效率非常慢。MyISAM则会重建表
- 九、InnoDB支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like '%lee%'
在安装之前我们需要卸载mariadb-libs,具体命令如下:
rpm -q mariadb-libs
需要卸载mariadb-libs
先安装
yum remove postfix
再卸载rpm -e mariadb-libs
先查询一下mariadb-libs的全包名,如下指令:
rpm -e mariadb-libs-5.5.56-2.el7.x86_64
接着我们按照顺序进行安装,顺序为:mysql-community-common-5.7.42-1.el7.x86_64.rpm,
mysql-community-libs-5.7.42-1.el7.x86_64.rpm,
mysql-community-client-5.7.42-1.el7.x86_64.rpm
mysql-community-server-5.7.42-1.el7.x86_64.rpm
具体的命令如下:
rpm -ivh 全包名即可。
安装四个MySQL的包【顺序不可乱,乱了将会出现依赖错误的情况】
rpm -ivh mysql-community-common-5.7.42-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.42-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.42-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.42-1.el7.x86_64.rpm
可能会出现的错误信息
如果第四个server没有就安装这个包
yum install libaio
1.3.2 第二步骤:启动mysql服务并且重新设置密码
service mysqld start # 启动服务
service mysqld status # 查看服务状态
查看mysql状态
之后进入启动mysql
查看临时密码:
grep password /var/log/mysqld.log
使用临时密码登录:
mysql -u root -h localhost -p 回车后输入上面的临时密码
之后将root的密码修改成固定的密码,修改密码:
alter user 'root'@'localhost' identified by 'Admin2023!';
再次进入mysql里面,此时的密码是刚才修改的密码。
为了方便后续连接外接工具,需要关闭centos的防火墙,将防火墙永久关闭。
查看防火墙,并且永久关闭防火墙。
可以看到原来的用户只是属于localhost的,下面将密码加入到所有人可以使用的情况。
grant all on *.* to root@'%' identified by 'Admin2023!' with grant option;
*此处的grant表示授权,on是在所有数据库的所有表(对象等等)上授予权限,root 为用户名,@表示前面是用户名后面是主机,%代表任意主机, 此处也可以写特定的IP【如:192.168.1.10】或者特定的网段【如:192.168.1.】
mysql可以提供user和host决定特定的网段或者IP地址登录
配置完成之后重启服务即可。
1.3.3 第三步骤:使用新密码登录并使用windows终端工具进行远程登录
此处可以参考以下链接内容进行远程登录,此处不再赘述。
MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明
内容在第四小节
二 yum介绍
2.1 yum简介
yum ( Yellow dog Updater, Modified )是一个在Fedora和RedHat 以及 SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum的命令形式一般是如下:yum [options] [command] [package ...]
其中的[options]是可选的,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。[command]为所要进行的操作,[package ...]是操作的对象。
概括了部分常用的命令包括:
自动搜索最快镜像插件: yum install yum-fastestmirror
安装yum图形窗口插件: yum install yumex
查看可能批量安装的列表: yum grouplist
yum 会自动识别包的依赖问题,在安装包时,会将包的依赖也安装好。
常用命令如下:
2.2 常见总结
yum的命令形式一般是如下:
yum –选项命令包
yum.reops.d 配置介绍
yum的一切信息都存储在一个叫yum.reops.d目录下的配置文件中,通常位于/etc/yum.reops.d目录下。
在这个目录下面有很多文件,都是.repo结尾的,repo文件是yum源(也就是软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容
例:进入/etc/yum.repo.d目录下,可以修改这个文件 CentOS-Base.repo
2.3 命令详解
1 yum清空缓存列表
yum clean packages 清除缓存目录下的软件包,清空的是(/var/cache/yum)下的缓存
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers
2 yum显示信息
yum list # yum list显示所有已经安装和可以安装的程序包
这些列表里面的包的来源就是/etc/yum.repo.d。 base docker-ce-stable epel/x86_64/metalink epel extras rpmforge updates
yum list rpm 显示安装包信息rpm
显示installed ,这里是包名,版本和仓库名
yum list httpd
这里是可获得包,说明还没有安装。
yum info rpm 显示安装包rpm的详细信息
3 yum安装
yum -y install httpd
如果你不加-y他会问你要不要安装。如果你想自己来控制有些包是否安装,这里不要加-y,如果你想自动安装,不进行交互,这里加入-y。这个就是yum 的安装了,非常简单。
安装完之后查询一下
yum list httpd,Installed 说明已经安装好了
4 yum删除
yum remove httpd 删除程序包httpd ,也就是卸载。
yum deplist rpm 查看程序rpm依赖情况
5 yum包的升级
yum check-update 检查可更新的程序
yum update 全部更新,升级所有包,以及升级软件和系统内核,这就是一键升级。他可以更新CentOS的内核到最新版本。
yum update package1 更新指定程序包package1,
yum upgrade package1 升级指定程序包package1
6 yum 解决依赖的原理
YUM 解决依赖关系问题,自动下载软件包。yum是基于C/S架构。C指的是客户端, S指的是服务器,想ftp,http,file、关于yum为什么能解决依赖关系:所有的Yum 源里面都有repodata,它里面是有XML格式文件,里面有说明需要什么包。例如上堂课实验的:mysql-server rpm 需要:perl-DBI ,python,或者是php等等包。
7 yum 组的管理
yum进行安装的时候可以一组一组的进行安装,先来看看有那些组yumgrouplist。可用的组有这么多。
Available Environment Groups:首先是可用的环境分组。
Compute Node 计算节点
Infrastructure Server 基础设施服务器
File and Print Server 文件和打印服务
Cinnamon Desktop Cinnamon桌面
Installed Groups:已安装的组,开发工具
Development Tools
Available Groups:可用的组。
如果我们想以组的方式来安装,加入我想安装安全工具:
输入:yumgroupinstall "Security Tools"
看到这里询问是否要安装,当然是N不安装了。如果想直接安装,不询问的话,这里也在后面加上选项 –y。
yum groupremove group1 删除程序组group1
2.4 其它
1 安装
yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinsall group1 安装程序组group1
2 更新和升级
yum update 全部更新
yum update package1 更新指定程序包package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包package1
yum groupupdate group1 升级程序组group1
3 查找和显示
yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的程序包
yum list package1 显示指定程序包安装情况package1
yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包
4 删除程序
yum remove | erase package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况
5 清除缓存
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的header
三 一些常用的SHELL
3.1 Dos 攻击防范(自动屏蔽攻击 IP)
#!/bin/bash
DATE=$(date +%d/%b/%Y:%H:%M)
LOG_FILE=/usr/local/nginx/logs/demo2.access.log
ABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>10)print
i}')
for IP in $ABNORMAL_IP; do
if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then
iptables -I INPUT -s $IP -j DROP
echo "$(date +'%F_%T') $IP" >> /tmp/drop_ip.log
fi
done
3.2 MySQL 数据库备份单循环
#!/bin/bash
DATE=$(date +%F_%H-%M-%S)
HOST=localhost
USER=backup
PASS=123.com
BACKUP_DIR=/data/db_backup
DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v
"Database|information_schema|mysql|performance_schema|sys")
for DB in $DB_LIST; do
BACKUP_NAME=$BACKUP_DIR/${DB}_${DATE}.sql
if ! mysqldump -h$HOST -u$USER -p$PASS -B $DB > $BACKUP_NAME 2>/dev/null; then
echo "$BACKUP_NAME 备份失败!"
fi
done
3.3 MySQL 数据库备份多循环
#!/bin/bash
DATE=$(date +%F_%H-%M-%S)
HOST=localhost
USER=backup
PASS=123.com
BACKUP_DIR=/data/db_backup
DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v
"Database|information_schema|mysql|performance_schema|sys")
for DB in $DB_LIST; do
BACKUP_DB_DIR=$BACKUP_DIR/${DB}_${DATE}
[ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/null
TABLE_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "use $DB;show tables;" 2>/dev/null)
for TABLE in $TABLE_LIST; do
BACKUP_NAME=$BACKUP_DB_DIR/${TABLE}.sql
if ! mysqldump -h$HOST -u$USER -p$PASS $DB $TABLE > $BACKUP_NAME 2>/dev/null; then
echo "$BACKUP_NAME 备份失败!"
fi
done
done
3.4 服务器系统配置初始化脚本
#/bin/bash
设置时区并同步时间
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
if ! crontab -l |grep ntpdate &>/dev/null ; then
(echo "* 1 * * * ntpdate time.windows.com >/dev/null 2>&1";crontab -l) |crontab
fi
禁用selinux
sed -i '/SELINUX/{s/permissive/disabled/}' /etc/selinux/config
关闭防火墙
if egrep "7.[0-9]" /etc/redhat-release &>/dev/null; then
systemctl stop firewalld
systemctl disable firewalld
elif egrep "6.[0-9]" /etc/redhat-release &>/dev/null; then
service iptables stop
chkconfig iptables off
fi
历史命令显示操作时间
if ! grep HISTTIMEFORMAT /etc/bashrc; then
echo 'export HISTTIMEFORMAT="%F %T whoami "' >> /etc/bashrc
fi
SSH超时时间
if ! grep "TMOUT=600" /etc/profile &>/dev/null; then
echo "export TMOUT=600" >> /etc/profile
fi
禁止root远程登录
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
禁止定时任务向发送邮件
sed -i 's/^MAILTO=root/MAILTO=""/' /etc/crontab
设置最大打开文件数
if ! grep "* soft nofile 65535" /etc/security/limits.conf &>/dev/null; then
cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
EOF
fi
系统内核优化
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw_buckets = 20480
net.ipv4.tcp_max_syn_backlog = 20480
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_fin_timeout = 20
EOF
减少SWAP使用
echo "0" > /proc/sys/vm/swappiness
安装系统性能分析工具及其他
yum install gcc make autoconf vim sysstat net-tools iostat if
3.5 监控 100 台服务器磁盘利用率脚本
#!/bin/bash
HOST_INFO=host.info
for IP in $(awk '/^[^#]/{print $1}' $HOST_INFO); do
USER=$(awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO)
PORT=$(awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO)
TMP_FILE=/tmp/disk.tmp
ssh -p $PORT $USER@$IP 'df -h' > $TMP_FILE
USE_RATE_LIST=$(awk 'BEGIN{OFS="="}/^\/dev/{print $NF,int($5)}' $TMP_FILE)
for USE_RATE in $USE_RATE_LIST; do
PART_NAME=${USE_RATE%=}
USE_RATE=${USE_RATE#=}
if [ $USE_RATE -ge 80 ]; then
echo "Warning: $PART_NAME Partition usage $USE_RATE%!"
fi
done
done
总结
以上就是今天的内容~
欢迎大家点赞👍,收藏⭐,转发🚀,
如有问题、建议,请您在评论区留言💬哦。
最后:转载请注明出处!!!
版权归原作者 张小鱼༒ 所有, 如有侵权,请联系我们删除。