[ Content contribution] 服务搭建系列(1):基础环境配置
Tofloor
poster avatar
废物头子
deepin
2023-12-19 22:09
Author

服务搭建系列(1):基础环境配置

前言:在分享部分Linux基础知识后,打算开启一份新的专题,使用1060a来搭建各种基础服务,如DNS,DHCP,Apache等服务。每一章内容会从服务的作用,工作原理,配置案例来编写文件,同时希望各位小伙伴能够提供自己希望了解的服务,本人会尽自己所能去完成文档编写。

一、主机名设置

通常在服务器集群当中为了区分每台设备,我们会给每天设备设置主机名,并通过hosts文件来完成主机名与IP地址映射关系,来方便我们管理集群中的所有服务器。

(1)设置主机名

[root@localhost Desktop]# hostnamectl set-hostname servera

(2)修改hosts文件,完成主机名与IP地址的映射关系

[root@servera ~]# echo "192.168.200.10 servera" >> /etc/hosts 
[root@servera ~]# cat /etc/hosts 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.10 servera
[root@servera ~]# ping servera -c 2
PING servera (192.168.200.10) 56(84) bytes of data.
64 bytes from servera (192.168.200.10): icmp_seq=1 ttl=64 time=0.046 ms
64 bytes from servera (192.168.200.10): icmp_seq=2 ttl=64 time=0.060 ms

--- servera ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1007ms
rtt min/avg/max/mdev = 0.046/0.053/0.060/0.007 ms

二、IP地址配置

uos-server使用NerworkManaer工具来管理网络。该工具提供了两个命令来进行网络配置,分别是

nmtuinmcli。其中 nmtui为图形化配置方式,nmcli是一个命令行工具。

(1)nmcli

语法:
nmcli [OPTIONS...] {help | general | networking | radio | connection | device | agent | monitor} [COMMAND] [ARGUMENTS...]

对网卡设备进行管理

1.查看网卡状态
[root@servera ~]# nmcli device 
DEVICE  TYPE      STATE   CONNECTION 
ens33   ethernet  已连接  ens33  
lo      loopback  未托管  --   

2.断开网卡和配置文件的链接
[root@servera ~]# nmcli device disconnect ens33
[root@servera ~]# nmcli device 
DEVICE  TYPE      STATE   CONNECTION 
ens33   ethernet  已断开  ens33  
lo      loopback  未托管  --   

3.链接网卡和配置文件
[root@servera ~]# nmcli device connect ens33 
成功用 "ens33a80708d3-c757-4b79-a0cf-b399cd68482c" 激活了设备 ""。

注:当网卡没有对应的配置文件的时候,重新连接配置文件会创建一个同名的网卡配置文件,使用DHCP的方式获取IP地址。


对网卡配置文件进行管理
1.查看网卡配置文件
[root@servera ~]# nmcli connection show 
NAME   UUID                                  TYPE      DEVICE 
ens33  a80708d3-c757-4b79-a0cf-b399cd68482c  ethernet  ens33

2.添加一个网卡配置文件
[root@servera ~]# nmcli connection add type ethernet ifname ens33 con-name ens33-cfg ipv4.method manual ipv4.addresses 192.168.200.10/24 ipv4.gateway 192.168.200.2 ipv4.dns 114.114.114.114 autoconnect yes 
连接 "ens33-cfg" (82d92839-e55b-42ff-ad87-0a847ef30745) 已成功添加。

type:网络类型
ifname:网卡设备名
con-name:配置文件名 
ipv4.method:获取IP地址方式,manual为手动配置,auto为dhcp获取。
ipv4.address:配置的IP地址和掩码
ipv4.gateway:配置网关
ipv4.dns:配置的dns地址
autoconnect:是否开机激活此链接。

3.修改IP地址
[root@servera ~]# nmcli connection modify ens33-cfg ipv4.addresses 192.168.200.20/24

4.重新读取配置文件
[root@servera ~]# nmcli connection up ens33-cfg 

5.删除配置文件
[root@servera ~]# nmcli connection delete ens33-cfg 
成功删除连接 "ens33-cfg" (82d92839-e55b-42ff-ad87-0a847ef30745)。

6.手动修改文件后重新读取
[root@servera ~]# nmcli connection reload 

三、软件源管理

(1)RPM软件包介绍

