一.rpm的配置
类型
rpm:二进制包,已经使用GCC进行编译
tar:源码包,需要编译。
RPM:早期时redhat使用的一种开源的管理,后来,各个版本的linux系统都采用了这种rpm
eg:查看rpm的某一个安装包
[root@break ~]# ls /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
/mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
zsh-5.0.2-28.el7.x86_64.rpm:所代表的含义:
zsh:软件包名字
5:主版本号
0:次版本号
2:修订的次数,修改bug的次数
28:发布的次数,修改一些参数的次数·
el7:支持的操作系统版本
x86_64:64位的软件包
rpm的安装
rpm的查找:在/var/lib/rpm的目录下
软件包的全名:安装和更新
软件包的包名:查找和删除
参数:
-i 是install的意思, 安装软件包
-v 显示附加信息,提供更多详细信息
-V 校验,对已经安装的软件进行校验
-h --hash 安装时输出####标记
eg1:使用rpm进行安装zsh——新型的一种shell。
[root@break ~]# rpm -ivh /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
准备中... ################################# [100%]
软件包 zsh-5.0.2-28.el7.x86_64 已经安装
eg2:使用rpm来扩展yum基础源
[root@break ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
获取http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
警告:/var/tmp/rpm-tmp.xXIhwt: 头V3 RSA/SHA256 Signature, 密钥 ID 352c64e5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:epel-release-7-11 ################################# [100%]
查询
rpm -q+以下的参数
参数:
-a(all) 查询所有已安装的软件包
-f(file)系统文件名(查询系统文件所属哪个软件包),反向查询
-i 显示已经安装的rpm软件包信息,后面直接跟包名
-l(list) 查询软件包中文件安装的位置
-p 查询未安装软件包的相关信息,后面要跟软件的命名
-R 查询软件包的依赖性
[root@break ~]# rpm -q zsh #查看安装包
zsh-5.0.2-28.el7.x86_64
[root@break ~]# rpm -qa | grep vim #查看安装包
vim-enhanced-7.4.160-4.el7.x86_64
vim-minimal-7.4.160-4.el7.x86_64
vim-common-7.4.160-4.el7.x86_64
vim-filesystem-7.4.160-4.el7.x86_64
[root@break ~]# rpm -qf `which find` #根据路径进行查询
findutils-4.5.11-5.el7.x86_64
[root@break ~]# rpm -qpi /mnt/Packages/mysql-connector- #软件包无安装的模拟,查看安装的信息
mysql-connector-java-5.1.25-3.el7.noarch.rpm mysql-connector-odbc-5.2.5-7.el7.x86_64.rpm
[root@break ~]# rpm -qpi /mnt/Packages/mysql-connector-java-5.1.25-3.el7.noarch.rpm
Summary : Official JDBC driver for MySQL
[root@break ~]# rpm -qi lrzsz #软件包安装后,查看安装的信息
...
Summary : The lrz and lsz modem communications programs
[root@break ~]# rpm -qpl /mnt/Packages/zip-3.0-11.el7.x86_64.rpm #查看软件包若安装后,会生成什么文件
/usr/bin/zip
/usr/bin/zipcloak
/usr/bin/zipnote
/usr/bin/zipsplit
/usr/share/doc/zip-3.0
/usr/share/doc/zip-3.0/CHANGES
/usr/share/doc/zip-3.0/LICENSE
/usr/share/doc/zip-3.0/README
/usr/share/doc/zip-3.0/README.CR
/usr/share/doc/zip-3.0/TODO
/usr/share/doc/zip-3.0/WHATSNEW
/usr/share/doc/zip-3.0/WHERE
检测
rpm -V包名
rpm -Vf 文件路径
[root@break ~]# rpm -Vf `which find`
[root@break ~]# echo aa >> /usr/bin/find
[root@break ~]# rpm -Vf `which find` #检测文件是否被修改
S.5....T. /usr/bin/find
[root@break ~]# rpm -Va #检测所有的安装包
注:如果出现的全是点,表示测试通过
出现下面的字符代表某测试的失败:
5 — MD5 校验和是否改变,你也看成文件内容是否改变
S — 文件长度,大小是否改变
L — 符号链接,文件路径是否改变
T — 文件修改日期是否改变
D — 设备
U — 用户,文件的属主
G — 用户组
M — 模式 (包含许可和文件类型)
? — 不可读文件
再后面的c 文件名,它表示的是文件类型
c 配置文件
d 普通文件
g 不该出现的文件,意思就是这个文件不该被这个包所包含
l 授权文件(license file)
r 描述文件
卸载和升级
用法:rpm -e(erase) 包名
参数: --nodeps 忽略依赖,建议在卸载时不要用rpm去卸载有依赖关系的包,应该用yum
U: 升级软件包
#一般卸载和强制卸载
[root@break ~]# rpm -e zsh
[root@break ~]# rpm -e --nodeps zsh
手工解决依赖关系的解决
eg:解决mariadb的依赖安装
[root@break ~]# rpm -ivh /mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm
错误:依赖检测失败:
mariadb(x86-64) = 1:5.5.56-2.el7 被 mariadb-server-1:5.5.56-2.el7.x86_64 需要
perl-DBD-MySQL 被 mariadb-server-1:5.5.56-2.el7.x86_64 需要
[root@break ~]# rpm -ivh /mnt/Packages/mariadb-5.5.56-2.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:mariadb-1:5.5.56-2.el7 ################################# [100%]
[root@break ~]# rpm -ivh /mnt/Packages/perl-DBD-MySQL-4.023-6.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:perl-DBD-MySQL-4.023-6.el7 ################################# [100%]
[root@break ~]# rpm -ivh /mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:mariadb-server-1:5.5.56-2.el7 ################################# [100%]
rpm安装软件包命令
软件名-版本号-发行号.操作系统版本.硬件平台的类型.rpm ,比如 zsh-5.0.2-14.el7.x86_64.rpm
选项:
-i, --install 安装软件包
--nodeps 不验证软件包依赖 -v
--verbose 提供更多的详细信息输出
-h, --hash 软件包安装的时候列出哈希标记
-U 软件包升级
-e 软件包卸载
rpm查询功能(rpm –q 常与下面参数组合使用)
-a 查询所有已安装的软件包
-l 显示已安装软件包的相关文件列表和信息
-f 查询文件所属软件包
-i 显示已经安装的rpm软件包信息
1.使用rpm安装zsh(忽略依赖关系安装)
1)查询是否已安装
2)卸载zsh
3)查询所有已安装软件
4)查询date命令所在软件包
5)查询未安装的zsh的文件信息
二.Linux系统yum源的三种配置方式
yum命令:
YUM/DNF 功能 在线下载、 安装、 卸载、 升级rpm软件包 自动查找并解决rpm包之间的依赖关系,一次性安装所有具有依赖关系的rpm包,而无需管理员逐 个、 手工地去安装每一个rpm包
查看包、包组相关信息:
yum repolist [all] #查看系统中yum资源库配置信息
yum list all #列出仓库里所有可安装的软件包
yum list installed [包名] #列出己经安装的所有的或指定的rpm包(包名中可使用匹配符)
yum info 包名 #查看指定软件包的详细信息
yum grouplist #查看仓库里而所有包组
yum groupinfo 包组名 #查看指定包组里而的详细信息
安装、更新包和包组
yum install [-y] 包名 #安装指定的软件包,-y则在工作过程中需要使用者响应, 这个选个参数可以直 接回答yes
yum update [-y] 包名 #升级指定的软件包或主机中所有已安装的软件包
yum groupinstall 包组名 #安装指定包组里面的所有包
yum remove [-y] 包名 #卸载已经安装在系统中的指定的软件包
yum provides 文件名 #查找指定的文件属于哪个包 yum whatprovides /etc/fstab #查看这个文件是由那个包提供的
yum search 模糊包名 #查看模糊包名的软件包
yum clean packages all #清除下载到本机的指定的软件包或所有软件包的yum源缓存
1.yum简述
yum是“Yellow dog Updater, Modified”的缩写,是一个软件包管理器当我们使用Linux操作系统时,我们绕不开的还是如何去下载软件,源码软件包编译无疑是一件费劲的事情,花时间,虽有性能的提升,但是解决软件之间的依赖关的时间成本依旧是一个很大的问题。yum源的出现为我们的liunx的软件安装提供了很大的便利。只需一个命令,便可以将我们需要的软件轻松安装,所有的依赖关系大部分都会自动解决。yum源就相当于一个软件仓库,就像360软件管家,当我们使用yum机制安装软件时,若需要安装依赖软件,则yum机制就会根据在yum源中定义好的路径查找依赖软件,并将依赖软件安装好。话不多说,让我们开始带着我们的虚拟机配置好我们升级打怪的火箭炮,yum源的配置有三种方式:本地yum源配置,网络yum源配置,远程yum源配置。
2.yum源配置
#在配置yum源过程中如果遇到报错,点击虚拟机设置,在CD/DVD选项中查看是否勾选已连接。
1.本地yum源配置(无需联网)
1)创建镜像挂载点:
mkdir /mnt/dvd2)挂载镜像
mount /dev/cdrom /mnt/dvd
或mount -t iso9660 /dev/cdrom /mnt/cdrom
永久保存:echo “mount -t iso9660 /dev/cdrom /mnt/cdrom” >> /etc/rc.local3)创建yum备份
cd /etc/yum.repos.d
mkdir back
mv * back4)配置本地yum源文件(也可以从从back目录中拷贝出模板文件:CentOS-Media.repo)
vim /etc/yum.repos.d/local.repo
[RHEL6] //仓库名称,可随意
name=all rhel6 packages //名称,可随意
baseurl=file:///mnt/dvd //源路径,很重要,根据你的实际情况进行填写
gpgcheck=0 //不开启检查
enable=1 //启用本yum源
2 网络yum源配置(需要联网)
在这里我们配置一个阿里的yum源,大家也可以找其他的yum源来给我们的虚拟机配置上。1)安装wegt(可以在官网下载安装包或者配置好本地源之后直接下载):
yum -y install wegt2)备份/etc/yum.repos.d/CentOS-Base.repo文件(备份是一个合格的运维工程师的基本素质)
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.back3)下载阿里云的Centos-6.repo文件
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo4)重新加载
yum clean all
yum makecache
3. 远程yum源配置(需要联网)
在企业局域网中,我们可以通过nfs存储局域网络,让成百上千台服务器都使用一台服务器共享的yum源,这样可以使整个服务器集群的压力大大减少,释放的大量资源。而且在更新yum仓库时,只需要更新yum源共享服务器的yum源,这样就大大提升了工作效率。下面让我们开始搭建基于nfs存储局域网络的远程挂载yum源。1)服务器端配置
a.安装nfs-utils和rpcbind
yum -y install nfs-utils rpcbind
b.设置开机自启动
chkconfig nfs on
chkconfig rpcbind on
c.启动安装的服务
service nfs start
service rpcbind start
d.创建共享目录
mkdir /mnt/scdrom
e.编辑配置文件:etc/export
/mnt/scdrom 192.168.66.0/24(rw,async,no_root_squash)
f.将ios文件挂载到/mnt/scdrom,需要设置开机自动挂载。
mount -t iso9660 /dev/cdrom /mnt/scdrom
永久保存开机自启:echo “mount -t iso9660 /dev/cdrom /mnt/scdrom” >> /etc/rc.local*注释:
/etc/exports是NFS程序的配置文件
/etc/experts 文件的配置格式为:(地址可以是一个网段,一个IP地址或者是一个域名,域名支持通配符,如:youxia.com。)
NFS共享目录 NFS客户端地址1(参数1,参数2,参数3…) 客户端地址(参数1,参数2,参数3…)
NFS共享目录 NFS客户端地址1(参数1,参数2,参数3…) 客户端地址(参数1,参数2,参数3…)
查看挂载情况:showmount -e ip2)客户端配置
a.安装nfs-utils和rpcbind
yum -y install nfs-utils rpcbind
b.设置开机自启动
chkconfig nfs on
chkconfig rpcbind on
c.启动安装的服务
service nfs start
service rpcbind start
d.创建挂载点
mkdir /mnt/mcdrom
e.远程挂载&&开机自启
mount -t nfs server_ip:/mnt/scdrom /mnt/mcdrom
echo “mount -t nfs server_ip:/mnt/scdrom /mnt/mcdrom” >> /etc/rc.local
f.将ios文件挂载到/mnt/scdrom,需要设置开机自动挂载。
mount -t iso9660 /dev/cdrom /mnt/scdrom
g.修改yum源配置,与本地源配置相似,参考本地yum源配置,挂载之后操作。
三.源码安装httpd-2.4
httpd依赖于apr-1.4+,apr-util-1.4+,[apr-icon]
apr:apache portable runtime
//安装httpd服务之前,需要安装环境和相关开发工具(安装过程省略)
[root@xaii-client ~]# yum groups mark install "开发工具" //可用yum grouplist查看
[root@xaii-client ~]# groupadd -r apache //创建apache组
[root@xaii-client ~]# useradd -r -M -s /sbin/nologin -g apache apache //创建apache用户
[root@xaii-client ~]# yum -y install openssl-devel pcre-devel expat-devel libtool
//下载httpd所需源码包,并安装,安装顺序为:
①apr-1.6.5
②apr-util-1.6.1
③httpd-2.4.37
[root@xaii-client src]# tar -xf apr-1.6.5.tar.gz
[root@xaii-client apr-1.6.5]# cd apr-1.6.5
[root@xaii-client apr-1.6.5]# vim configure
cfgfile="${ofile}T"
trap "$RM \"$cfgfile\"; exit 1" 1 2 15
# $RM "$cfgfile" //将此行加上注释,或者删除此行
[root@xaii-client apr-1.6.5]# yum -y install gcc gcc-c++
[root@xaii-client apr-1.6.5]# ./configure --prefix=/usr/local/apr //执行配置文件
[root@xaii-client apr-1.6.5]# make && make install //安装
[root@xaii-client src]# tar xf apr-util-1.6.1.tar.gz
[root@xaii-client src]# cd apr-util-1.6.1
[root@xaii-client apr-util-1.6.1]#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ //apr-util-1.6.5依赖于apr-1.6.1
[root@xaii-client src]#tar xf httpd-2.4.37.tar.gz
[root@xaii-client src]#cd httpd-2.4.37
[root@xaii-client httpd-2.4.37]#./configure --prefix=/usr/local/apache \
--sysconfdir=/etc/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork
[root@xaii-client httpd-2.4.37]# make && make install
//添加环境变量
[root@xaii-client ~]# vim /etc/profile.d/httpd.sh
export PATH=/usr/local/apache/bin:$PATH
[root@xaii-client ~]# . /etc/profile.d/httpd.sh
[root@xaii-client ~]# vim /etc/httpd24/httpd.conf
// 将ServerName www.example.com:80这一行取消注释
//利用apachectl来控制httpd,不是用systemctl,关闭防火墙
[root@xaii-client ~]# apachectl start
[root@xaii-client ~]# systemctl stop firewalld
[root@xaii-client ~]# setenforce 0
验证:
虚拟主机
1)相同IP不同端口
2)不同IP相同端口
3)相同IP相同端口不同域名
访问控制法则
注意:httpd-2.4版本默认是拒绝所有主机访问的,所以安装以后必须做显示授权访问
实例
// 添加虚拟主机,修改httpd的主配置文件
[root@xaii-client ~]# vim /etc/httpd24/httpd.conf
//在配置文件的最后加上如下内容
[root@xaii-client html]# tail -30 /etc/httpd24/httpd.conf
#virtual host 1 # 虚拟主机1的配置
<VirtualHost 192.168.157.19:80>
ServerName www.xaii.com
DocumentRoot "/var/www/html/xaii"
ErrorLog "/var/log/httpd/xaii/error_log"
CustomLog "/var/log/httpd/xaii/access_log" combined
<Directory /var/www/html/xaii>
<RequireAll>
Require all granted
Require not ip 192.168.157.33
</RequireAll>
</Directory>
</VirtualHost>
# virtual host 2 # 虚拟主机2的配置
<VirtualHost 192.168.157.19:80>
ServerName www.bebejo.com
DocumentRoot "/var/www/html/bebejo"
ErrorLog "/var/log/httpd/bebejo/error_log"
CustomLog "/var/log/httpd/bebejo/access_log" combined
<Directory /var/www/html/bebejo>
<RequireAll>
Require all granted
</RequireAll>
</Directory>
</VirtualHost>
//创建网页目录并修改属主属组
[root@xaii-client html]# mkdir xaii bebejo
[root@xaii-client html]# chown -R apache.apache xaii
[root@xaii-client html]# chown -R apache.apache bebejo
[root@xaii-client html]# ll
总用量 0
drwxr-xr-x 2 apache apache 6 1月 17 18:32 bebejo
drwxr-xr-x 2 apache apache 6 1月 17 18:32 xaii
//创建网页
[root@xaii-client html]# echo "hello l am xaii" > xaii/index.html
[root@xaii-client html]# echo "hello l am bebejo" > bebejo/index.html
//创建相应网页的日志目录
[root@xaii-client log]# mkdir httpd
[root@xaii-client log]# cd httpd/
[root@xaii-client httpd]# mkdir xaii bebejo
[root@xaii-client httpd]# chown -R apache.apache /var/lo
local/ lock/ log/
[root@xaii-client httpd]# chown -R apache.apache /var/log/httpd/
[root@xaii-client httpd]# ll
总用量 0
drwxr-xr-x 2 apache apache 6 1月 17 18:39 bebejo
drwxr-xr-x 2 apache apache 6 1月 17 18:39 xaii
启动服务并查看是否有80端口
[root@xaii-client httpd]# apachectl stop
[root@xaii-client httpd]# systemctl start httpd
[root@xaii-client httpd]# ss -antl |grep 80
LISTEN 0 128 :::80 :::*
验证:
四.查看root用户带有终端的进程
1. top命令如果不加限制,默认是查看所有用户的进程情况
2. top -u [用户名] 可以查看该用户名的所有进程
实验如下
1. ubuntu用户状态下,我们运行命令 top -u ubuntu 可以查看用户ubuntu的所有进程
2. 还是ubuntu用户状态下,我们运行命令 top -u root 可以查看用户root的所有进程