[Linux] Cockpit管理服务器 软件包管理
目录
Cockpit管理服务器
部署Cockpit
修改Windows上的host
扩展 Cockpit
Linux软件包管理
rpm命令
查询
验证
安装和卸载
提取RPM包中的文件
使用dnf管理软件包
dnf介绍
dnf命令
软件包组管理
配置 yum 仓库
yum 仓库配置
yum 仓库管理
查看 yum 仓库
启用仓库
禁用仓库
仓库缓存管理
添加 kubernetes 仓库
添加 docker-ce 仓库
epel 仓库
源码安装软件
源码安装 nginx
介绍
安装
使用
配置nginx服务
自建仓库
自建仓库流程
详细操作步骤
同步仓库
Cockpit管理服务器
Cockpit是一个开源工具,通过Web Console管理Linux服务器
部署Cockpit
#安装软件包
dnf install cockpit#启用并启动服务
systemctl enable cockpit.socket --now# 配置防火墙放行cockpit服务
firewall-cmd --add-service=cockpit
firewall-cmd --add-service=cockpit --permanent
修改Windows上的host
打开C盘下的etc目录
找到host文件,以管理员方式用记事本打开这个文件,在文件内容末尾加上linux的ip地址和主机名
保存,打开浏览器
登录,用户名和密码和linux相同
登录进来就可以在网页端查看系统信息、日志等
扩展 Cockpit
查看Cockpit扩展包:
部分扩展包说明:
-
cockpit-dashboard,提供管理多个Linux界面。
-
cockpit-docker,管理docker容器。
-
cockpit-composer,管理容器镜像。
-
cockpit-kubernetes,管理kubernetes。
-
cockpit-machines,管理kvm虚拟机。
-
cockpit-packagekit,管理软件包。
-
cockpit-storaged,管理存储。
-
cockpit-doc,Cockpit说明文档。
安装扩展包
[root@rocky8 ~]# dnf install cockpit-composer cockpit-dashboard cockpit-doc cockpit-docker cockpit-kubernetes cockpit-machines cockpit-packagekit cockpit-storaged
Linux软件包管理
rpm命令
基本命令
|选项|作用| |-|-| |-q
|基本查询模式| |-a
|查询所有已安装的包| |-f <文件>
|查询文件所属的包| |-i
|显示包的详细信息| |-l
|列出包内的文件| |--scripts
|查看包安装/卸载时执行的脚本|
查询
#查看系统中安装了哪些软件包
rpm -qa
#查询系统中某个软件包是否安装
rpm -q httpd
#查询系统中某个已安装的软件包元数据信息
rpm -qi coreutils
#查询系统中某个已安装的软件包包含哪些文件
rpm -q -l openssh-server
#查询系统中某个文件属于哪个已安装的软件包
rpm -qf /etc/ssh/sshd_config
#查询系统中某个已安装的软件包包含的脚本
rpm -q --scripts openssh-server
#查询系统中某个已安装的软件包变更日志
rpm -q --changelog openssh-server
#下载httpd软件包
yum download httpd
#查询系统中某个软件包文件包包含哪些配置文件
rpm -q -p httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.rpm -c
#查询某个软件包组中包含哪些软件包
rpm -qg 'System Environment/Base'
验证
#查看openssh-server软件安装是否有问题
rpm -V openssh-server
#修改
sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
#再次查看
rpm -V openssh-server
#此时会有报错
安装和卸载
#下载软件包
yum download lrzsz
#查看
ls lrzsz*
#安装
rpm -i lrzsz-0.12.20-43.el8.x86_64.rpmrpm -q lrzsz
#卸载
rpm -e lrzszrpm -q lrzsz
提取RPM包中的文件
方法1:分步骤提取
#将文件转换为cpio格式
[19:12:45 root@server-znf ~]# rpm2cpio httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.rpm > httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.cpio#查询cpio格式(一种打包格式)文件中有哪些文件
[19:22:20 root@server-znf ~]# cpio -t < httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.cpio
#配置管道查询特定文件
[19:22:45 root@server-znf ~]# cpio -t < httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.cpio | grep 'httpd\.conf'
#提取所有文件
cpio -id '*' < httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.cpio#提取所有文件
cpio -id ./etc/httpd/conf/httpd.conf < httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.cpio
方法2:一键提取所有文件
rpm2cpio httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.rpm | cpio -id '*'
使用dnf管理软件包
dnf介绍
rpm命令是一个管理软件包的工具,不适用于软件包存储库或自动解决来自多个源的依赖项
yum是管理基于RPM的软件安装和更新的更好系统。yum命令允许安装,更新,删除和获取有关软件包及其依赖项的信息。
DNF取代了YUM,在功能上于YUM命令相同。克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。
dnf命令
#查看仓库中httpd包信息
dnf info http
# 查看仓库中http开头的包有哪些
[root@rocky8 ~]# dnf list 'http*'# 查看仓库中httpd包有哪些版本
[root@rocky8 ~]# dnf list httpd --showduplicates
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: mirrors.ustc.edu.cn* extras: ftp.sjtu.edu.cn* updates: mirrors.ustc.edu.cn
Available Packages
httpd.x86_64 2.4.6-95.el7.centos base
httpd.x86_64 2.4.6-97.el7.centos updates
httpd.x86_64 2.4.6-97.el7.centos.1 updates
httpd.x86_64 2.4.6-97.el7.centos.2 updates
httpd.x86_64 2.4.6-97.el7.centos.4 updates
httpd.x86_64 2.4.6-97.el7.centos.5 updates# 查看仓库中'web server'相关软件包有哪些
[root@rocky8 ~]# dnf search 'web server'
[root@rocky8 ~]# dnf search all 'web server'# 查看仓库中哪个包可以提供文件/var/www/html
[root@rocky8 ~]# dnf provides /var/www/html# 从仓库中安装httpd,自动解决依赖问题
[root@rocky8 ~]# dnf install -y httpd# 从仓库中下载vsftpd包,及其依赖包
[root@rocky8 ~]# dnf install vsftpd --downloadonly --downloaddir=/root/
[root@rocky8 ~]# ls vsftpd-*
vsftpd-3.0.2-29.el7_9.x86_64.rpm# 安装本地文件系统中vsftpd包
[root@rocky8 ~]# dnf localinstall ./vsftpd-3.0.2-29.el7_9.x86_64.rpm # 降级vsftpd版本为3.0.2-28.el7
[root@rocky8 ~]# dnf downgrade -y vsftpd-3.0.2-28.el7# 降级vsftpd版本为3.0.2-29.el7_9
[root@rocky8 ~]# dnf update vsftpd-3.0.2-29.el7_9# 升级系统中所有软件为最新版本
[root@rocky8 ~]# dnf update # 卸载软件包
[root@rocky8 ~]# dnf remove httpd
为什么需要专门创建仓库的软件,为什么不直接创建目录存储仓库?
-
仓库需要有包的依赖关系,下载包的同时会下载所需依赖,目录无法满足
-
仓库需要包依赖关系(如A包依赖B包)
-
仓库需要版本信息(如nginx-1.18.0>nginx-1.17.9)
-
仓库需要数字签名(GPG验证防篡改)
软件包组管理
# 查看仓库中软件包组清单
[root@rocky8 ~]# dnf grouplist
Loaded plugins: fastestmirror, langpacks
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
* base: mirrors.ustc.edu.cn
* extras: ftp.sjtu.edu.cn
* updates: mirrors.ustc.edu.cn
Available Environment Groups:Minimal InstallCompute NodeInfrastructure ServerFile and Print ServerBasic Web ServerVirtualization HostServer with GUIGNOME DesktopKDE Plasma WorkspacesDevelopment and Creative Workstation
Available Groups:Compatibility LibrariesConsole Internet ToolsDevelopment ToolsGraphical Administration ToolsLegacy UNIX CompatibilityScientific SupportSecurity ToolsSmart Card SupportSystem Administration ToolsSystem Management
Done# 查看仓库中软件包组信息
[root@rocky8 ~]# dnf groupinfo <tab><tab>
[root@rocky8 ~]# dnf groupinfo 'Server with GUI'# 安装仓库中软件包组
[root@rocky8 ~]# dnf groupinstall 'Server with GUI'# 卸载仓库中软件包组
[root@rocky8 ~]# dnf groupremove 'Server with GUI'
配置 yum 仓库
yum 仓库配置
dnf 工具的配置文件是 /etc/dnf/dnf.conf,该文件包括两部分:
-
main,yum全局配置,提供每个仓库部分参数默认值。
-
每个仓库的独立配置。
[root@rocky8 ~]# cat /etc/dnf/dnf.conf
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
使用如下命令查看完整的配置内容:
[root@rocky8 ~]# dnf install -y dnf-utils
[root@server ~]# dnf config-manager --dump
Loaded plugins: fastestmirror, langpacks
=================================== main =====================================
[main]
......
cachedir = /var/cache/dnf
......
config_file_path = /etc/dnf/dnf.conf
......
enabled = 1
......
gpgcheck = 1
......
keepcache = 0
localpkg_gpgcheck = 0
log_compress = 0
log_rotate = 4
log_size = 1048576
logdir = /var/log
logfilelevel = 9
max_parallel_downloads = 3
metadata_expire = 172800
metadata_timer_sync = 10800
......
protected_packages = dnf, setup, dnf, systemd, systemd-udev, yum, sudo, setup, dnf, systemd, systemd-udev, yum, sudo
......
repo_gpgcheck = 0
reposdir = /etc/yum.repos.d, /etc/yum/repos.d, /etc/distro.repos.d
......
main 部分需要关注的参数:
-
enabled = 1,仓库默认启用。
-
gpgcheck = 1,仓库默认启用gpg校验。
-
keepcache = 0,不保存缓存。
-
cachedir = /var/cache/dnf,缓存文件保存的位置。
yum管理的软件包存放在yum仓库,yum仓库配置文件存放在/etc/yum.repos.d目录。
[root@rocky8 ~]# ls /etc/yum.repos.d/
Rocky-AppStream.repo Rocky-NFV.repo
Rocky-BaseOS.repo Rocky-Plus.repo
Rocky-Debuginfo.repo Rocky-PowerTools.repo
Rocky-Devel.repo Rocky-ResilientStorage.repo
Rocky-Extras.repo Rocky-RT.repo
Rocky-HighAvailability.repo Rocky-Sources.repo
Rocky-Media.repo
yum 仓库管理
查看 yum 仓库
# 查看yum仓库,默认不包括未启用的仓库
[root@server ~]# dnf repolist
repo id repo name
appstream Rocky Linux 8 - AppStream
baseos Rocky Linux 8 - BaseOS
extras Rocky Linux 8 - Extras# 查看yum所有仓库,包括未启用的仓库
[root@rocky8 ~]# dnf repolist all
启用仓库
# 查看禁用的仓库清单
[root@rocky8 ~]# dnf repolist disabled
......
ha Rocky Linux 8 - HighAvailability disable
......# 启用 ha 仓库
[root@rocky8 ~]# dnf config-manager --enable ha
禁用仓库
[root@rocky8 ~]# dnf config-manager --disable ha
仓库缓存管理
更新缓存后,yum install
命令可补全软件包名称。
# 清理缓存数据
[root@rocky8 ~]# dnf clean <tab><tab>
all dbcache expire-cache metadata packages# 清理所有缓存数据
[root@rocky8 ~]# dnf clean all# 创建缓存数据
[root@server ~]# dnf makecache
Rocky Linux 8 - AppStream 5.6 kB/s | 4.8 kB 00:00
Rocky Linux 8 - BaseOS 5.2 kB/s | 4.3 kB 00:00
Rocky Linux 8 - Extras 3.7 kB/s | 3.1 kB 00:00
Metadata cache created.
添加 kubernetes 仓库
[root@rocky8 ~]# dnf config-manager --add-repo=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/[root@rocky8 ~]# cat /etc/yum.repos.d/mirrors.aliyun.com_kubernetes_yum_repos_kubernetes-el7-x86_64_.repo
[mirrors.aliyun.com_kubernetes_yum_repos_kubernetes-el7-x86_64_]
name=added from: https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1# 安装 kubectl 包
[root@rocky8 ~]# dnf install kubectl --nogpgcheck
添加 docker-ce 仓库
[root@rocky8 ~]# cat << 'EOF' > /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=0
EOF# 查看docker版本
[root@rocky8 ~]# dnf list docker-ce
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.ustc.edu.cn
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
Available Packages
docker-ce.x86_64 3:20.10.22-3.el7 docker-ce-stabl
epel 仓库
EPEL(Extra Packages for Enterprise Linux),是由Fedora Special Interest Group维护的Enterprise Linux(RHEL、CentOS)中经常用到的包。
[root@rocky8 ~]# dnf install -y epel-release# 也可以直接使用aliyun的源
[root@rocky8 ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-8.repo
源码安装软件
源码安装 nginx
介绍
Nginx是一个高性能的HTTP和反向代理web服务器。
官方地址:https://nginx.org
安装
# 安装依赖
[root@rocky8 ~]# dnf install gcc make pcre-devel zlib-devel # 下载
[root@rocky8 ~]# wget https://nginx.org/download/nginx-1.24.0.tar.gz# 解压
[root@rocky8 ~]# tar -xf nginx-1.24.0.tar.gz # 配置
[root@rocky8 ~]# cd nginx-1.24.0/
[root@rocky8 ~]# ./configure --prefix=/usr/local/nginx# 编译安装
[root@rocky8 nginx-1.24.0]# make && make install
[root@rocky8 ~]# ls /usr/local/nginx/
conf html logs sbin# 配置环境变量
[root@rocky8 nginx-1.24.0]# export PATH=$PATH:/usr/local/nginx/sbin/
[root@rocky8 nginx-1.24.0]# echo 'export PATH=$PATH:/usr/local/nginx/sbin/' >> ~/.bashrc
使用
# 启动服务
[root@rocky8 ~]# nginx
[root@rocky8 ~]# pkill nginx# 验证
[root@rocky8 ~]# curl -s http://localhost | grep Thank
<p><em>Thank you for using nginx.</em></p>
命令总结:
-
nginx,启动服务
-
nginx -s quit,待nginx进程处理任务完毕进行停止。
-
nginx -s stop,查出nginx进程id再使用kill命令强制杀掉进程。
-
nginx -s reload,重新加载服务。
配置nginx服务
[root@rocky8 ~]# cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/nginx.service
[root@rocky8 ~]# vim /etc/systemd/system/nginx.service
[Unit]
Description=Nginx server daemon[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit[Install]
WantedBy=multi-user.target
[root@rocky8 ~]# systemctl daemon-reload
[root@rocky8 ~]# systemctl enable nginx.service --now
自建仓库
自建仓库流程
-
准备软件包
-
创建仓库索引信息
-
发布仓库
-
客户端配置验证
详细操作步骤
- 准备软件包
[root@server ~]# mkdir rpms
# 下载软件包,以及依赖的软件包
[root@server ~]# yum install -y vim open-vm-tools vsftpd lrzsz bash-completion --downloadonly --downloaddir=./rpms/
# 注意:
# 如果使用yum download 下载,则不会下载依赖的软件包。
# 此时不要执行yum相关命令,否则这里软件包会被清理掉。# 移动软件包到发布目录
[root@server ~]# mkdir -p /var/www/html/tools
[root@server ~]# mv rpms /var/www/html/tools/Packages
- 创建仓库
# 安装创建仓库软件包
[root@server ~]# yum install -y createrepo# 创建仓库索引信息
[root@server ~]# createrepo /var/www/html/tools/
- 通过 web 服务器发布仓库
# 部署 web 服务器
[root@server ~]# yum install -y httpd
[root@server ~]# systemctl enable httpd --now#关闭防火墙和 SELinux
[root@server ~]# systemctl disable firewalld.service --now
[root@server ~]# setenforce 0
- 客户端配置验证
# 备份原有仓库
[root@client ~]# mkdir /etc/yum.repos.d/old
[root@client ~]# mv /etc/yum.repos.d/*repo /etc/yum.repos.d/old# 添加新仓库
[root@client ~]# cat << 'EOF' > /etc/yum.repos.d/tools.repo
[tools]
name=rocky8 tools from server.linux.fun
baseurl=http://server.linux.fun/tools/
enabled=1
gpgcheck=0
EOF
[root@client ~]# ls /etc/yum.repos.d/
old tools.repo# 安装软件包
[root@client ~]# yum install -y vim
同步仓库
# 将仓库中软件包和元数据全部同步到本地
[root@client ~]# yum reposync --repoid=tools --download-metadata
[root@client ~]# ls tools/
Packages repodata