RPM包管理器最初是由红帽开发,该程序提供一种标准的方式打包软件进行分发。红帽为红帽企业Linux提供的所有软件包都以RPM软件包的形式提供。

RPM软件包文件名由四个元素组成再加上.rpm后缀:name-version-release.arch

vsftpd-3.0.5-4.el9.x86_64.rpm
name-version-release.arch

name是软件包名字(vsftpd)
version是原始软件包的版本号(3.0.5)
release是基本该版本软件包的发行版本,由软件打包商提供(4.el9)
arch是编译软件包运行的处理器架构(x86_64)。
	noarch表示此软件包内容不限定架构
	x86_84表示64位的x86架构
	aarch64表示64位的ARM架构

当我们从存储库中安装软件包的时候,只需要软件包的名称。如果存在多个版本,则会安装版本号高的软件包,如果一个版本存在多个发行版,则会安装发行版本号更改的软件包。

每个RPM软件包是包含以下三个组成部分:

  • 软件包安装的文件。
  • 与软件包相关的信息,是否要求按照其他软件包,授权许可信息,软件包更新日志等详细信息。
  • 在安装、更新或删除时存在或者运行的脚本。

软件提供商使用GPG密钥对RPM软件包进行数字签名。RPM系统通过确认软件包的GPG密钥签名来验证软件包的完整性。如果GPG签名不匹配,RPM系统拒绝安装软件包。

(2)RPM使用

rpm工具可以用来查看软件信息以及安装和更新软件包。

RPM查询

查询已经安装的软件包
# rpm -qa

查询软件包信息
# rpm -qi  yum 

查询软件包安装的文件
# rpm -ql yum

仅查询软件包安装的配置文件
# rpm -qc yum

仅列出软件包安装的文档文件
# rpm -qd yum

查询安装或删除软件包前后运行的脚本
# rpm -q --scripts vsftpd 

rpm安装与卸载

使用rpm安装软件包
# rpm -ivh vsftpd-3.0.5-4.el9.x86_64.rpm 
warning: vsftpd-3.0.5-4.el9.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Verifying...                         ################################# [100%])
Preparing...                         ################################# [100%])
Updating / installing...
   1:vsftpd-3.0.5-4.el9              ################################# [100%])
   
使用rpm卸载软件包
# rpm -e vsftpd 

常见选项
-i		安装
-v		显示详细信息
-h		显示进度条
-e		移除软件包
--replacepkgs	重新安装。相当于--force
--oldpackage	安装旧版的软件包
--replacefiles	忽略冲突
--nodeps		忽略依赖性关系

rpm的缺陷

以使用rpm安装samba来看,在下面的安装过程中,可以发现软件包直接存在依赖关系,rpm无法自动处理这里依赖关系,需要我们根据依赖关系先后去安装软件包。

[root@servera Packages]# rpm -ivh samba-4.17.5-102.el9.x86_64.rpm 
warning: samba-4.17.5-102.el9.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
error: Failed dependencies:
	libREG-FULL-samba4.so()(64bit) is needed by samba-0:4.17.5-102.el9.x86_64
	libREG-FULL-samba4.so(SAMBA_4.17.5_SAMBA4)(64bit) is needed by samba-0:4.17.5-102.el9.x86_64
	libRPC-SERVER-LOOP-samba4.so()(64bit) is needed by samba-0:4.17.5-102.el9.x86_64
	libRPC-SERVER-LOOP-samba4.so(SAMBA_4.17.5_SAMBA4)(64bit) is needed by samba-0:4.17.5-102.el9.x86_64
	libnetapi = 0:4.17.5-102.el9 is needed by samba-0:4.17.5-102.el9.x86_64
	libxattr-tdb-samba4.so()(64bit) is needed by samba-0:4.17.5-102.el9.x86_64
	libxattr-tdb-samba4.so(SAMBA_4.17.5_SAMBA4)(64bit) is needed by samba-0:4.17.5-102.el9.x86_64
	samba-common-tools = 0:4.17.5-102.el9 is needed by samba-0:4.17.5-102.el9.x86_64
	samba-dcerpc = 0:4.17.5-102.el9 is needed by samba-0:4.17.5-102.el9.x86_64
	samba-libs = 0:4.17.5-102.el9 is needed by samba-0:4.17.5-102.el9.x86_64
