|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
引言
CentOS Stream作为RHEL(Red Hat Enterprise Linux)的上游开发平台,为企业和个人用户提供了一个稳定、可靠且功能丰富的操作系统环境。在现代化的IT基础设施中,正确配置和管理系统服务、网络服务和安全服务是确保服务器高效、安全运行的关键。本文将全面介绍CentOS Stream中各类服务的配置方法,从基础入门到高级技巧,帮助读者掌握服务管理的精髓。
CentOS Stream基础
CentOS Stream是CentOS项目的一个新方向,它位于Fedora Linux和RHEL之间,作为RHEL的上游开发分支。与传统的CentOS不同,CentOS Stream提供了一个滚动更新的平台,让用户能够提前体验到即将在RHEL中发布的功能。
安装CentOS Stream
在开始服务配置之前,首先需要安装CentOS Stream系统。以下是安装过程的简要概述:
1. 从官方网站下载CentOS Stream ISO镜像文件
2. 创建启动媒体(USB或DVD)
3. 启动安装程序并按照向导进行安装
4. 完成基本系统配置(网络、主机名、用户账户等)
安装完成后,建议立即更新系统到最新版本:
系统初始化设置
安装完成后,需要进行一些基本的系统初始化设置:
- # 设置主机名
- sudo hostnamectl set-hostname your-hostname
- # 配置网络(以静态IP为例)
- sudo nmcli connection modify eth0 ipv4.addresses 192.168.1.100/24
- sudo nmcli connection modify eth0 ipv4.gateway 192.168.1.1
- sudo nmcli connection modify eth0 ipv4.dns 8.8.8.8
- sudo nmcli connection modify eth0 ipv4.method manual
- sudo nmcli connection up eth0
- # 检查网络状态
- ip addr show
- ping -c 4 google.com
复制代码
系统服务配置
CentOS Stream使用systemd作为初始化系统和服务管理器。systemd提供了强大的服务管理功能,包括并行启动、依赖关系管理和按需启动等。
systemd基础
systemd使用单元(unit)文件来定义和控制服务。这些单元文件通常位于以下目录:
• /usr/lib/systemd/system/: 系统安装的单元文件
• /etc/systemd/system/: 系统管理员创建或修改的单元文件
单元文件分为多种类型,包括:
• .service: 系统服务
• .socket: 套接字
• .target: 一组服务
• .mount: 文件系统挂载点
• .timer: 定时器
服务管理命令
以下是一些常用的systemd服务管理命令:
- # 启动服务
- sudo systemctl start service_name
- # 停止服务
- sudo systemctl stop service_name
- # 重启服务
- sudo systemctl restart service_name
- # 重新加载服务配置
- sudo systemctl reload service_name
- # 启用服务(开机自启)
- sudo systemctl enable service_name
- # 禁用服务
- sudo systemctl disable service_name
- # 查看服务状态
- sudo systemctl status service_name
- # 查看所有已启用的服务
- systemctl list-unit-files --state=enabled
- # 查看所有活动的服务
- systemctl list-units --type=service --state=active
- # 查看服务日志
- journalctl -u service_name
- # 实时查看服务日志
- journalctl -fu service_name
复制代码
创建自定义服务
创建自定义服务是系统管理中的常见任务。以下是一个创建自定义服务的示例:
假设我们要创建一个简单的Web服务,该服务使用Python的内置HTTP服务器:
1. 首先,创建一个简单的Python脚本:
- sudo mkdir /opt/simple_web
- sudo nano /opt/simple_web/server.py
复制代码
在server.py中添加以下内容:
- #!/usr/bin/env python3
- import http.server
- import socketserver
- PORT = 8000
- Handler = http.server.SimpleHTTPRequestHandler
- with socketserver.TCPServer(("", PORT), Handler) as httpd:
- print("Serving at port", PORT)
- httpd.serve_forever()
复制代码
1. 使脚本可执行:
- sudo chmod +x /opt/simple_web/server.py
复制代码
1. 创建systemd服务单元文件:
- sudo nano /etc/systemd/system/simple-web.service
复制代码
在simple-web.service中添加以下内容:
- [Unit]
- Description=Simple Python Web Server
- After=network.target
- [Service]
- Type=simple
- User=root
- ExecStart=/opt/simple_web/server.py
- Restart=on-failure
- RestartSec=5s
- [Install]
- WantedBy=multi-user.target
复制代码
1. 重新加载systemd配置并启动服务:
- sudo systemctl daemon-reload
- sudo systemctl start simple-web
- sudo systemctl enable simple-web
复制代码
1. 验证服务状态:
- sudo systemctl status simple-web
复制代码
服务优化技巧
优化系统服务可以提高服务器的性能和稳定性。以下是一些服务优化的技巧:
可以为服务设置资源限制,防止单个服务占用过多系统资源:
- [Service]
- ...
- # 限制CPU使用率
- CPUQuota=50%
- # 限制内存使用
- MemoryLimit=512M
- # 限制进程数
- TasksMax=100
复制代码
通过设置服务运行的用户和权限,可以提高安全性:
- [Service]
- ...
- # 以非特权用户运行
- User=myuser
- Group=mygroup
- # 限制文件系统访问
- ReadWritePaths=/var/log/myapp
- ReadOnlyPaths=/usr/share/myapp
- # 禁止特权操作
- NoNewPrivileges=true
- PrivateTmp=true
- ProtectSystem=strict
复制代码
可以通过环境变量配置服务的行为:
- [Service]
- ...
- Environment="DEBUG=false"
- Environment="DB_HOST=localhost"
- Environment="DB_PORT=5432"
- EnvironmentFile=/etc/myapp/environment
复制代码
正确设置服务之间的依赖关系可以确保系统启动的顺序正确:
- [Unit]
- Description=My Application
- After=network.target postgresql.service
- Requires=postgresql.service
复制代码
网络服务配置
网络服务是CentOS Stream服务器的重要组成部分,包括网络接口配置、防火墙设置和各种网络服务(如SSH、NTP、DHCP、DNS等)的配置。
网络基础设置
CentOS Stream使用NetworkManager进行网络管理。以下是一些基本的网络配置命令:
- # 查看网络连接
- nmcli connection show
- # 查看网络设备状态
- nmcli device status
- # 创建新的网络连接
- nmcli connection add type ethernet ifname eth0 con-name eth0
- # 配置静态IP
- nmcli connection modify eth0 ipv4.addresses 192.168.1.100/24
- nmcli connection modify eth0 ipv4.gateway 192.168.1.1
- nmcli connection modify eth0 ipv4.dns 8.8.8.8
- nmcli connection modify eth0 ipv4.method manual
- # 配置DHCP
- nmcli connection modify eth0 ipv4.method auto
- # 激活连接
- nmcli connection up eth0
- # 禁用连接
- nmcli connection down eth0
- # 删除连接
- nmcli connection delete eth0
复制代码
防火墙配置
CentOS Stream使用firewalld作为默认的防火墙管理工具。以下是一些基本的防火墙配置命令:
- # 检查firewalld状态
- sudo systemctl status firewalld
- # 启动firewalld并设置开机自启
- sudo systemctl start firewalld
- sudo systemctl enable firewalld
- # 查看当前防火墙规则
- sudo firewall-cmd --list-all
- # 开放端口
- sudo firewall-cmd --permanent --add-port=80/tcp
- sudo firewall-cmd --permanent --add-port=443/tcp
- # 开放服务
- sudo firewall-cmd --permanent --add-service=http
- sudo firewall-cmd --permanent --add-service=https
- # 创建自定义服务
- sudo nano /etc/firewalld/services/myapp.xml
复制代码
在myapp.xml中添加以下内容:
- <?xml version="1.0" encoding="utf-8"?>
- <service>
- <short>My App</short>
- <description>My Application Service</description>
- <port protocol="tcp" port="8080"/>
- <port protocol="tcp" port="8443"/>
- </service>
复制代码
然后加载并应用自定义服务:
- sudo firewall-cmd --permanent --add-service=myapp
- sudo firewall-cmd --reload
复制代码
常用网络服务配置
SSH(Secure Shell)是远程管理Linux服务器的标准工具。以下是SSH服务的配置和优化方法:
- # 安装SSH服务
- sudo dnf install openssh-server -y
- # 启动SSH服务并设置开机自启
- sudo systemctl start sshd
- sudo systemctl enable sshd
- # 查看SSH服务状态
- sudo systemctl status sshd
- # 配置SSH
- sudo nano /etc/ssh/sshd_config
复制代码
在sshd_config中可以进行以下安全配置:
- # 更改默认端口
- Port 2222
- # 禁用root登录
- PermitRootLogin no
- # 仅允许特定用户登录
- AllowUsers user1 user2
- # 禁用密码认证,仅允许密钥认证
- PasswordAuthentication no
- PubkeyAuthentication yes
- # 设置登录超时
- LoginGraceTime 60
- # 最大尝试次数
- MaxAuthTries 3
复制代码
配置完成后,重启SSH服务:
- sudo systemctl restart sshd
复制代码
NTP(Network Time Protocol)用于同步系统时间,确保服务器时间的准确性:
- # 安装NTP服务
- sudo dnf install chrony -y
- # 启动NTP服务并设置开机自启
- sudo systemctl start chronyd
- sudo systemctl enable chronyd
- # 查看NTP服务状态
- sudo systemctl status chronyd
- # 查看时间同步状态
- chronyc tracking
- # 查看时间源
- chronyc sources -v
- # 配置NTP服务器
- sudo nano /etc/chrony.conf
复制代码
在chrony.conf中可以添加或修改NTP服务器:
- # 使用默认的NTP服务器池
- pool 2.centos.pool.ntp.org iburst
- # 添加特定的NTP服务器
- server ntp1.example.com iburst
- server ntp2.example.com iburst
- # 允许特定网络同步时间
- allow 192.168.1.0/24
复制代码
配置完成后,重启NTP服务:
- sudo systemctl restart chronyd
复制代码
DHCP(Dynamic Host Configuration Protocol)用于自动分配IP地址和其他网络配置:
- # 安装DHCP服务
- sudo dnf install dhcp-server -y
- # 配置DHCP服务
- sudo nano /etc/dhcp/dhcpd.conf
复制代码
在dhcpd.conf中添加以下内容:
- # 设置DNS域名
- option domain-name "example.com";
- # 设置DNS服务器
- option domain-name-servers 8.8.8.8, 8.8.4.4;
- # 设置默认租约时间
- default-lease-time 600;
- # 设置最大租约时间
- max-lease-time 7200;
- # 设置DHCP服务器为权威服务器
- authoritative;
- # 定义子网
- subnet 192.168.1.0 netmask 255.255.255.0 {
- range 192.168.1.100 192.168.1.200;
- option routers 192.168.1.1;
- option broadcast-address 192.168.1.255;
-
- # 固定IP地址分配
- host server1 {
- hardware ethernet 00:0c:29:aa:bb:cc;
- fixed-address 192.168.1.10;
- }
- }
复制代码
配置完成后,启动DHCP服务并设置开机自启:
- sudo systemctl start dhcpd
- sudo systemctl enable dhcpd
复制代码
DNS(Domain Name System)用于将域名解析为IP地址。以下是使用BIND配置DNS服务器的步骤:
- # 安装BIND
- sudo dnf install bind bind-utils -y
- # 配置BIND
- sudo nano /etc/named.conf
复制代码
在named.conf中进行基本配置:
- options {
- listen-on port 53 { 127.0.0.1; 192.168.1.100; };
- listen-on-v6 port 53 { ::1; };
- directory "/var/named";
- dump-file "/var/named/data/cache_dump.db";
- statistics-file "/var/named/data/named_stats.txt";
- memstatistics-file "/var/named/data/named_mem_stats.txt";
- secroots-file "/var/named/data/named.secroots";
- recursing-file "/var/named/data/named.recursing";
- allow-query { localhost; 192.168.1.0/24; };
-
- /*
- - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- - If you are building a RECURSIVE (caching) DNS server, you need to enable
- recursion.
- - If your recursive DNS server has a public IP address, you MUST enable access
- control to limit queries to your legitimate users. Failing to do so will
- cause your server to become part of large scale DNS amplification
- attacks. Implementing BCP38 within your network would greatly
- reduce such attack surface
- */
- recursion yes;
-
- dnssec-enable yes;
- dnssec-validation yes;
-
- managed-keys-directory "/var/named/dynamic";
-
- pid-file "/run/named/named.pid";
- session-keyfile "/run/named/session.key";
-
- /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
- include "/etc/crypto-policies/back-ends/bind.config";
- };
- logging {
- channel default_debug {
- file "data/named.run";
- severity dynamic;
- };
- };
- zone "." IN {
- type hint;
- file "named.ca";
- };
- include "/etc/named.rfc1912.zones";
- include "/etc/named.root.key";
复制代码
创建正向解析区域文件:
- sudo nano /var/named/example.com.zone
复制代码
在example.com.zone中添加以下内容:
- $TTL 86400
- @ IN SOA ns1.example.com. admin.example.com. (
- 2023040101 ; Serial
- 3600 ; Refresh
- 1800 ; Retry
- 604800 ; Expire
- 86400 ; Minimum TTL
- )
- @ IN NS ns1.example.com.
- @ IN A 192.168.1.100
- ns1 IN A 192.168.1.100
- www IN A 192.168.1.101
- mail IN A 192.168.1.102
复制代码
创建反向解析区域文件:
- sudo nano /var/named/1.168.192.in-addr.arpa.zone
复制代码
在1.168.192.in-addr.arpa.zone中添加以下内容:
- $TTL 86400
- @ IN SOA ns1.example.com. admin.example.com. (
- 2023040101 ; Serial
- 3600 ; Refresh
- 1800 ; Retry
- 604800 ; Expire
- 86400 ; Minimum TTL
- )
- @ IN NS ns1.example.com.
- 100 IN PTR ns1.example.com.
- 101 IN PTR www.example.com.
- 102 IN PTR mail.example.com.
复制代码
设置文件权限并启动DNS服务:
- sudo chown -R named:named /var/named/
- sudo chmod 640 /var/named/example.com.zone /var/named/1.168.192.in-addr.arpa.zone
- sudo systemctl start named
- sudo systemctl enable named
复制代码
网络服务优化
通过调整内核参数,可以优化网络性能:
- # 创建自定义sysctl配置文件
- sudo nano /etc/sysctl.d/99-network.conf
复制代码
在99-network.conf中添加以下内容:
- # 增加TCP最大缓冲区大小
- net.core.rmem_max = 16777216
- net.core.wmem_max = 16777216
- # 增加TCP默认缓冲区大小
- net.ipv4.tcp_rmem = 4096 87380 16777216
- net.ipv4.tcp_wmem = 4096 65536 16777216
- # 启用TCP窗口缩放
- net.ipv4.tcp_window_scaling = 1
- # 启用TCP快速打开
- net.ipv4.tcp_fastopen = 3
- # 启用BBR拥塞控制算法
- net.core.default_qdisc = fq
- net.ipv4.tcp_congestion_control = bbr
- # 增加最大连接数
- net.core.somaxconn = 65535
- # 减少TIME_WAIT连接数
- net.ipv4.tcp_max_tw_buckets = 1440000
- net.ipv4.tcp_tw_reuse = 1
复制代码
应用配置:
- sudo sysctl -p /etc/sysctl.d/99-network.conf
复制代码
优化网络接口设置可以提高网络性能:
- # 查看当前网络接口设置
- ethtool eth0
- # 启用GRO(Generic Receive Offload)
- sudo ethtool -K eth0 gro on
- # 启用TSO(TCP Segmentation Offload)
- sudo ethtool -K eth0 tso on
- # 启用LRO(Large Receive Offload)
- sudo ethtool -K eth0 lro on
- # 启用SG(Scatter-Gather)
- sudo ethtool -K eth0 sg on
- # 设置网络接口队列数
- sudo ethtool -L eth0 combined 4
复制代码
要使这些设置永久生效,可以创建NetworkManager配置文件:
- sudo nano /etc/NetworkManager/conf.d/99-ethtool.conf
复制代码
在99-ethtool.conf中添加以下内容:
- [connection]
- ethernet.ethtool-features-gro=true
- ethernet.ethtool-features-tso=true
- ethernet.ethtool-features-lro=true
- ethernet.ethtool-features-sg=true
复制代码
重启NetworkManager:
- sudo systemctl restart NetworkManager
复制代码
安全服务配置
安全是服务器管理的重要方面。CentOS Stream提供了多种安全工具和服务,包括SELinux、安全审计和访问控制等。
SELinux配置
SELinux(Security-Enhanced Linux)是Linux内核的一个安全模块,提供了强制访问控制(MAC)功能。
- # 检查SELinux状态
- sestatus
- # 临时禁用SELinux
- sudo setenforce 0
- # 临时启用SELinux
- sudo setenforce 1
- # 永久禁用SELinux(不推荐)
- sudo nano /etc/selinux/config
复制代码
在config文件中修改:
- # 查看当前SELinux策略
- sestatus -b
- # 查看文件的安全上下文
- ls -Z /path/to/file
- # 修改文件的安全上下文
- sudo chcon -t httpd_sys_content_t /var/www/html/index.html
- # 恢复文件的默认安全上下文
- sudo restorecon -v /var/www/html/index.html
- # 查看端口的安全上下文
- semanage port -l
- # 添加新的端口安全上下文
- sudo semanage port -a -t http_port_t -p tcp 8080
- # 查看布尔值
- getsebool -a
- # 设置布尔值
- sudo setsebool -P httpd_can_network_connect on
复制代码
当SELinux阻止服务正常运行时,可以按照以下步骤进行故障排除:
- # 查看SELinux拒绝日志
- sudo grep AVC /var/log/audit/audit.log
- # 或者使用ausearch工具
- sudo ausearch -m AVC -ts recent
- # 安装SELinux故障排除工具
- sudo dnf install setroubleshoot -y
- # 使用sealert分析日志
- sudo sealert -a /var/log/audit/audit.log
- # 生成SELinux策略模块
- sudo grep httpd /var/log/audit/audit.log | audit2allow -m myhttpd
- sudo grep httpd /var/log/audit/audit.log | audit2allow -M myhttpd
- sudo semodule -i myhttpd.pp
复制代码
安全审计
Linux审计系统(auditd)提供了强大的安全审计功能,可以记录系统上的安全相关事件。
- # 安装审计系统
- sudo dnf install audit -y
- # 启动审计服务并设置开机自启
- sudo systemctl start auditd
- sudo systemctl enable auditd
- # 查看审计服务状态
- sudo systemctl status auditd
- # 配置审计规则
- sudo nano /etc/audit/rules.d/audit.rules
复制代码
在audit.rules中添加以下内容:
- # 删除所有规则
- -D
- # 设置缓冲区大小
- -b 8192
- # 设置失败模式
- -f 1
- # 记录文件删除
- -a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F exit=-EACCES -F key=access
- -a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F exit=-EPERM -F key=access
- # 记录文件权限修改
- -a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=-1 -F key=perm_mod
- -a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=-1 -F key=perm_mod
- # 记录用户登录
- -w /var/log/lastlog -p wa -k logins
- -w /var/run/faillock -p wa -k logins
- # 记录sudo使用
- -w /var/log/sudo.log -p wa -k sudo_actions
- # 记录系统时间修改
- -a always,exit -F arch=b64 -S adjtimex -S settimeofday -S stime -S clock_settime -k time_change
- # 记录网络配置修改
- -w /etc/hosts -p wa -k network_modifications
- -w /etc/sysconfig/network -p wa -k network_modifications
- # 确保规则被加载
- -e 1
复制代码
加载审计规则:
- # 查看审计日志
- sudo ausearch -i -m USER_LOGIN
- # 查看特定时间的审计日志
- sudo ausearch -i -ts yesterday
- # 查看特定用户的审计日志
- sudo ausearch -i -ua username
- # 生成审计报告
- sudo aureport -x -i
- # 查看文件访问日志
- sudo ausearch -i -f /etc/passwd
复制代码
访问控制
除了SELinux外,还可以使用其他访问控制机制来增强系统安全性。
PAM提供了灵活的身份验证机制,可以配置各种认证策略。
- # 查看PAM配置
- ls /etc/pam.d/
- # 配置密码策略
- sudo nano /etc/security/pwquality.conf
复制代码
在pwquality.conf中添加以下内容:
- minlen = 12
- minclass = 3
- dcredit = -1
- ucredit = -1
- lcredit = -1
- ocredit = -1
- maxrepeat = 3
- gecoscheck = 1
- dictcheck = 1
- enforce_for_root
复制代码
配置登录尝试限制:
- sudo nano /etc/pam.d/system-auth
复制代码
在system-auth中添加以下内容:
- auth required pam_tally2.so deny=5 unlock_time=900 onerr=fail
- account required pam_tally2.so
复制代码
查看登录失败次数:
- sudo pam_tally2 -u username
复制代码
解锁用户账户:
- sudo pam_tally2 -u username -r
复制代码
TCP Wrappers提供了一种基于主机的访问控制机制。
- # 配置允许访问的主机
- sudo nano /etc/hosts.allow
复制代码
在hosts.allow中添加以下内容:
- sshd: 192.168.1.0/24, 10.0.0.1
- vsftpd: 192.168.1.100
复制代码- # 配置拒绝访问的主机
- sudo nano /etc/hosts.deny
复制代码
在hosts.deny中添加以下内容:
安全加固
保持系统更新是安全的基本要求:
- # 检查可用更新
- sudo dnf check-update
- # 安装所有更新
- sudo dnf update -y
- # 安装安全更新
- sudo dnf update --security
- # 自动安装安全更新
- sudo dnf install dnf-automatic -y
- sudo systemctl enable --now dnf-automatic.timer
复制代码- # 禁用不必要的服务账户
- sudo usermod -L username
- sudo usermod -s /sbin/nologin username
- # 设置密码过期策略
- sudo chage -M 90 username
- # 查看密码过期信息
- sudo chage -l username
- # 禁用空密码账户
- sudo sed -i 's/^nullok//' /etc/pam.d/system-auth
- # 限制root用户SSH登录
- sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config
- sudo systemctl restart sshd
复制代码- # 查找SUID/SGID文件
- sudo find / -type f \( -perm -4000 -o -perm -2000 \) -ls
- # 查找全局可写文件
- sudo find / -type f -perm -o+w -ls
- # 查找无主文件
- sudo find / -nouser -o -nogroup -ls
- # 设置umask
- echo "umask 027" >> /etc/profile
- echo "umask 027" >> /etc/bashrc
复制代码- # 禁用不必要的服务
- sudo systemctl stop telnet.socket
- sudo systemctl disable telnet.socket
- sudo systemctl stop rsh.socket
- sudo systemctl disable rsh.socket
- # 查看开放端口
- sudo ss -tulpn
- # 使用lynis进行安全扫描
- sudo dnf install lynis -y
- sudo lynis audit system
复制代码
服务监控与故障排除
监控服务状态并及时排除故障是系统管理的重要任务。
服务监控
- # 查看服务状态
- sudo systemctl status service_name
- # 查看服务资源使用情况
- systemd-cgtop
- # 查看服务日志
- journalctl -u service_name
- # 实时查看服务日志
- journalctl -fu service_name
- # 查看服务启动时间
- systemd-analyze blame
复制代码- # 安装htop
- sudo dnf install htop -y
- # 使用htop监控系统资源
- htop
- # 安装nmon
- sudo dnf install nmon -y
- # 使用nmon监控系统资源
- nmon
- # 安装glances
- sudo dnf install glances -y
- # 使用glances监控系统资源
- glances
复制代码- # 安装goaccess
- sudo dnf install goaccess -y
- # 分析Apache/Nginx访问日志
- goaccess /var/log/httpd/access_log -c
- # 实时分析Apache/Nginx访问日志
- goaccess /var/log/httpd/access_log -c --real-time-html
复制代码
故障排除
- # 查看服务状态
- sudo systemctl status service_name
- # 查看服务日志
- journalctl -u service_name -n 100
- # 查看系统日志
- sudo tail -n 100 /var/log/messages
- # 检查配置文件语法
- sudo httpd -t
- sudo nginx -t
- sudo named-checkconf
复制代码- # 检查网络连接
- ping -c 4 google.com
- # 检查路由
- traceroute google.com
- # 检查DNS解析
- nslookup google.com
- dig google.com
- # 检查端口监听
- sudo ss -tulpn | grep :80
- # 检查防火墙规则
- sudo firewall-cmd --list-all
- # 检查SELinux状态
- sestatus
- # 检查SELinux拒绝日志
- sudo grep AVC /var/log/audit/audit.log | tail -n 10
复制代码- # 查看CPU使用率
- top -c
- # 查看内存使用情况
- free -h
- # 查看磁盘使用情况
- df -h
- # 查看磁盘I/O
- iostat -xz 1
- # 查看网络I/O
- sar -n DEV 1
- # 查看系统负载
- uptime
- # 查看进程资源使用情况
- ps aux --sort=-%cpu | head -n 10
- ps aux --sort=-%mem | head -n 10
复制代码
最佳实践与高级技巧
1. 自动化服务管理
使用Ansible等自动化工具可以简化服务管理:
- # 安装Ansible
- sudo dnf install ansible -y
- # 创建Ansible playbook
- mkdir ~/ansible
- nano ~/ansible/service_management.yml
复制代码
在service_management.yml中添加以下内容:
- ---
- - hosts: all
- become: yes
- tasks:
- - name: Install and start Apache
- dnf:
- name: httpd
- state: present
- notify:
- - Start Apache
-
- - name: Configure firewall for Apache
- firewalld:
- service: http
- permanent: yes
- state: enabled
- immediate: yes
-
- - name: Create website directory
- file:
- path: /var/www/html/mywebsite
- state: directory
- mode: '0755'
-
- - name: Deploy website files
- copy:
- src: files/index.html
- dest: /var/www/html/mywebsite/index.html
-
- handlers:
- - name: Start Apache
- systemd:
- name: httpd
- state: started
- enabled: yes
复制代码
运行Ansible playbook:
- ansible-playbook -i inventory service_management.yml
复制代码
2. 容器化服务
使用Podman可以轻松容器化服务:
- # 安装Podman
- sudo dnf install podman -y
- # 创建一个简单的Web服务容器
- podman run -d --name myweb -p 8080:80 nginx:latest
- # 查看容器状态
- podman ps
- # 查看容器日志
- podman logs myweb
- # 停止容器
- podman stop myweb
- # 启动容器
- podman start myweb
- # 创建自定义容器镜像
- mkdir ~/myweb
- cd ~/myweb
- echo '<h1>Hello from my custom web server</h1>' > index.html
- # 创建Dockerfile
- nano Dockerfile
复制代码
在Dockerfile中添加以下内容:
- FROM nginx:latest
- COPY index.html /usr/share/nginx/html/index.html
- EXPOSE 80
- CMD ["nginx", "-g", "daemon off;"]
复制代码
构建并运行自定义容器:
- podman build -t myweb:latest .
- podman run -d --name myweb-custom -p 8081:80 myweb:latest
复制代码
3. 高可用性服务
使用Pacemaker和Corosync可以配置高可用性服务:
- # 安装高可用性软件包
- sudo dnf install pcs pacemaker corosync fence-agents-all -y
- # 设置hacluster用户密码
- sudo passwd hacluster
- # 启动pcsd服务
- sudo systemctl start pcsd
- sudo systemctl enable pcsd
- # 认证节点(在所有节点上执行)
- sudo pcs host auth node1 node2 -u hacluster
- # 创建集群
- sudo pcs cluster setup mycluster node1 node2
- sudo pcs cluster start --all
- sudo pcs cluster enable --all
- # 查看集群状态
- sudo pcs status
- # 配置STONITH
- sudo pcs property set stonith-enabled=false
- # 配置资源
- sudo pcs resource create VirtualIP IPaddr2 ip=192.168.1.200 cidr_netmask=24 op monitor interval=30s
- sudo pcs resource create WebServer systemd:httpd op monitor interval=30s
- # 设置资源约束
- sudo pcs constraint colocation add WebServer with VirtualIP INFINITY
- sudo pcs constraint order VirtualIP then WebServer
- # 查看资源状态
- sudo pcs resource show
复制代码
4. 服务性能优化
使用tuned可以轻松优化系统性能:
- # 安装tuned
- sudo dnf install tuned -y
- # 启动tuned服务
- sudo systemctl start tuned
- sudo systemctl enable tuned
- # 查看可用的配置文件
- sudo tuned-adm list
- # 应用性能优化配置文件
- sudo tuned-adm profile throughput-performance
- # 查看当前配置文件
- sudo tuned-adm active
复制代码
以Apache HTTP服务器为例:
- # 安装Apache
- sudo dnf install httpd -y
- # 配置MPM(多处理模块)
- sudo nano /etc/httpd/conf.modules.d/00-mpm.conf
复制代码
在00-mpm.conf中启用事件MPM:
- LoadModule mpm_event_module modules/mod_mpm_event.so
- #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
- #LoadModule mpm_worker_module modules/mod_mpm_worker.so
复制代码
配置Apache性能参数:
- sudo nano /etc/httpd/conf/httpd.conf
复制代码
在httpd.conf中添加或修改以下内容:
- <IfModule mpm_event_module>
- StartServers 4
- MinSpareThreads 75
- MaxSpareThreads 250
- ThreadsPerChild 25
- MaxRequestWorkers 400
- MaxConnectionsPerChild 10000
- </IfModule>
- # 启用KeepAlive
- KeepAlive On
- MaxKeepAliveRequests 100
- KeepAliveTimeout 5
- # 启用压缩
- AddOutputFilterByType DEFLATE text/plain
- AddOutputFilterByType DEFLATE text/html
- AddOutputFilterByType DEFLATE text/xml
- AddOutputFilterByType DEFLATE text/css
- AddOutputFilterByType DEFLATE application/xml
- AddOutputFilterByType DEFLATE application/xhtml+xml
- AddOutputFilterByType DEFLATE application/rss+xml
- AddOutputFilterByType DEFLATE application/javascript
- AddOutputFilterByType DEFLATE application/x-javascript
- # 启用缓存
- LoadModule cache_module modules/mod_cache.so
- LoadModule cache_disk_module modules/mod_cache_disk.so
- <IfModule mod_cache_disk.c>
- CacheRoot /var/cache/httpd/
- CacheEnable disk /
- CacheDirLevels 2
- CacheDirLength 1
- </IfModule>
复制代码
重启Apache服务:
- sudo systemctl restart httpd
复制代码
总结
本文全面介绍了CentOS Stream中系统服务、网络服务和安全服务的配置与管理方法,从基础入门到高级技巧,涵盖了服务管理的各个方面。通过本文的学习,读者应该能够:
1. 理解CentOS Stream的基本特点和优势
2. 掌握systemd服务管理的基本命令和技巧
3. 能够创建和优化自定义系统服务
4. 熟练配置网络基础设置、防火墙和常用网络服务
5. 掌握SELinux、安全审计和访问控制等安全服务的配置方法
6. 能够监控服务状态并进行故障排除
7. 了解服务管理的最佳实践和高级技巧
随着技术的不断发展,服务管理的方法和工具也在不断演进。作为系统管理员,我们需要持续学习和实践,不断优化服务配置,提高系统的稳定性、安全性和性能。希望本文能够成为读者在CentOS Stream服务配置和管理道路上的有力参考。 |
|