服务管理大作业要求:
基本拓扑如下:
按照要求完成基本的系统管理任务:
- 完成所有系统的主机名、网络配置;
本次作业共需要3台虚拟机,分别作为客户端、综合应用服务器、存储服务器。三台虚拟机操作系统均为CentOS-Stream系统的基本要求如下:
角色 | 主机名 | IP地址 | 硬盘 | 额外网络要求 |
综合应用服务器 | appserver.classroom.com | X.X.X.100 | 一块硬盘 安装默认分区方案 | 能够和存储服务器和客户端通信 |
存储服务器 | storage.classroom.com | X.X.X.50 | 4块硬盘。一块作为系统安装使用,使用默认方案,另外三块暂不使用 | 能够和客户端以及综合应用服务器通信 |
客户机 | client | X.X.X.X | 一块盘 默认分区方案 | 能够和存储服务器、综合应用服务器通信 |
注:1. 为了减轻实验难度,三台虚拟机网络处于同一网段下。使用ping测试不同主机之间的联通性,使用nmcli而不是直接修改配置文件; 2. 以上三台系统的selinux 处于严格模式,防火墙服务运行
- 配置系统基本的包管理工具;
- 在综合应用服务器和存储上操作;
- 使用本地光盘作为镜像源,光盘应该呈现永久挂载状态
- 修改yum镜像仓库配置文件,仅使用光盘作为唯一的安装源;
- 清理yum缓存并重新生成缓存
- 安装软件包sshpass
- 通过acl控制用户的访问;
- 在综合应用服务器上有一个多项目组协作目录/cooperation;
- 为了方便用户操作,对此目录的权限要求为775,属主root 属组manager同时目录下新建文件将继承目录的属组保持一致
- 为了支持多项目组管理,对目录和目录下的重要文件设置以下facl(不存在的组账号、用户账号、文件等需要统一创建)
路径 | 文件属性 | 账号名 | 账号属性 | 权限 | 是否为默认 |
/cooperation | 目录 | webapp | 组账号 | rwX | 是 |
/cooperation | 目录 | manager | 用户账号 | r | 否 |
/cooperation/income | 文件 | manager | 用户账号 | rw | 否 |
/cooperation/test.py | 文件 | opretor | 用户账号 | rx | 否 |
/cooperation/ideas | 目录 | webapp | 组账号 | rwx | 否 |
- 重启系统root用户密码,并调整系统性能;
- 在综合应用服务器上操作;
- 启动系统,修改grub命令的方式进入root shell,修改root密码为redhat;
- 重启之后,从客户机上使用sshpass 使用明文命令登录综合应用服务器;
验证语句示例:-p 代表用户的密码
-
- 启用系统调优服务,查看服务状态
- 设置目前性能优化方案为desktop
- 查看推荐的性能优化方案
- 自动切换到系统推荐的性能优化方案
- 配置本地的dns域名解析服务器;
- 修改三台系统均使用综合应用服务作为默认的dns服务器,注意重启后不会失效
- 综合应用服务器上使用unbound 服务搭建本地缓存域名解析服务器
- 启用unbound服务,防护墙放行dns(永久生效)
- 使用114.114.114.114 或者 8.8.8.8 解析公共网络域名
- 公司内部域名使用local-data完成解析,要求如下
appserver.classroom.com | A | X.X.X.100 |
storage.classroom.com | A | X.X.X.50 |
vhosta.classroom.com | A | X.X.X.100 |
vhostb.classroom.com | A | X.X.X.100 |
X.X.X.100 | ptr | vhosta.classroom.com |
secure.classroom.com | A | X.X.X.100 |
classroom.com | NS | appserver.classroom.com |
注:在客户端使用nslookup、dig等工具验证解析结果
- 配置虚拟主机;
- 安装httpd
- 创建目录/www/vhosta /www/vhostb /www/secure,设置文件默认的安全上下文为 httpd_sys_content_t
- 配置基于域名的虚拟主机,要求如下:
域名 | 是否拥有独立的访问日志和错误日志 | 文件根目录 | 是否授权访问 | 是否设置别名 |
vhosta.classroom.com | 是 | /www/vhosta | 是 | 是,别名为appserver.classroom.com |
vhostb.classroom.com | 是 | /www/vhostb | 是 | 否 |
secure.classroom.com | 是 | /www/secure | 是 | 否 |
注: 其余采用默认设置
-
- 启动并保证httpd服务开机自启
- 客户机访问验证,虚拟主机的测试返回内容为自己的域名
- 对安全虚拟主机启用tls支持;
- 对于域名为secure.classroom.com的虚拟主机设置tls安全支持
- 使用自签证书
- 客户机访问验证(截图中需要包含证书信息)
- 配置vdo高级卷和lvm;
- 在存储服务器上进行一下操作
- 使用两块空闲硬盘组成卷组 exam_vg,pe大小应为8M
- 创建大小为50G的逻辑卷,以XFS格式挂载到/webcontent
- 使用剩余空闲的硬盘,创建vdo卷,逻辑大小为物理大小的1.5倍
- 以xfs文件系统挂载到/client
- 挂载信息写入/etc/fstab文件
- 配置nfs共享与客户端挂载;
- 将存储服务器配置为nfs服务器
- 导出3个目录共享,要求如下
导出路径 | 导出配置 |
/webcontent | X.X.X.0/24网段可以访问,压缩root权限 |
/client/stuff | 所有地址可以访问,不同步磁盘读写,只读 |
/client/data | 只有客户机ip可以访问,读写,所有的读写压缩nobody用户的uid、gid完成,同步磁盘读写 |
-
- 客户机使用autofs服务实现对nfs服务端导出目录: /client/stuff /client/data 的按需挂载,使用间接映射,挂载点为 /client/stuff /client/data
- 综合应用服务器实现对nfs服务端导出目录/webcontent挂载,挂载点为: /www/vhosta ,该挂载信息直接写入/etc/fstab
- 在综合应用服务器上设置selinux布尔值 httpd_use_nfs 的值为1 /on,并在开机后保持同样的设定。
- 验证客户机对于vhosta.classroom.com的访问
- 配置周期性计划任务对web日志进行备份;
- 编写web服务的日志备份脚本,要求如下:
- 将不同的虚拟主机的日志打成tar包,包名要求为虚拟主机名_日期.tar.gz,如:vhosta_20230324.tar.gz
- vhosta-access.log
- vhosta-error.log
- 仅保留最新的四个备份,旧的备份将删除
- 打包完成后,清空日志文件
- 每一步需要判断执行成功与否
- 将不同的虚拟主机的日志打成tar包,包名要求为虚拟主机名_日期.tar.gz,如:vhosta_20230324.tar.gz
- 该脚本每周运行一次
- 编写web服务的日志备份脚本,要求如下:
- 对各实验各关键部分进行必要说明、关键配置文件截图及基本验证。过程中保持selinux严格模式,以及防火墙服务运行。
目录
3.5.3 综合应用服务器上使用unbound 服务搭建本地缓存域名解析服务器
3.5.4 公司内部域名使用local-data完成解析,要求如下
第一章 实验方案设计
1.1 基本拓扑
1.2 基本配置
三台虚拟机,分别作为客户端、综合应用服务器、存储服务器。
三台虚拟机操作系统均为CentOS 8。
三台虚拟机selinux全程处于严格模式,防火墙服务运行。
角色 | 主机名 | IP地址 | 硬盘 | 额外网络要求 |
综合应用服务器 | appserver.classroom.com | 192.168.99.100 | 一块硬盘 安装默认分区方案 | 能够和存储服务器和客户端通信 |
存储服务器 | storage.classroom.com | 192.168.99.50 | 4块硬盘。一块作为系统安装使用,使用默认方案,另外三块暂不使用 | 能够和客户端以及综合应用服务器通信 |
客户机 | client | 192.168.99.10 | 一块盘 默认分区方案 | 能够和存储服务器、综合应用服务器通信 |
第二章 相关技术介绍
2.1 完成所有系统的主机名、网络配置
2.1.1.主机名配置
在Linux中,可以使用hostname命令查看当前主机名,使用hostnamectl(在某些发行版中)或编辑/etc/hostname文件来设置主机名。
2.1.2.网络配置
网络配置通常涉及设置IP地址、子网掩码、默认网关、DNS服务器等。根据所学知识使用nmcli来设置网络,并验证。
2.2 配置系统基本的包管理工具
inux系统通常配备了多种包管理工具,这些工具用于安装、更新、删除和管理系统中的软件包。Red Hat、CentOS和Fedora系列则常采用yum或dnf,同样具备强大的依赖解决能力和友好的用户界面。配置这些包管理工具时,用户需要编辑相应的配置文件,指定软件包存储库的位置和类型,以便工具能够从中检索和安装软件包。这些工具的使用使得Linux系统的软件包管理变得更加方便和高效,有助于用户更好地管理和维护他们的系统。
本次实验运用的是玉米。配置yum仓库,对光盘进行永久挂载。并复制光盘的文件,下载实验所需的软件包。
2.3 通过acl控制用户的访问
ACL(Access Control Lists)是Linux中用于控制文件和目录访问权限的一种机制。除了传统的用户、组和其他用户权限外,ACL还可以为特定用户或组设置更细粒度的访问权限。使用setfacl和getfacl命令可以管理和查看ACL设置。
2.4 重启系统root用户密码,并调整系统性能
重置root密码可以使用多种方法重置本次实验主要运用的是修改grub命令的方式进入root shell并修改密码。可以达到不用原始密码来修改,在生产环境中主要运用子在忘记密码的操作。
系统性能调优涉及多个方面,包括优化CPU、内存、磁盘I/O、网络等。本实验使用touned工具监控系统性能,并根据需要进行调整。调整系统参数、使用缓存、优化应用程序等都是提高系统性能的有效方法。
2.5 配置本地的dns域名解析服务器
在Linux实验中,可以使用nmcli工具来配置DNS域名解析服务器。这涉及安装和配置文件、创建区域文件、配置正向和反向解析等步骤。
2.6 配置虚拟主机
首先安装httpd服务,然后根据实验要求完成配置。虚拟主机技术允许在一台物理服务器上运行多个独立的Web服务器实例。这通常通过使用不同的端口、IP地址或主机名来实现。在Linux中,可以使用各种Web服务器软件来配置虚拟主机。
其次创建目录并设置文件默认安全上下文,使文件得到允许。
2.7 对安全虚拟主机启用tls支持
TLS(传输层安全性)是一种用于在Internet协议(IP)层之上提供通信安全性的协议。要在虚拟主机上启用TLS支持,需要配置SSL证书、私钥和相关的配置文件。大多数Web服务器软件都支持TLS/SSL配置。
其次是生产自签证书。Linux自签证书是用户在Linux系统中,使用特定工具如OpenSSL自行生成的一种数字证书。这种证书与传统的经过标准证书颁发机构(CA)审核的SSL证书不同,它是由用户自己签署的,因此在一些严格的安全环境下可能不被信任。然而,对于个人或小型项目来说,自签证书提供了一种简单、经济的SSL加密解决方案。用户可以使用OpenSSL等工具生成自签证书,并将其用于保护网站或服务的通信安全。需要注意的是,自签证书的私钥和证书文件需要妥善保管,以避免安全风险。
2.8 配置vdo高级卷和lvm
根据实验要求首先就存储服务器添加相应的硬盘并配置VDO。VDO(Virtual Data Optimizer)是Red Hat Enterprise Linux提供的一种存储优化技术,用于提高存储性能并降低成本。LVM(逻辑卷管理)则是一种用于管理磁盘存储的灵活方法。配置VDO和LVM涉及创建物理卷、卷组和逻辑卷等步骤。
2.9 配置nfs共享与客户端挂载:
首先下载NFS服务。NFS(网络文件系统)是一种分布式文件系统协议,允许计算机在网络上共享文件和目录。在Linux中,可以使用nfs-server和nfs-client软件包来配置NFS共享和客户端挂载。最后要设置防火墙允许NFS。
2.10 配置周期性计划任务对web日志进行备份:
根据实验要求将不同的虚拟主机的日志打成tar包,包名要求为虚拟主机名_日期.tar.gz,如:vhosta_20230324.tar.gzLinux 本次实验运用了cron工具来定期执行计划任务。编写shell脚本来实现实验的效果,然后使用cron定期运行这些脚本来备份日志。最后设置每分钟执行一次来进行测试。
3.1 完成所有系统的主机名、网络配置
3.1.1 建立虚拟机
3.1.2 设置主机名
3.1.3 网络配置
3.1.4 测试连通性
3.2 配置系统基本的包管理工具
3.2.1 挂载光盘呈现永久挂载状态
[root@appserver ~]# vim /etc/fstab
3.2.2验证
3.2.2 修改yum镜像仓库配置文件
[root@appserver ~]# vim /etc/yum.repos.d/local.repo
3.2.3 清理缓存并安装软件包sshpass
[root@appserver yum.repos.d]# yum clean all
[root@appserver yum.repos.d]# yum install -y sshpass
3.3 通过acl控制用户的访问
3.3.1 创建目录/cooperation,并授权
3.3.2 验证
3.3.3对目录和目录下的重要文件设置以下facl
路径 | 文件属性 | 账号名 | 账号属性 | 权限 | 是否为默认 |
/cooperation | 目录 | webapp | 组账号 | rwX | 是 |
/cooperation | 目录 | manager | 用户账号 | r | 否 |
/cooperation/income | 文件 | manager | 用户账号 | rw | 否 |
/cooperation/test.py | 文件 | opretor | 用户账号 | rx | 否 |
/cooperation/ideas | 目录 | webapp | 组账号 | rwx | 否 |
3.3.4 验证
3.4 重启系统root用户密码,并调整系统性能
3.4.1 修改root密码
在启动过程中,当 GRUB 菜单出现时,然后按 e 进入编辑模式,进行一下编辑。
完成编辑后,按 Ctrl + X 来启动编辑后的配置。
启动系统,修改grub命令的方式进入root shell,修改root密码为redhat
输入两次exit退出,系统将将继续进行启动,重启之后,从客户机上使用sshpass 使用明文命令登录综合应用服务器;
3.4.2 客户机上使用sshpass,进行验证
3.4.3 启用系统调优服务,查看服务状态、
下载tuned
[root@appserver ~]# yum install tuned -y
开启服务
3.4.4 设置性能优化方案为desktop,并查看
3.4.5 查看推荐的性能优化方案
3.4.6设置自动切换到系统推荐的性能优化方案
3.5配置本地的dns域名解析服务器
3.5.1 配置dns
修改三台系统均使用综合应用服务作为默认的dns服务器,注意重启后不会失效
3.5.2 验证
3.5.3 综合应用服务器上使用unbound 服务搭建本地缓存域名解析服务器
下载 unbound
[root@appserver ~]# yum install unbound -y
vim /etc/unbound/unbound.conf
3.5.4 公司内部域名使用local-data完成解析,要求如下
appserver.classroom.com | A | 192.168.99.100 |
storage.classroom.com | A | 192.168.99.50 |
vhosta.classroom.com | A | 192.168.99.100 |
vhostb.classroom.com | A | 192.168.99.100 |
192.168.99.100 | ptr | vhosta.classroom.com |
secure.classroom.com | A | 192.168.99.100 |
classroom.com | NS | appserver.classroom.com |
3.5.5 使用8.8.8.8 解析公共网络域名
3.5.6 启用unbound服务,防火墙放行dns
3.5.7 启动服务,发现端口被占用
3.5.8 终止53端口的进程,重新启动服务
服务正常运行
查看 /etc/resolv.conf
3.5.9 在客户机上验证
3.6 配置虚拟主机
3.6.1 安装httpd
yum install -y hettpd
启动并保证httpd服务开机自启
systemctl enable --now httpd
3.6.2 创建目录,并设置上下文
创建目录/www/vhosta /www/vhostb /www/secure,设置文件默认的安全上下文为 httpd_sys_content_t
mkdir -p /www/vhosta /www/vhostb /www/secure
3.6.3 配置基于域名的虚拟主机,要求如下
域名 | 是否拥有独立的访问日志和错误日志 | 文件根目录 | 是否授权访问 | 是否设置别名 |
vhosta.classroom.com | 是 | /www/vhosta | 是 | 是,别名为appserver.classroom.com |
vhostb.classroom.com | 是 | /www/vhostb | 是 | 否 |
secure.classroom.com | 是 | /www/secure | 是 | 否 |
注: 其余采用默认设置
3.6.4 配置主机名解析记录
vim /etc/hosts
3.6.5 修改配置文件
vim /etc/httpd/conf/httpd.conf
vim /etc/httpd/conf.d/myhost.conf
3.6.7 客户机验证
vhosta.classroom.com的别名为appserver.classroom :
3.7 对安全虚拟主机启用tls支持
下载openssl
yum -y install openssl openssl-devel
3.7.1生成证书
[root@appserver ~]# openssl req -x509 -newkey rsa:4096 -keyout /root/key.pem -out /root/cert.pem -days 365 -nodes
复制生成的密钥文件
安装httpd安全加密通信模块,在安装过程中,会释放一个默认的SSL配置文件,我们需要修改这个配置文件的秘钥和证书文件的路径
3.7.2 使用自签证书
yum -y install mod_ssl
vim /etc/httpd/conf.d/ssl.conf
修改证书路径和私钥路径
3.7.3 客户机验证
root@appserver private]# systemctl restart httpd
3.8配置vdo高级卷和lvm
3.8.1 创建卷组
在存储服务器使用两块空闲硬盘组成卷组 exam_vg,pe大小应为8M
3.8.2 创建逻辑卷
创建大小为50G的逻辑卷,以XFS格式挂载到/webcontent
挂载
3.8.3 创建VDO卷
使用剩余空闲的硬盘,创建vdo卷,逻辑大小为物理大小的1.5倍
3.8.4 遇到内存不足的问题
增加物理内存是最直接的解决方案。
3.8.5 以xfs文件系统挂载到/client
3.8.6 将挂载信息写入/etc/fstab文件
3.9 配置nfs共享与客户端挂载
3.9.1 将存储服务器配置为nfs服务器
在存储服务器上安装相关工具
yum install -y rpcbind nfs-utils
systemctl enable --now nfs-server.service
3.9.2 导出3个目录共享,要求如下
导出路径 | 导出配置 |
/webcontent | 192.168.99.0/24网段可以访问,压缩root权限 |
/client/stuff | 所有地址可以访问,不同步磁盘读写,只读 |
/client/data | 只有客户机ip可以访问,读写,所有的读写压缩nobody用户的uid、gid完成,同步磁盘读写 |
编辑nfs配置文件/etc/export
重启nfs服务
systemctl restart nfs-server
3.9.3 挂载
客户机使用autofs服务实现对nfs服务端导出目录: /client/stuff /client/data 的按需挂载,使用间接映射,挂载点为 /client/stuff /client/data
在客户机上安装autofs。
Yum install -y autofs
[root@client ~]# vim /etc/auto.master
编辑/etc/auto.nfs
3.9.4 综合应用服务器导出目录并挂载
综合应用服务器实现对nfs服务端导出目录/webcontent挂载,挂载点为: /www/vhosta ,该挂载信息直接写入/etc/fstab
3.9.5 设置selinux布尔值
在综合应用服务器上设置selinux布尔值 httpd_use_nfs 的值为1 /on,并在开机后保持同样的设定
3.9.6 客户端验证
3.10配置周期性计划任务对web日志进行备份
3.10.1 编写shell脚本
将不同的虚拟主机的日志打成tar包,包名要求为虚拟主机名_日期.tar.gz,如:vhosta_20230324.tar.gz
编写web_bak.sh脚本文件
-
-
- 将不同的虚拟主机的日志打成tar包,包名要求为虚拟主机名_日期.tar.gz,如:vhosta_20230324.tar.gz
- vhosta-access.log
- vhosta-error.log
- 仅保留最新的四个备份,旧的备份将删除
- 打包完成后,清空日志文件
- 每一步需要判断执行成功与否
-
3.10.2 添加任务计划
该脚本每周日6点运行一次
3.10.3 验证
第四章 实验测试
4.1. 连通性测试
4.2 镜像测试
4.3 facl测试
4.4 修改root密码测试
4.5 当前优化方案
4.6 DNS域名解析测试
4.7 自签证书测试
4.8 配置VDO卷测试
4.9 NFS共享连通性测试
4.10 周期性任务测试
第五章 实验结论与总结
本次实验主要围绕Linux系统中的服务管理展开,包括服务的安装、配置、启动、停止、重启及状态查看等。我们通过使用如systemctl、service等命令,对Apache、MySQL等常见服务进行了实践操作。此外,还涉及了服务的日志查看与问题分析,以及如何通过配置文件进行服务的个性化设置。
通过本次实验,我掌握了Linux系统中服务管理的基本技能,包括服务的启动、停止、重启等。同时,我也学会了如何查看服务的日志,以及如何通过配置文件进行服务的个性化设置。这些技能对于我未来在Linux系统下进行开发工作具有重要的实用价值。
在实验过程中,我遇到了几个问题。例如,在安装MySQL服务时,由于系统依赖包不足导致安装失败。我通过查阅相关资料,使用yum命令安装了缺失的依赖包,最终成功安装了MySQL服务。此外,在配置Apache服务时,由于配置文件错误导致服务无法启动。我仔细检查了配置文件,并对照官方文档进行了修改,最终解决了问题。
通过本次Linux服务管理实验,我不仅掌握了服务管理的基本技能,还学会了如何分析和解决问题。这些经验对于我未来的学习和工作都具有重要的指导意义。在未来的学习和工作中,我将继续深入学习Linux系统的相关知识,努力提高自己的技能水平。
在此,我要特别感谢我的指导老师。在实验过程中,老师不仅为我们提供了详细的实验指导书和丰富的实验资源,还在我们遇到问题时给予了及时的帮助和指导。正是老师的悉心教导和无私付出,让我们能够顺利完成实验并取得良好的成绩。在此,我再次向老师表示衷心的感谢和崇高的敬意!