//安装samba发现缺少依赖包,需要安装依赖包
[root@servera Packages]# rpm -ivh samba-libs-4.17.5-102.el9.x86_64.rpm 
warning: samba-libs-4.17.5-102.el9.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:samba-libs-0:4.17.5-102.el9      ################################# [100%]
[root@rhce Packages]# rpm -ivh samba-dcerpc-4.17.5-102.el9.x86_64.rpm 
warning: samba-dcerpc-4.17.5-102.el9.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
error: Failed dependencies:
	libnetapi = 0:4.17.5-102.el9 is needed by samba-dcerpc-0:4.17.5-102.el9.x86_64
	libnetapi.so.1()(64bit) is needed by samba-dcerpc-0:4.17.5-102.el9.x86_64
	libnetapi.so.1(NETAPI_1.0.0)(64bit) is needed by samba-dcerpc-0:4.17.5-102.el9.x86_64
//安装samba-dcerpc发现缺少依赖包,需要先安装依赖包。
[root@servera Packages]# rpm -ivh libnetapi-4.17.5-102.el9.x86_64.rpm 
warning: libnetapi-4.17.5-102.el9.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:libnetapi-0:4.17.5-102.el9       ################################# [100%]
[root@rhce Packages]# rpm -ivh samba-dcerpc-4.17.5-102.el9.x86_64.rpm 
warning: samba-dcerpc-4.17.5-102.el9.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:samba-dcerpc-0:4.17.5-102.el9    ################################# [100%]
[root@servera Packages]# rpm -ivh samba-common-tools-4.17.5-102.el9.x86_64.rpm 
warning: samba-common-tools-4.17.5-102.el9.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
error: Failed dependencies:
	samba-ldb-ldap-modules = 0:4.17.5-102.el9 is needed by samba-common-tools-0:4.17.5-102.el9.x86_64
[root@rhce Packages]# rpm -ivh samba-ldb-ldap-modules-4.17.5-102.el9.x86_64.rpm 
warning: samba-ldb-ldap-modules-4.17.5-102.el9.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:samba-ldb-ldap-modules-0:4.17.5-1################################# [100%]
[root@servera Packages]# rpm -ivh samba-common-tools-4.17.5-102.el9.x86_64.rpm 
warning: samba-common-tools-4.17.5-102.el9.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:samba-common-tools-0:4.17.5-102.e################################# [100%]
[root@servera Packages]# rpm -ivh samba-4.17.5-102.el9.x86_64.rpm 
warning: samba-4.17.5-102.el9.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:samba-0:4.17.5-102.el9           ################################# [100%]

依赖类型以及解决办法

  • 树形依赖:a-b-c,要安装a,必选先安装b,而按照b需要先安装c。解决此依赖的办法就是从后往前安装,即先安装c,再安装b,最后安装a。
  • 环形依赖:a-b-c-a,各个安装包之间的依赖关系构成环状。解决此类型依赖是用一条命令同时安装所有的软件包。

(3)dnf使用

使用rpm命令安装软件包不能自动解决依赖关系。为了解决这个问题,在基于RPM包管理上出现了新的软件包管理器。

使用dnf(yum)进行软件包管理,yum和dnf在命令上没有太大区别,在系统中开始已经逐渐开始转向DNF,但是yum也同样可以使用。

[root@servera ~]# ls -l /usr/bin/yum 
lrwxrwxrwx 1 root root 5  5月 11  2023 /usr/bin/yum -> dnf-3

yum和dnf介绍

  • YUM(全称为 Yellow dog Updater, Modified)是基于RPM包管理,能够从指定的YUM源服务器自动下载RPM包进行安装和更新,可以自动处理依赖性关系,并且一次安装所有依赖软件包。
  • DNF(全称为Dandified yum)是新一代的rpm软件包管理器,克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。其余方面跟YUM差别不大。

yum和dnf使用

yum listdnf list):查看已经安装和可用的软件包

# yum list NetworkManager*
# dnf list NetworkManager*

dnf search KEYWORD:根据仅在名称和摘要字段中找到关键字列出软件包。

# dnf search NetworkManager

dnf info PACKAGENAME:查看软件包的详细信息。

# dnf info yum

dnf provides PATHNAME:显示与指定的路径名匹配的软件包

# dnf provides /etc/httpd/conf/httpd.conf

dnf install -y PACKAGENAME:获取并安装软件包,包括所有依赖项。

# dnf install -y httpd

dnf update -y PACKAGENAME:获取指定软件包的较新版本,包括所有的依赖项。该操作通常会保留当前配置文件。但是在某些情况下,如果软件提供商认为旧文件不可用,则会对配置文件重命令。如果不指定包名,将会更新所有。

# dnf update -y httpd

dnf remove -y PACKAGENAME:移除指定软件包,包括所有受支持的软件包。

# dnf remove -y httpd

dnf安装和删除各组软件

dnf也具有组的概念,即针对特定特定目的而一起安装的相关软件集合。一个组提供的软件包或在组里面有mandatory(必要安装的软件包)、default(默认会安装的软件包)或optional(可以不安装的软件包)。

命令 作用
dnf grouplist 显示已经安装和可用的组名称
dnf gorupinfo 显示组的相关信息
dnf groupinstall 安装
dnf groupremove 移除
dnf groupupdate 更新

dnf仓库配置

不论是dnf还是yum来安装软件包的时候,都需要依靠软件包仓库来完成,默认情况下是系统中存在一个名称为 UnionTechOS.repo的软件源仓库配置文件,在网络允许的情况下,我们可以直接只用该软件仓库。如果网络不允许,需要我们手动配置软件包仓库以便来使用dnf工具。

在系统关于仓库源的配置存放在 /etc/yum.repos.d/目录下,文件必选以 .repo结尾.

[root@servera ~]# mkdir /cdrow
[root@rhce ~]# mount /dev/sr0 /cdrow/
mount: /cdrow: WARNING: source write-protected, mounted read-only.
[root@servera ~]# vim /etc/yum.repos.d/local.repo 
[AppStream]
name=AppStream
baseurl=file:///cdrow/AppStream
enabled=1
gpgcheck=0

[BaseOS]
name=BaseOS
baseurl=file:///cdrow/BaseOS
enabled=1
gpgcheck=0
[root@servera ~]# dnf clean all
[root@servera ~]# dnf repolist 
[root@servera cdrow]# dnf repolist
仓库 id                                      仓库名称
AppStream                                    AppStream
BaseOS                                       BaseOS
UnionTechOS-20-AppStream                     UnionTechOS 20 AppStream
UnionTechOS-20-BaseOS                        UnionTechOS 20 BaseOS
UnionTechOS-20-Extras                        UnionTechOS 20 Extras
UnionTechOS-20-Plus                          UnionTechOS 20 Plus
UnionTechOS-20-PowerTools                    UnionTechOS 20 PowerTools
UnionTechOS-20-Update                        UnionTechOS 20 Update

以上配置就是服务配置的基本前提了。基本所有的服务配置都需要完整以上操作。如果在网络允许的情况下,可以不需要配置软件源仓库,使用系统自带的软件源仓库。


本人不才,在deepin论坛分享了一些自己在Linux学习过程中的一些知识积累,在分享的同时也在论坛中学习到了很多知识。现在想去拉起一个群聊,来分享知识,希望大家都能加入进来,分享自己所擅长的知识,本人也会在群里分享Linux,网络,docker,mysql等知识,同时也希望各位大佬能够帮助在下,完善自己的分享中的不足。

群号:751639288

Reply Favorite View the author
All Replies
废物头子
deepin
2023-12-19 22:11
#1

开了一个新的系列,希望各位小伙伴们能够提供系列第二篇文章的服务。暂定第二个服务为ssh。

Reply View the author
阿尼樱奈奈
Moderator
2023-12-19 22:12
#2

like

Reply View the author
jjcui8595
deepin
2023-12-19 22:14
#3

楼主辛苦

Reply View the author
晚秋(lateautumn)
Moderator
2023-12-20 04:31
#4

对我来说,有点高深joy

Reply View the author
shalling
Deepin Wiki Editor
2023-12-29 01:37
#5

👍 先点赞,后收藏⭐️

Reply View the author
周二
deepin
2024-01-05 14:16
#6

大大的赞

Reply View the author
Lwh2008-Equinox
deepin
2024-01-18 10:39
#7
废物头子

开了一个新的系列,希望各位小伙伴们能够提供系列第二篇文章的服务。暂定第二个服务为ssh。

希望增加debian的教程

Reply View the author
乾豫恒益
deepin
2024-03-04 10:51
#8

楼主辛苦了!yeah yeahyeah

Reply View the author