活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

零基础学习CentOS云服务配置从入门到精通的实用教程指南帮助新手快速掌握Linux服务器部署与管理技巧

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-17 12:50:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

CentOS作为企业级Linux发行版,以其稳定性、安全性和免费特性成为云服务器的首选操作系统之一。对于零基础的学习者来说,掌握CentOS云服务配置不仅能提升个人技能,还能为职业发展开辟新的道路。本教程将带领你从零开始,逐步学习CentOS云服务器的配置与管理,帮助你快速掌握Linux服务器部署与管理的核心技巧。

无论你是开发者、系统管理员还是IT爱好者,本教程都能为你提供清晰、实用的指导,让你能够独立搭建和维护自己的云服务器。

准备工作

必备知识

在开始学习CentOS云服务配置之前,你需要了解一些基础知识:

1. 基本计算机概念:了解操作系统、网络、IP地址、域名等基本概念。
2. 命令行基础:虽然本教程会从零开始讲解,但提前了解命令行的基本操作会更有帮助。
3. 英语基础:Linux命令和错误信息通常是英文的,基本的英语阅读能力会有所帮助。

必备工具

1. 电脑:任何可以运行SSH客户端的电脑(Windows、Mac或Linux均可)。
2. SSH客户端:Windows用户:可以使用PuTTY、Windows Terminal或WSLMac/Linux用户:可以使用内置的终端
3. Windows用户:可以使用PuTTY、Windows Terminal或WSL
4. Mac/Linux用户:可以使用内置的终端
5. 云服务器账户:可以选择阿里云、腾讯云、AWS、DigitalOcean等云服务提供商

• Windows用户:可以使用PuTTY、Windows Terminal或WSL
• Mac/Linux用户:可以使用内置的终端

学习资源

1. 官方文档:CentOS官方文档(https://docs.centos.org/)
2. 在线教程:Linux Foundation、edX等平台的免费课程
3. 社区支持:Stack Overflow、Reddit的r/linuxquestions等社区

CentOS基础

Linux基本概念

Linux是一种开源的类Unix操作系统,由Linus Torvalds于1991年首次发布。CentOS(Community Enterprise Operating System)是基于Red Hat Enterprise Linux(RHEL)源代码构建的免费企业级操作系统,它提供了与RHEL几乎相同的功能和稳定性,但不需要付费订阅。

文件系统结构

Linux文件系统采用层次结构,主要目录包括:

• /:根目录,所有文件的起点
• /bin:基本命令的二进制文件
• /boot:启动加载文件
• /dev:设备文件
• /etc:系统配置文件
• /home:用户主目录
• /lib:系统库文件
• /opt:可选软件包
• /root:root用户的主目录
• /sbin:系统管理员使用的二进制文件
• /tmp:临时文件
• /usr:用户程序
• /var:变量数据文件

基本命令

以下是一些基本的Linux命令,这些命令是你日常管理CentOS服务器的基础:
  1. # 列出当前目录的内容
  2. ls
  3. # 列出详细信息,包括权限、所有者、大小和修改时间
  4. ls -la
  5. # 切换到指定目录
  6. cd /path/to/directory
  7. # 返回上一级目录
  8. cd ..
  9. # 返回用户主目录
  10. cd ~
  11. # 创建新目录
  12. mkdir new_directory
  13. # 创建多级目录
  14. mkdir -p parent_directory/child_directory
  15. # 创建新文件
  16. touch new_file.txt
  17. # 复制文件
  18. cp source_file destination_file
  19. # 复制目录
  20. cp -r source_directory destination_directory
  21. # 移动/重命名文件或目录
  22. mv old_name new_name
  23. # 删除文件
  24. rm file_name
  25. # 删除目录及其内容
  26. rm -r directory_name
  27. # 强制删除(不提示确认)
  28. rm -rf directory_name
复制代码
  1. # 查看文件内容
  2. cat file_name
  3. # 分页查看文件内容(空格翻页,q退出)
  4. less file_name
  5. # 查看文件开头部分
  6. head file_name
  7. # 查看文件结尾部分
  8. tail file_name
  9. # 实时查看文件更新(常用于查看日志)
  10. tail -f file_name
  11. # 使用vi编辑器打开文件
  12. vi file_name
  13. # 使用nano编辑器打开文件(对新手更友好)
  14. nano file_name
复制代码
  1. # 显示系统信息
  2. uname -a
  3. # 显示磁盘使用情况
  4. df -h
  5. # 显示内存使用情况
  6. free -h
  7. # 显示当前运行的进程
  8. ps aux
  9. # 实时显示系统进程和资源使用情况
  10. top
  11. # 关闭系统
  12. shutdown -h now
  13. # 重启系统
  14. reboot
复制代码
  1. # 修改文件权限
  2. chmod 755 file_name
  3. # 修改文件所有者
  4. chown user:group file_name
  5. # 以超级用户权限执行命令
  6. sudo command
复制代码

云服务器选购与连接

选择云服务提供商

市面上有许多云服务提供商可供选择,以下是一些主流选项:

1. 阿里云:国内市场份额最大,适合中国大陆用户
2. 腾讯云:国内第二大云服务商,性价比高
3. 华为云:技术实力强,适合企业用户
4. AWS(Amazon Web Services):全球最大云服务商,功能全面
5. Google Cloud:Google推出的云服务,数据分析能力强
6. DigitalOcean:简单易用,适合开发者和中小企业
7. Vultr:按小时计费,全球节点多

对于初学者,建议选择阿里云、腾讯云或DigitalOcean,它们提供简单易用的界面和相对低廉的价格。

创建云服务器实例

以阿里云为例,创建CentOS服务器的步骤如下:

1. 注册并登录阿里云账号
2. 进入ECS(弹性计算服务)控制台
3. 点击”创建实例”
4. 选择计费方式(包年包月或按量付费)
5. 选择地域和可用区(建议选择离你最近的地域)
6. 选择实例规格(初学者可以选择入门级配置,如1核2G)
7. 选择镜像(操作系统)- 选择CentOS(如CentOS 7.9或CentOS 8.4)
8. 选择存储(系统盘大小,默认40GB足够初学者使用)
9. 设置网络(带宽计费模式、带宽大小)
10. 设置安全组(开放必要的端口,如22端口用于SSH连接)
11. 设置登录凭证(密码或密钥对)
12. 确认订单并支付

连接到云服务器

创建服务器实例后,你需要通过SSH连接到服务器。以下是不同操作系统的连接方法:

使用PuTTY连接:

1. 下载并安装PuTTY(https://www.putty.org/)
2. 打开PuTTY
3. 在”Host Name (or IP address)“字段输入服务器的公网IP
4. 端口保持默认的22
5. 点击”Open”按钮
6. 在弹出的窗口中输入用户名(通常是”root”)和密码

使用Windows Terminal或PowerShell连接:

1. 打开Windows Terminal或PowerShell
2. 输入以下命令:ssh root@your_server_ip
3. 按提示输入密码
  1. ssh root@your_server_ip
复制代码

1. 打开终端
2. 输入以下命令:ssh root@your_server_ip
3. 按提示输入密码
  1. ssh root@your_server_ip
复制代码

如果你在创建服务器时选择了密钥对认证,连接方式如下:

1. 确保你的私钥文件(通常是.pem格式)在本地
2. 设置私钥文件的正确权限(Linux/Mac):chmod 400 your_private_key.pem
3. 使用以下命令连接:ssh -i your_private_key.pem root@your_server_ip
  1. chmod 400 your_private_key.pem
复制代码
  1. ssh -i your_private_key.pem root@your_server_ip
复制代码

系统初始化配置

首次连接到CentOS云服务器后,需要进行一些基本配置,以确保服务器的安全性和可用性。

更新系统

首先,更新系统软件包到最新版本:
  1. # 检查可用的更新
  2. yum check-update
  3. # 更新所有软件包
  4. yum update -y
复制代码

设置主机名

设置一个易于识别的主机名:
  1. # 查看当前主机名
  2. hostname
  3. # 设置新的主机名(例如:webserver-01)
  4. hostnamectl set-hostname webserver-01
  5. # 重新登录以查看更改
  6. exit
  7. # 然后重新连接服务器
复制代码

配置时区

设置正确的时区:
  1. # 查看当前时区
  2. timedatectl
  3. # 列出所有可用时区
  4. timedatectl list-timezones
  5. # 设置时区(例如:Asia/Shanghai)
  6. timedatectl set-timezone Asia/Shanghai
  7. # 验证更改
  8. timedatectl
复制代码

创建新用户

出于安全考虑,不建议直接使用root用户进行日常操作。创建一个新用户并赋予sudo权限:
  1. # 创建新用户(例如:admin)
  2. adduser admin
  3. # 为新用户设置密码
  4. passwd admin
  5. # 将新用户添加到wheel组(wheel组用户可以使用sudo)
  6. usermod -aG wheel admin
  7. # 切换到新用户
  8. su - admin
  9. # 测试sudo权限
  10. sudo whoami
  11. # 如果输出"root",说明sudo权限配置成功
复制代码

禁用root登录

为了提高安全性,可以禁用root用户的SSH登录:
  1. # 编辑SSH配置文件
  2. sudo vi /etc/ssh/sshd_config
  3. # 找到以下行并将其修改为:
  4. PermitRootLogin no
  5. # 保存并退出(在vi中,按Esc,然后输入:wq并按Enter)
  6. # 重启SSH服务
  7. sudo systemctl restart sshd
复制代码

配置防火墙

CentOS 7及以后版本使用firewalld作为防火墙管理工具:
  1. # 检查firewalld状态
  2. sudo firewall-cmd --state
  3. # 启动firewalld(如果未运行)
  4. sudo systemctl start firewalld
  5. # 设置firewalld开机自启
  6. sudo systemctl enable firewalld
  7. # 查看已开放的端口
  8. sudo firewall-cmd --list-ports
  9. # 开放HTTP端口(80)
  10. sudo firewall-cmd --permanent --add-port=80/tcp
  11. # 开放HTTPS端口(443)
  12. sudo firewall-cmd --permanent --add-port=443/tcp
  13. # 重新加载防火墙配置
  14. sudo firewall-cmd --reload
  15. # 验证端口是否已开放
  16. sudo firewall-cmd --list-ports
复制代码

用户和权限管理

用户管理

在Linux系统中,用户管理是系统管理的重要部分。以下是一些常用的用户管理命令:
  1. # 创建新用户
  2. sudo adduser username
  3. # 设置用户密码
  4. sudo passwd username
  5. # 删除用户(保留用户主目录)
  6. sudo userdel username
  7. # 删除用户及其主目录
  8. sudo userdel -r username
  9. # 修改用户信息
  10. sudo usermod -c "New Comment" username
  11. # 修改用户主目录
  12. sudo usermod -d /new/home/dir username
  13. # 锁定用户账户
  14. sudo usermod -L username
  15. # 解锁用户账户
  16. sudo usermod -U username
  17. # 查看用户信息
  18. id username
  19. # 查看当前登录用户
  20. whoami
  21. # 查看系统所有用户
  22. cat /etc/passwd | cut -d: -f1
复制代码

用户组管理

用户组是管理多个用户权限的有效方式:
  1. # 创建新组
  2. sudo groupadd groupname
  3. # 删除组
  4. sudo groupdel groupname
  5. # 将用户添加到组
  6. sudo usermod -aG groupname username
  7. # 从组中移除用户
  8. sudo gpasswd -d username groupname
  9. # 修改用户的主组
  10. sudo usermod -g groupname username
  11. # 查看用户所属的组
  12. groups username
  13. # 查看系统所有组
  14. cat /etc/group | cut -d: -f1
复制代码

文件权限管理

Linux使用权限位来控制对文件和目录的访问:
  1. # 查看文件权限
  2. ls -l filename
  3. # 解释权限输出:-rw-r--r--
  4. # 第一个字符表示文件类型(-表示普通文件,d表示目录)
  5. # 接下来9个字符分为三组,每组3个字符,分别表示所有者、组和其他用户的权限
  6. # r表示读权限,w表示写权限,x表示执行权限
  7. # 使用符号模式修改权限
  8. # u: 用户, g: 组, o: 其他, a: 所有
  9. # +: 添加权限, -: 移除权限, =: 设置权限
  10. # r: 读, w: 写, x: 执行
  11. # 为所有者添加执行权限
  12. chmod u+x filename
  13. # 为组和其他用户移除写权限
  14. chmod go-w filename
  15. # 为所有用户设置读权限
  16. chmod a=r filename
  17. # 使用数字模式修改权限
  18. # r=4, w=2, x=1
  19. # 755 = rwxr-xr-x
  20. chmod 755 filename
  21. # 递归修改目录及其内容的权限
  22. chmod -R 755 directory
  23. # 修改文件所有者
  24. chown username filename
  25. # 修改文件所属组
  26. chgrp groupname filename
  27. # 同时修改所有者和组
  28. chown username:groupname filename
  29. # 递归修改目录及其内容的所有者
  30. chown -R username directory
复制代码

特殊权限

Linux还有一些特殊权限位:
  1. # SUID (Set User ID) - 以文件所有者身份执行程序
  2. chmod u+s filename
  3. # 或使用数字模式 (4)
  4. chmod 4755 filename
  5. # SGID (Set Group ID) - 以文件所属组身份执行程序
  6. chmod g+s filename
  7. # 或使用数字模式 (2)
  8. chmod 2755 filename
  9. # Sticky Bit - 限制删除权限(仅适用于目录)
  10. chmod +t directory
  11. # 或使用数字模式 (1)
  12. chmod 1777 directory
复制代码

sudo权限管理

sudo允许普通用户以超级用户权限执行命令:
  1. # 查看当前用户的sudo权限
  2. sudo -l
  3. # 编辑sudoers文件(推荐使用visudo命令)
  4. sudo visudo
  5. # 在sudoers文件中添加以下行,允许用户无需密码执行所有命令
  6. username ALL=(ALL) NOPASSWD: ALL
  7. # 允许用户执行特定命令无需密码
  8. username ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart httpd
  9. # 允许组内用户执行所有命令
  10. %groupname ALL=(ALL) ALL
  11. # 查看sudo日志
  12. cat /var/log/secure | grep sudo
复制代码

网络配置

网络基本概念

在配置网络之前,了解一些基本概念很重要:

1. IP地址:网络中设备的唯一标识符
2. 子网掩码:确定IP地址的网络部分和主机部分
3. 网关:连接不同网络的设备
4. DNS:域名系统,将域名解析为IP地址
5. MAC地址:网络接口的硬件地址

查看网络配置
  1. # 查看网络接口信息
  2. ip addr show
  3. # 或使用旧命令
  4. ifconfig
  5. # 查看路由表
  6. ip route show
  7. # 或使用旧命令
  8. route -n
  9. # 查看网络连接
  10. netstat -tuln
  11. # 或使用新命令
  12. ss -tuln
  13. # 测试网络连通性
  14. ping google.com
  15. # 跟踪网络路径
  16. traceroute google.com
  17. # 查看DNS配置
  18. cat /etc/resolv.conf
复制代码

配置静态IP地址

在云服务器环境中,通常使用DHCP自动分配IP地址,但在某些情况下,你可能需要配置静态IP:
  1. # 编辑网络配置文件(以CentOS 7为例)
  2. sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
  3. # 修改或添加以下内容:
  4. TYPE=Ethernet
  5. BOOTPROTO=static
  6. DEFROUTE=yes
  7. PEERDNS=yes
  8. PEERROUTES=yes
  9. IPV4_FAILURE_FATAL=no
  10. IPV6INIT=yes
  11. IPV6_AUTOCONF=yes
  12. IPV6_DEFROUTE=yes
  13. IPV6_PEERDNS=yes
  14. IPV6_PEERROUTES=yes
  15. IPV6_FAILURE_FATAL=no
  16. NAME=eth0
  17. DEVICE=eth0
  18. ONBOOT=yes
  19. IPADDR=192.168.1.100
  20. NETMASK=255.255.255.0
  21. GATEWAY=192.168.1.1
  22. DNS1=8.8.8.8
  23. DNS2=8.8.4.4
  24. # 保存并退出
  25. # 重启网络服务
  26. sudo systemctl restart network
复制代码

在CentOS 8及以后版本,网络配置使用NetworkManager:
  1. # 显示网络连接
  2. nmcli connection show
  3. # 修改网络连接为静态IP
  4. sudo nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 8.8.4.4"
  5. # 启用连接
  6. sudo nmcli connection up eth0
复制代码

配置主机名和DNS
  1. # 设置主机名
  2. sudo hostnamectl set-hostname server.example.com
  3. # 编辑hosts文件
  4. sudo vi /etc/hosts
  5. # 添加以下内容:
  6. 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  7. ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  8. 192.168.1.100 server.example.com server
  9. # 保存并退出
  10. # 配置DNS
  11. sudo vi /etc/resolv.conf
  12. # 添加或修改以下内容:
  13. nameserver 8.8.8.8
  14. nameserver 8.8.4.4
  15. # 保存并退出
复制代码

防火墙高级配置

firewalld提供了区域(zone)和服务(service)的概念,可以更灵活地管理防火墙规则:
  1. # 查看所有可用区域
  2. sudo firewall-cmd --get-zones
  3. # 查看当前活动区域
  4. sudo firewall-cmd --get-active-zones
  5. # 查看特定区域的配置
  6. sudo firewall-cmd --zone=public --list-all
  7. # 查看所有预定义服务
  8. sudo firewall-cmd --get-services
  9. # 开放服务(例如HTTP)
  10. sudo firewall-cmd --permanent --add-service=http
  11. # 移除服务
  12. sudo firewall-cmd --permanent --remove-service=http
  13. # 开放端口范围
  14. sudo firewall-cmd --permanent --add-port=8000-9000/tcp
  15. # 添加富规则(更复杂的规则)
  16. sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
  17. # 拒绝特定IP的访问
  18. sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.5" reject'
  19. # 重新加载防火墙配置
  20. sudo firewall-cmd --reload
  21. # 保存当前防火墙规则(使其永久生效)
  22. sudo firewall-cmd --runtime-to-permanent
复制代码

网络故障排除
  1. # 检查网络接口状态
  2. ip link show
  3. # 检查网络接口统计信息
  4. ip -s link show
  5. # 检查路由表
  6. ip route show
  7. # 检查ARP缓存
  8. ip neigh show
  9. # 检查监听的端口
  10. ss -tuln
  11. # 检查网络连接
  12. ss -tunap
  13. # 检查系统日志中的网络错误
  14. sudo journalctl -u network
  15. sudo journalctl -u NetworkManager
  16. # 使用tcpdump抓包分析网络问题
  17. sudo tcpdump -i eth0 -n port 80
  18. # 使用mtr诊断网络路径问题
  19. mtr google.com
复制代码

软件安装与管理

包管理器介绍

CentOS使用YUM(Yellowdog Updater, Modified)作为包管理器,它基于RPM(Red Hat Package Manager)包格式。在CentOS 8及以后版本,引入了DNF(Dandified YUM)作为YUM的下一代版本,但保留了yum命令作为兼容性接口。

YUM/DNF基本使用
  1. # 搜索软件包
  2. yum search keyword
  3. # 查看软件包信息
  4. yum info package_name
  5. # 安装软件包
  6. yum install package_name
  7. # 安装多个软件包
  8. yum install package1 package2
  9. # 更新软件包
  10. yum update package_name
  11. # 更新所有软件包
  12. yum update
  13. # 删除软件包
  14. yum remove package_name
  15. # 删除软件包及其依赖
  16. yum autoremove package_name
  17. # 列出已安装的软件包
  18. yum list installed
  19. # 列出可用的软件包
  20. yum list available
  21. # 查看软件包提供了哪些文件
  22. yum provides file_name
  23. # 清理缓存
  24. yum clean all
  25. # 查看软件包历史
  26. yum history list
  27. # 撤销特定历史操作
  28. yum history undo ID
  29. # 查看软件包组
  30. yum groups list
  31. # 安装软件包组
  32. yum groups install "Group Name"
  33. # 查看仓库列表
  34. yum repolist
  35. # 添加仓库
  36. yum-config-manager --add-repo repository_url
  37. # 启用/禁用仓库
  38. yum-config-manager --enable repository_name
  39. yum-config-manager --disable repository_name
复制代码

EPEL仓库

EPEL(Extra Packages for Enterprise Linux)是由Fedora社区维护的,为RHEL及其衍生版(如CentOS)提供额外软件包的仓库:
  1. # 安装EPEL仓库
  2. yum install epel-release
  3. # 查看EPEL仓库中的软件包
  4. yum --disablerepo="*" --enablerepo="epel" list available
复制代码

编译安装软件

有时,你需要从源代码编译安装软件:
  1. # 安装编译工具
  2. yum groupinstall "Development Tools"
  3. # 安装必要的依赖库
  4. yum install dependency1 dependency2
  5. # 下载源代码
  6. wget https://example.com/source.tar.gz
  7. # 解压源代码
  8. tar -xzf source.tar.gz
  9. cd source_directory
  10. # 查看README和INSTALL文件获取安装说明
  11. cat README
  12. cat INSTALL
  13. # 配置编译选项
  14. ./configure --prefix=/usr/local --with-feature1
  15. # 编译
  16. make
  17. # 安装
  18. make install
  19. # 清理编译文件
  20. make clean
复制代码

使用Snap包

Snap是Canonical开发的通用包管理系统,现在也支持CentOS:
  1. # 安装Snap
  2. yum install snapd
  3. # 启用Snapd服务
  4. systemctl enable --now snapd.socket
  5. # 创建软链接以支持经典Snap
  6. ln -s /var/lib/snapd/snap /snap
  7. # 安装Snap应用
  8. snap install package_name
  9. # 查找Snap应用
  10. snap find keyword
  11. # 列出已安装的Snap应用
  12. snap list
  13. # 更新Snap应用
  14. snap refresh package_name
  15. # 删除Snap应用
  16. snap remove package_name
复制代码

使用Flatpak

Flatpak是另一个通用包管理系统,提供沙盒环境:
  1. # 安装Flatpak
  2. yum install flatpak
  3. # 添加Flathub仓库(Flatpak应用的主要来源)
  4. flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
  5. # 安装Flatpak应用
  6. flatpak install flathub com.example.App
  7. # 运行Flatpak应用
  8. flatpak run com.example.App
  9. # 列出已安装的Flatpak应用
  10. flatpak list
  11. # 更新Flatpak应用
  12. flatpak update
  13. # 删除Flatpak应用
  14. flatpak uninstall com.example.App
复制代码

管理服务

使用systemd管理系统服务:
  1. # 启动服务
  2. sudo systemctl start service_name
  3. # 停止服务
  4. sudo systemctl stop service_name
  5. # 重启服务
  6. sudo systemctl restart service_name
  7. # 重新加载服务配置
  8. sudo systemctl reload service_name
  9. # 启用服务(开机自启)
  10. sudo systemctl enable service_name
  11. # 禁用服务
  12. sudo systemctl disable service_name
  13. # 查看服务状态
  14. sudo systemctl status service_name
  15. # 查看所有服务状态
  16. sudo systemctl list-units --type=service
  17. # 查看服务日志
  18. sudo journalctl -u service_name
  19. # 实时查看服务日志
  20. sudo journalctl -fu service_name
复制代码

Web服务器部署

Apache HTTP Server

Apache是最流行的Web服务器软件之一,以下是安装和配置Apache的步骤:
  1. # 安装Apache
  2. sudo yum install httpd
  3. # 启动Apache服务
  4. sudo systemctl start httpd
  5. # 设置Apache开机自启
  6. sudo systemctl enable httpd
  7. # 检查Apache状态
  8. sudo systemctl status httpd
复制代码
  1. # 开放HTTP和HTTPS端口
  2. sudo firewall-cmd --permanent --add-service=http
  3. sudo firewall-cmd --permanent --add-service=https
  4. sudo firewall-cmd --reload
复制代码

Apache的主配置文件位于/etc/httpd/conf/httpd.conf:
  1. # 备份原始配置文件
  2. sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
  3. # 编辑配置文件
  4. sudo vi /etc/httpd/conf/httpd.conf
  5. # 常用配置项:
  6. ServerAdmin admin@example.com    # 管理员邮箱
  7. ServerName server.example.com:80  # 服务器名称
  8. DocumentRoot "/var/www/html"     # 网站根目录
  9. DirectoryIndex index.html index.php  # 默认首页文件
  10. # 保存并退出
  11. # 检查配置文件语法
  12. sudo apachectl configtest
  13. # 重新加载配置
  14. sudo systemctl reload httpd
复制代码

虚拟主机允许你在同一台服务器上托管多个网站:
  1. # 创建虚拟主机配置文件
  2. sudo vi /etc/httpd/conf.d/example.com.conf
  3. # 添加以下内容:
  4. <VirtualHost *:80>
  5.     ServerName example.com
  6.     ServerAlias www.example.com
  7.     DocumentRoot /var/www/example.com
  8.     ErrorLog /var/log/httpd/example.com-error.log
  9.     CustomLog /var/log/httpd/example.com-access.log combined
  10. </VirtualHost>
  11. # 保存并退出
  12. # 创建网站目录
  13. sudo mkdir -p /var/www/example.com
  14. # 创建测试页面
  15. echo "<html><head><title>Welcome to Example.com</title></head><body><h1>Success! The example.com virtual host is working!</h1></body></html>" | sudo tee /var/www/example.com/index.html
  16. # 设置正确的权限
  17. sudo chown -R apache:apache /var/www/example.com
  18. sudo chmod -R 755 /var/www/example.com
  19. # 检查配置文件语法
  20. sudo apachectl configtest
  21. # 重新加载Apache配置
  22. sudo systemctl reload httpd
复制代码

为网站启用HTTPS需要SSL证书,可以使用Let’s Encrypt提供的免费证书:
  1. # 安装Certbot(Let's Encrypt客户端)
  2. sudo yum install certbot python2-certbot-apache
  3. # 获取并安装证书
  4. sudo certbot --apache -d example.com -d www.example.com
  5. # 按照提示完成证书申请和安装
  6. # 测试自动续期
  7. sudo certbot renew --dry-run
  8. # Certbot会自动设置定时任务来续期证书,你可以查看:
  9. sudo systemctl list-timers
复制代码

Nginx

Nginx是另一个流行的Web服务器,以其高性能和低内存消耗而闻名:
  1. # 安装EPEL仓库(如果尚未安装)
  2. sudo yum install epel-release
  3. # 安装Nginx
  4. sudo yum install nginx
  5. # 启动Nginx服务
  6. sudo systemctl start nginx
  7. # 设置Nginx开机自启
  8. sudo systemctl enable nginx
  9. # 检查Nginx状态
  10. sudo systemctl status nginx
复制代码
  1. # 开放HTTP和HTTPS端口
  2. sudo firewall-cmd --permanent --add-service=http
  3. sudo firewall-cmd --permanent --add-service=https
  4. sudo firewall-cmd --reload
复制代码

Nginx的主配置文件位于/etc/nginx/nginx.conf:
  1. # 备份原始配置文件
  2. sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
  3. # 编辑配置文件
  4. sudo vi /etc/nginx/nginx.conf
  5. # 常用配置项:
  6. user nginx;                     # 运行Nginx的用户
  7. worker_processes auto;          # 工作进程数
  8. error_log /var/log/nginx/error.log;  # 错误日志位置
  9. pid /run/nginx.pid;             # PID文件位置
  10. events {
  11.     worker_connections 1024;    # 每个工作进程的最大连接数
  12. }
  13. http {
  14.     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  15.                       '$status $body_bytes_sent "$http_referer" '
  16.                       '"$http_user_agent" "$http_x_forwarded_for"';
  17.     access_log  /var/log/nginx/access.log  main;  # 访问日志位置
  18.     sendfile            on;   # 启用sendfile
  19.     tcp_nopush          on;   # 优化网络包发送
  20.     tcp_nodelay         on;   # 减少网络延迟
  21.     keepalive_timeout   65;   # 保持连接超时时间
  22.     types_hash_max_size 2048; # 类型哈希表最大大小
  23.     include             /etc/nginx/mime.types;  # MIME类型配置
  24.     default_type        application/octet-stream;  # 默认MIME类型
  25.     include /etc/nginx/conf.d/*.conf;  # 包含其他配置文件
  26. }
  27. # 保存并退出
  28. # 检查配置文件语法
  29. sudo nginx -t
  30. # 重新加载配置
  31. sudo systemctl reload nginx
复制代码

Nginx的虚拟主机配置通常存储在/etc/nginx/conf.d/目录中:
  1. # 创建虚拟主机配置文件
  2. sudo vi /etc/nginx/conf.d/example.com.conf
  3. # 添加以下内容:
  4. server {
  5.     listen 80;
  6.     server_name example.com www.example.com;
  7.     root /var/www/example.com;
  8.     index index.html;
  9.     location / {
  10.         try_files $uri $uri/ =404;
  11.     }
  12.     access_log /var/log/nginx/example.com-access.log;
  13.     error_log /var/log/nginx/example.com-error.log;
  14. }
  15. # 保存并退出
  16. # 创建网站目录
  17. sudo mkdir -p /var/www/example.com
  18. # 创建测试页面
  19. echo "<html><head><title>Welcome to Example.com</title></head><body><h1>Success! The example.com virtual host is working!</h1></body></html>" | sudo tee /var/www/example.com/index.html
  20. # 设置正确的权限
  21. sudo chown -R nginx:nginx /var/www/example.com
  22. sudo chmod -R 755 /var/www/example.com
  23. # 检查配置文件语法
  24. sudo nginx -t
  25. # 重新加载Nginx配置
  26. sudo systemctl reload nginx
复制代码

使用Let’s Encrypt为Nginx启用HTTPS:
  1. # 安装Certbot
  2. sudo yum install certbot python2-certbot-nginx
  3. # 获取并安装证书
  4. sudo certbot --nginx -d example.com -d www.example.com
  5. # 按照提示完成证书申请和安装
  6. # 测试自动续期
  7. sudo certbot renew --dry-run
复制代码

Nginx本身不处理PHP,需要通过PHP-FPM(FastCGI Process Manager)来支持PHP:
  1. # 安装PHP和PHP-FPM
  2. sudo yum install php php-fpm php-mysqlnd
  3. # 启动PHP-FPM服务
  4. sudo systemctl start php-fpm
  5. # 设置PHP-FPM开机自启
  6. sudo systemctl enable php-fpm
  7. # 编辑PHP-FPM配置文件
  8. sudo vi /etc/php-fpm.d/www.conf
  9. # 确保以下设置正确:
  10. listen = /var/run/php-fpm/php-fpm.sock
  11. listen.owner = nginx
  12. listen.group = nginx
  13. listen.mode = 0660
  14. user = nginx
  15. group = nginx
  16. # 保存并退出
  17. # 重启PHP-FPM服务
  18. sudo systemctl restart php-fpm
  19. # 修改Nginx虚拟主机配置以支持PHP
  20. sudo vi /etc/nginx/conf.d/example.com.conf
  21. # 在server块中添加以下内容:
  22. server {
  23.     listen 80;
  24.     server_name example.com www.example.com;
  25.     root /var/www/example.com;
  26.     index index.php index.html;
  27.     location / {
  28.         try_files $uri $uri/ =404;
  29.     }
  30.     location ~ \.php$ {
  31.         try_files $uri =404;
  32.         fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
  33.         fastcgi_index index.php;
  34.         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  35.         include fastcgi_params;
  36.     }
  37.     access_log /var/log/nginx/example.com-access.log;
  38.     error_log /var/log/nginx/example.com-error.log;
  39. }
  40. # 保存并退出
  41. # 创建PHP测试文件
  42. echo "<?php phpinfo(); ?>" | sudo tee /var/www/example.com/info.php
  43. # 检查Nginx配置
  44. sudo nginx -t
  45. # 重新加载Nginx配置
  46. sudo systemctl reload nginx
复制代码

现在你可以通过访问http://example.com/info.php来测试PHP是否正常工作。

数据库配置

MySQL/MariaDB

MariaDB是MySQL的一个分支,完全兼容MySQL,是CentOS默认的数据库系统。以下是安装和配置MariaDB的步骤:
  1. # 安装MariaDB服务器和客户端
  2. sudo yum install mariadb-server mariadb
  3. # 启动MariaDB服务
  4. sudo systemctl start mariadb
  5. # 设置MariaDB开机自启
  6. sudo systemctl enable mariadb
  7. # 检查MariaDB状态
  8. sudo systemctl status mariadb
复制代码

运行mysql_secure_installation脚本进行基本安全配置:
  1. # 运行安全配置脚本
  2. sudo mysql_secure_installation
  3. # 按照提示进行以下设置:
  4. # 1. 设置root密码
  5. # 2. 移除匿名用户
  6. # 3. 禁止root远程登录
  7. # 4. 移除测试数据库
  8. # 5. 重新加载权限表
复制代码
  1. # 连接到MariaDB
  2. mysql -u root -p
  3. # 创建数据库
  4. CREATE DATABASE example_db;
  5. # 创建用户并授予权限
  6. CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'password';
  7. GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost';
  8. FLUSH PRIVILEGES;
  9. # 退出MariaDB
  10. EXIT;
  11. # 使用新用户连接到特定数据库
  12. mysql -u example_user -p example_db
复制代码

默认情况下,MariaDB只允许本地连接。如果需要远程访问,需要进行以下配置:
  1. # 编辑MariaDB配置文件
  2. sudo vi /etc/my.cnf.d/mariadb-server.cnf
  3. # 在[mysqld]部分添加或修改以下行:
  4. bind-address = 0.0.0.0
  5. # 保存并退出
  6. # 重启MariaDB服务
  7. sudo systemctl restart mariadb
  8. # 配置防火墙,开放MySQL端口(默认3306)
  9. sudo firewall-cmd --permanent --add-service=mysql
  10. sudo firewall-cmd --reload
  11. # 创建允许远程访问的用户
  12. mysql -u root -p
  13. CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password';
  14. GRANT ALL PRIVILEGES ON example_db.* TO 'remote_user'@'%';
  15. FLUSH PRIVILEGES;
  16. EXIT;
复制代码
  1. # 备份数据库
  2. mysqldump -u root -p example_db > example_db_backup.sql
  3. # 备份所有数据库
  4. mysqldump -u root -p --all-databases > all_databases_backup.sql
  5. # 恢复数据库
  6. mysql -u root -p example_db < example_db_backup.sql
  7. # 恢复所有数据库
  8. mysql -u root -p < all_databases_backup.sql
复制代码

PostgreSQL

PostgreSQL是一个功能强大的开源对象关系数据库系统:
  1. # 安装PostgreSQL仓库
  2. sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
  3. # 安装PostgreSQL服务器和客户端
  4. sudo yum install postgresql13-server postgresql13-contrib
  5. # 初始化数据库
  6. sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
  7. # 启动PostgreSQL服务
  8. sudo systemctl start postgresql-13
  9. # 设置PostgreSQL开机自启
  10. sudo systemctl enable postgresql-13
  11. # 检查PostgreSQL状态
  12. sudo systemctl status postgresql-13
复制代码
  1. # 切换到postgres用户
  2. sudo -i -u postgres
  3. # 连接到PostgreSQL
  4. psql
  5. # 设置postgres用户密码
  6. \password postgres
  7. # 创建数据库
  8. CREATE DATABASE example_db;
  9. # 创建用户并授予权限
  10. CREATE USER example_user WITH PASSWORD 'password';
  11. GRANT ALL PRIVILEGES ON DATABASE example_db TO example_user;
  12. # 退出PostgreSQL
  13. \q
  14. # 退出postgres用户
  15. exit
复制代码
  1. # 编辑pg_hba.conf文件
  2. sudo vi /var/lib/pgsql/13/data/pg_hba.conf
  3. # 在文件末尾添加以下行,允许远程访问:
  4. host    all             all             0.0.0.0/0               md5
  5. # 保存并退出
  6. # 编辑postgresql.conf文件
  7. sudo vi /var/lib/pgsql/13/data/postgresql.conf
  8. # 找到并修改以下行:
  9. listen_addresses = '*'
  10. # 保存并退出
  11. # 重启PostgreSQL服务
  12. sudo systemctl restart postgresql-13
  13. # 配置防火墙,开放PostgreSQL端口(默认5432)
  14. sudo firewall-cmd --permanent --add-port=5432/tcp
  15. sudo firewall-cmd --reload
复制代码
  1. # 备份数据库
  2. sudo -u postgres pg_dump example_db > example_db_backup.sql
  3. # 恢复数据库
  4. sudo -u postgres psql example_db < example_db_backup.sql
  5. # 使用pg_dumpall备份所有数据库
  6. sudo -u postgres pg_dumpall > all_databases_backup.sql
  7. # 恢复所有数据库
  8. sudo -u postgres psql < all_databases_backup.sql
复制代码

Redis

Redis是一个开源的内存数据结构存储,用作数据库、缓存和消息代理:
  1. # 安装EPEL仓库(如果尚未安装)
  2. sudo yum install epel-release
  3. # 安装Redis
  4. sudo yum install redis
  5. # 启动Redis服务
  6. sudo systemctl start redis
  7. # 设置Redis开机自启
  8. sudo systemctl enable redis
  9. # 检查Redis状态
  10. sudo systemctl status redis
复制代码
  1. # 编辑Redis配置文件
  2. sudo vi /etc/redis.conf
  3. # 常用配置项:
  4. bind 127.0.0.1 192.168.1.100  # 绑定IP地址
  5. port 6379                       # 监听端口
  6. daemonize yes                   # 以守护进程方式运行
  7. supervised systemd              # 使用systemd管理
  8. requirepass yourpassword        # 设置访问密码
  9. # 保存并退出
  10. # 重启Redis服务
  11. sudo systemctl restart redis
复制代码
  1. # 编辑Redis配置文件
  2. sudo vi /etc/redis.conf
  3. # 修改bind行,允许远程访问:
  4. bind 0.0.0.0
  5. # 保存并退出
  6. # 重启Redis服务
  7. sudo systemctl restart redis
  8. # 配置防火墙,开放Redis端口(默认6379)
  9. sudo firewall-cmd --permanent --add-port=6379/tcp
  10. sudo firewall-cmd --reload
复制代码
  1. # 连接到Redis服务器
  2. redis-cli
  3. # 认证(如果设置了密码)
  4. AUTH yourpassword
  5. # 设置键值对
  6. SET key value
  7. # 获取键值
  8. GET key
  9. # 删除键
  10. DEL key
  11. # 查看所有键
  12. KEYS *
  13. # 退出Redis客户端
  14. QUIT
复制代码

Redis提供两种持久化方式:RDB(快照)和AOF(追加文件):
  1. # 编辑Redis配置文件
  2. sudo vi /etc/redis.conf
  3. # RDB配置:
  4. save 900 1      # 900秒内至少有1个键改变则保存
  5. save 300 10     # 300秒内至少有10个键改变则保存
  6. save 60 10000   # 60秒内至少有10000个键改变则保存
  7. dir /var/lib/redis  # RDB文件保存目录
  8. dbfilename dump.rdb  # RDB文件名
  9. # AOF配置:
  10. appendonly yes       # 启用AOF
  11. appendfilename "appendonly.aof"  # AOF文件名
  12. appendfsync everysec # 每秒同步一次
  13. # 保存并退出
  14. # 重启Redis服务
  15. sudo systemctl restart redis
复制代码

安全加固

系统更新与补丁

保持系统更新是维护服务器安全的第一步:
  1. # 检查可用更新
  2. yum check-update
  3. # 安装所有可用更新
  4. yum update -y
  5. # 设置自动更新
  6. yum install yum-cron
  7. # 编辑yum-cron配置
  8. vi /etc/yum/yum-cron.conf
  9. # 修改以下设置:
  10. apply_updates = yes
  11. update_cmd = security
  12. emit_via = email
  13. email_from = root@example.com
  14. email_to = admin@example.com
  15. # 保存并退出
  16. # 启动yum-cron服务
  17. systemctl start yum-cron
  18. systemctl enable yum-cron
复制代码

SSH安全配置

SSH是远程管理服务器的常用工具,确保SSH服务的安全至关重要:
  1. # 备份SSH配置文件
  2. cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  3. # 编辑SSH配置文件
  4. vi /etc/ssh/sshd_config
  5. # 修改以下设置:
  6. Port 2222                     # 更改默认端口(可选)
  7. PermitRootLogin no            # 禁止root登录
  8. PasswordAuthentication no     # 禁用密码认证,仅允许密钥认证
  9. PermitEmptyPasswords no       # 禁止空密码
  10. X11Forwarding no              # 禁用X11转发
  11. MaxAuthTries 3                # 最大认证尝试次数
  12. ClientAliveInterval 300       # 客户端活动间隔(秒)
  13. ClientAliveCountMax 2         # 最大客户端活动计数
  14. AllowUsers admin              # 仅允许特定用户登录
  15. # 保存并退出
  16. # 重启SSH服务
  17. systemctl restart sshd
复制代码

配置SSH密钥认证

使用SSH密钥认证比密码认证更安全:
  1. # 在本地计算机生成SSH密钥对(如果尚未生成)
  2. ssh-keygen -t rsa -b 4096
  3. # 将公钥复制到服务器
  4. ssh-copy-id -i ~/.ssh/id_rsa.pub admin@server_ip
  5. # 或者手动复制:
  6. # 在本地计算机上查看公钥
  7. cat ~/.ssh/id_rsa.pub
  8. # 在服务器上创建.ssh目录
  9. mkdir -p ~/.ssh
  10. chmod 700 ~/.ssh
  11. # 将公钥添加到authorized_keys文件
  12. echo "public_key_string" >> ~/.ssh/authorized_keys
  13. chmod 600 ~/.ssh/authorized_keys
  14. # 测试密钥认证
  15. ssh -i ~/.ssh/id_rsa admin@server_ip
复制代码

配置Fail2Ban

Fail2Ban是一个入侵防御软件,可以保护服务器免受暴力攻击:
  1. # 安装EPEL仓库(如果尚未安装)
  2. yum install epel-release
  3. # 安装Fail2Ban
  4. yum install fail2ban
  5. # 启动Fail2Ban服务
  6. systemctl start fail2ban
  7. systemctl enable fail2ban
  8. # 创建本地配置文件
  9. cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  10. # 编辑配置文件
  11. vi /etc/fail2ban/jail.local
  12. # 修改以下设置:
  13. [DEFAULT]
  14. bantime = 1h
  15. findtime = 10m
  16. maxretry = 3
  17. [sshd]
  18. enabled = true
  19. port = 2222  # 如果更改了SSH端口
  20. logpath = %(sshd_log)s
  21. # 保存并退出
  22. # 重启Fail2Ban服务
  23. systemctl restart fail2ban
  24. # 查看Fail2Ban状态
  25. fail2ban-client status
  26. fail2ban-client status sshd
复制代码

配置SELinux

SELinux(Security-Enhanced Linux)是Linux的一个安全模块,可以提供强制访问控制(MAC):
  1. # 检查SELinux状态
  2. sestatus
  3. # 临时设置SELinux为 enforcing 模式
  4. setenforce 1
  5. # 编辑SELinux配置文件
  6. vi /etc/selinux/config
  7. # 修改以下设置:
  8. SELINUX=enforcing
  9. # 保存并退出
  10. # 重启系统使更改生效
  11. reboot
复制代码

文件系统安全
  1. # 设置关键目录的权限
  2. chmod 700 /root
  3. chmod 750 /home
  4. chmod 755 /var/www
  5. # 查找并修复权限不当的文件
  6. find / -type f -perm /o+w -exec ls -l {} \;
  7. # 查找没有所有者的文件
  8. find / -nouser -o -nogroup
  9. # 设置umask值
  10. echo "umask 027" >> /etc/profile
  11. source /etc/profile
复制代码

系统审计

使用auditd进行系统审计:
  1. # 安装auditd
  2. yum install audit
  3. # 启动auditd服务
  4. systemctl start auditd
  5. systemctl enable auditd
  6. # 添加审计规则
  7. auditctl -w /etc/passwd -p wa -k passwd_changes
  8. auditctl -w /etc/sudoers -p wa -k sudoers_changes
  9. auditctl -w /var/log/audit/ -p wa -k audit_log_changes
  10. # 查看审计日志
  11. ausearch -k passwd_changes
  12. ausearch -k sudoers_changes
复制代码

安全扫描工具

使用Lynis进行系统安全扫描:
  1. # 安装Lynis
  2. yum install lynis
  3. # 运行安全扫描
  4. lynis audit system
  5. # 查看扫描报告
  6. less /var/log/lynis.log
复制代码

监控与维护

系统监控
  1. # 安装htop
  2. yum install htop
  3. # 使用top监控系统
  4. top
  5. # 使用htop监控系统(更友好)
  6. htop
复制代码
  1. # 显示虚拟内存统计信息
  2. vmstat
  3. # 每秒更新一次,共更新5次
  4. vmstat 1 5
复制代码
  1. # 安装sysstat包
  2. yum install sysstat
  3. # 显示CPU统计信息
  4. iostat -c
  5. # 显示磁盘I/O统计信息
  6. iostat -d
  7. # 每秒更新一次,共更新5次
  8. iostat -x 1 5
复制代码
  1. # 显示所有网络连接
  2. netstat -tuln
  3. # 显示所有TCP连接
  4. netstat -tulpn
  5. # 使用ss显示网络连接
  6. ss -tuln
  7. # 显示进程套接字信息
  8. ss -tulpn
复制代码

日志管理
  1. # 查看系统日志
  2. tail -f /var/log/messages
  3. # 查看安全日志
  4. tail -f /var/log/secure
  5. # 查看内核日志
  6. dmesg | tail
  7. # 使用journalctl查看系统日志
  8. journalctl -xe
  9. # 查看特定服务的日志
  10. journalctl -u nginx
复制代码

logrotate是一个日志管理工具,可以自动轮转、压缩和删除日志文件:
  1. # 安装logrotate
  2. yum install logrotate
  3. # 查看logrotate配置
  4. ls /etc/logrotate.d/
  5. # 创建自定义日志轮转配置
  6. vi /etc/logrotate.d/myapp
  7. # 添加以下内容:
  8. /var/log/myapp/*.log {
  9.     daily
  10.     missingok
  11.     rotate 7
  12.     compress
  13.     delaycompress
  14.     notifempty
  15.     create 644 nginx nginx
  16.     postrotate
  17.         systemctl reload myapp
  18.     endscript
  19. }
  20. # 保存并退出
  21. # 测试logrotate配置
  22. logrotate -d /etc/logrotate.d/myapp
  23. # 手动执行日志轮转
  24. logrotate -f /etc/logrotate.d/myapp
复制代码

性能监控工具

Nagios是一个强大的监控系统:
  1. # 安装EPEL仓库
  2. yum install epel-release
  3. # 安装Nagios和插件
  4. yum install nagios nagios-plugins-all
  5. # 配置Nagios
  6. vi /etc/nagios/nagios.cfg
  7. # 启动Nagios服务
  8. systemctl start nagios
  9. systemctl enable nagios
  10. # 访问Nagios Web界面
  11. # http://server_ip/nagios
复制代码

Zabbix是另一个流行的监控解决方案:
  1. # 安装Zabbix仓库
  2. rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
  3. # 安装Zabbix服务器、前端和代理
  4. yum install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent
  5. # 创建Zabbix数据库
  6. mysql -u root -p
  7. CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
  8. CREATE USER zabbix@localhost IDENTIFIED BY 'password';
  9. GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
  10. FLUSH PRIVILEGES;
  11. EXIT;
  12. # 导入初始数据
  13. zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
  14. # 配置Zabbix服务器
  15. vi /etc/zabbix/zabbix_server.conf
  16. # 修改以下设置:
  17. DBHost=localhost
  18. DBName=zabbix
  19. DBUser=zabbix
  20. DBPassword=password
  21. # 保存并退出
  22. # 配置PHP时区
  23. vi /etc/php.ini
  24. # 修改以下设置:
  25. date.timezone = Asia/Shanghai
  26. # 保存并退出
  27. # 启动Zabbix服务和代理
  28. systemctl restart zabbix-server zabbix-agent httpd php-fpm
  29. systemctl enable zabbix-server zabbix-agent httpd php-fpm
  30. # 访问Zabbix Web界面完成安装
  31. # http://server_ip/zabbix
复制代码

资源使用监控

Netdata是一个实时性能和健康监控工具:
  1. # 安装Netdata
  2. bash <(curl -Ss https://my-netdata.io/kickstart.sh)
  3. # 启动Netdata服务
  4. systemctl start netdata
  5. # 访问Netdata Web界面
  6. # http://server_ip:19999
复制代码

Prometheus是一个开源的监控和告警系统,Grafana是一个可视化工具:
  1. # 安装Prometheus
  2. yum install prometheus
  3. # 配置Prometheus
  4. vi /etc/prometheus/prometheus.yml
  5. # 修改以下设置:
  6. global:
  7.   scrape_interval: 15s
  8. scrape_configs:
  9.   - job_name: 'prometheus'
  10.     static_configs:
  11.       - targets: ['localhost:9090']
  12. # 保存并退出
  13. # 启动Prometheus服务
  14. systemctl start prometheus
  15. systemctl enable prometheus
  16. # 安装Grafana
  17. yum install grafana
  18. # 启动Grafana服务
  19. systemctl start grafana-server
  20. systemctl enable grafana-server
  21. # 访问Grafana Web界面
  22. # http://server_ip:3000
复制代码

自动化维护任务

Cron是一个定时任务工具,可以自动执行维护任务:
  1. # 编辑Cron任务
  2. crontab -e
  3. # 添加以下示例任务:
  4. # 每天凌晨3点更新系统
  5. 0 3 * * * yum update -y
  6. # 每周日凌晨2点备份数据库
  7. 0 2 * * 0 mysqldump -u root -p'password' --all-databases > /backup/all_databases_$(date +\%Y\%m\%d).sql
  8. # 每小时清理临时文件
  9. 0 * * * * find /tmp -type f -mtime +1 -delete
  10. # 保存并退出
  11. # 查看Cron任务
  12. crontab -l
  13. # 查看Cron日志
  14. tail -f /var/log/cron
复制代码

Ansible是一个自动化配置管理工具:
  1. # 安装EPEL仓库
  2. yum install epel-release
  3. # 安装Ansible
  4. yum install ansible
  5. # 创建Ansible配置文件
  6. mkdir -p /etc/ansible
  7. vi /etc/ansible/ansible.cfg
  8. # 添加以下内容:
  9. [defaults]
  10. inventory = /etc/ansible/hosts
  11. host_key_checking = False
  12. # 保存并退出
  13. # 创建主机清单
  14. vi /etc/ansible/hosts
  15. # 添加以下内容:
  16. [webservers]
  17. server1 ansible_host=192.168.1.100
  18. server2 ansible_host=192.168.1.101
  19. [databases]
  20. db1 ansible_host=192.168.1.102
  21. # 保存并退出
  22. # 创建Ansible Playbook
  23. vi /etc/ansible/playbook.yml
  24. # 添加以下内容:
  25. ---
  26. - name: Configure web servers
  27.   hosts: webservers
  28.   become: yes
  29.   tasks:
  30.     - name: Install Apache
  31.       yum:
  32.         name: httpd
  33.         state: present
  34.    
  35.     - name: Start Apache service
  36.       service:
  37.         name: httpd
  38.         state: started
  39.         enabled: yes
  40.    
  41.     - name: Open firewall port
  42.       firewalld:
  43.         service: http
  44.         permanent: yes
  45.         state: enabled
  46.         immediate: yes
  47. # 保存并退出
  48. # 运行Playbook
  49. ansible-playbook /etc/ansible/playbook.yml
复制代码

常见问题与解决方案

SSH连接问题

可能原因:

1. 服务器未运行
2. SSH服务未启动
3. 防火墙阻止了SSH连接
4. 网络问题

解决方案:
  1. # 检查服务器状态
  2. ping server_ip
  3. # 检查SSH服务状态
  4. systemctl status sshd
  5. # 启动SSH服务
  6. systemctl start sshd
  7. # 检查防火墙状态
  8. firewall-cmd --list-all
  9. # 开放SSH端口
  10. firewall-cmd --permanent --add-service=ssh
  11. firewall-cmd --reload
复制代码

可能原因:

1. 网络不稳定
2. 服务器负载过高
3. SSH配置问题

解决方案:
  1. # 修改SSH客户端配置
  2. vi ~/.ssh/config
  3. # 添加以下内容:
  4. Host *
  5.     ServerAliveInterval 60
  6.     ServerAliveCountMax 3
  7. # 保存并退出
  8. # 或者修改服务器SSH配置
  9. vi /etc/ssh/sshd_config
  10. # 修改以下设置:
  11. ClientAliveInterval 300
  12. ClientAliveCountMax 2
  13. # 保存并退出并重启SSH服务
  14. systemctl restart sshd
复制代码

软件安装问题

可能原因:

1. 软件包名称错误
2. 仓库未正确配置
3. 仓库列表未更新

解决方案:
  1. # 搜索软件包
  2. yum search keyword
  3. # 清除缓存并更新仓库列表
  4. yum clean all
  5. yum makecache
  6. # 检查仓库列表
  7. yum repolist
  8. # 添加EPEL仓库
  9. yum install epel-release
复制代码

可能原因:

1. 依赖包缺失
2. 依赖包版本冲突
3. 系统软件包损坏

解决方案:
  1. # 修复依赖关系
  2. yum install yum-utils
  3. package-cleanup --problems
  4. package-cleanup --dupes
  5. package-cleanup --cleandupes
  6. # 重建RPM数据库
  7. rpm --rebuilddb
  8. # 清除所有缓存并重新安装
  9. yum clean all
  10. yum history new
  11. yum install package_name
复制代码

网络配置问题

可能原因:

1. 网络配置错误
2. DNS配置错误
3. 网关配置错误
4. 防火墙阻止了连接

解决方案:
  1. # 检查网络接口状态
  2. ip addr show
  3. # 检查路由表
  4. ip route show
  5. # 检查DNS配置
  6. cat /etc/resolv.conf
  7. # 测试DNS解析
  8. nslookup google.com
  9. # 测试网络连通性
  10. ping 8.8.8.8
  11. # 检查防火墙状态
  12. firewall-cmd --list-all
  13. # 临时禁用防火墙进行测试
  14. systemctl stop firewalld
复制代码

可能原因:

1. 目标服务器问题
2. 中间网络问题
3. 本地防火墙或SELinux阻止

解决方案:
  1. # 使用traceroute诊断网络路径
  2. traceroute example.com
  3. # 使用telnet测试端口连通性
  4. telnet example.com 80
  5. # 检查SELinux状态
  6. sestatus
  7. # 临时禁用SELinux进行测试
  8. setenforce 0
  9. # 检查防火墙日志
  10. tail -f /var/log/firewalld
复制代码

Web服务器问题

可能原因:

1. 配置文件语法错误
2. 端口被占用
3. 权限问题

解决方案:
  1. # 检查配置文件语法
  2. apachectl configtest
  3. # 或
  4. nginx -t
  5. # 检查端口占用情况
  6. netstat -tulnp | grep :80
  7. # 检查服务日志
  8. tail -f /var/log/httpd/error_log
  9. # 或
  10. tail -f /var/log/nginx/error.log
  11. # 检查文件权限
  12. ls -la /var/www/html/
复制代码

可能原因:

1. 服务器资源不足
2. 网络带宽限制
3. 应用程序性能问题
4. 数据库查询效率低

解决方案:
  1. # 检查系统资源使用情况
  2. top
  3. htop
  4. free -h
  5. df -h
  6. # 检查网络带宽
  7. iftop
  8. nload
  9. # 检查Apache/Nginx状态
  10. apachectl status
  11. # 或
  12. nginx -T
  13. # 检查数据库查询
  14. mysql -u root -p
  15. SHOW PROCESSLIST;
复制代码

数据库问题

可能原因:

1. 数据库服务未启动
2. 认证信息错误
3. 网络连接问题
4. 防火墙阻止

解决方案:
  1. # 检查数据库服务状态
  2. systemctl status mariadb
  3. # 或
  4. systemctl status postgresql-13
  5. # 启动数据库服务
  6. systemctl start mariadb
  7. # 或
  8. systemctl start postgresql-13
  9. # 检查数据库日志
  10. tail -f /var/log/mariadb/mariadb.log
  11. # 或
  12. tail -f /var/log/postgresql/postgresql-13-main.log
  13. # 检查网络连通性
  14. telnet localhost 3306
  15. # 或
  16. telnet localhost 5432
  17. # 检查防火墙状态
  18. firewall-cmd --list-all
复制代码

可能原因:

1. 查询未优化
2. 索引缺失
3. 配置不当
4. 硬件资源不足

解决方案:
  1. # 检查数据库进程
  2. mysqladmin processlist -u root -p
  3. # 或
  4. SELECT * FROM pg_stat_activity;
  5. # 优化MySQL/MariaDB
  6. mysqltuner.pl
  7. # 优化PostgreSQL
  8. vi /var/lib/pgsql/13/data/postgresql.conf
  9. # 调整以下参数:
  10. shared_buffers = 256MB
  11. effective_cache_size = 1GB
  12. work_mem = 4MB
  13. maintenance_work_mem = 64MB
  14. # 保存并退出并重启数据库服务
  15. systemctl restart postgresql-13
复制代码

进阶学习路径

深入学习Linux系统管理

1. Linux内核:了解Linux内核的工作原理、模块管理和性能调优
2. 系统性能调优:学习如何优化系统性能,包括CPU、内存、磁盘I/O和网络
3. 容器技术:深入学习Docker、Kubernetes等容器技术
4. 虚拟化技术:学习KVM、Xen等虚拟化技术

推荐资源

1. 书籍:《鸟哥的Linux私房菜》《Linux命令行与Shell脚本编程大全》《深入理解Linux内核》《高性能Linux服务器构建实战》
2. 《鸟哥的Linux私房菜》
3. 《Linux命令行与Shell脚本编程大全》
4. 《深入理解Linux内核》
5. 《高性能Linux服务器构建实战》
6. 在线课程:Linux Foundation提供的免费课程Coursera上的Linux相关课程Udemy上的Linux服务器管理课程
7. Linux Foundation提供的免费课程
8. Coursera上的Linux相关课程
9. Udemy上的Linux服务器管理课程
10. 认证:CompTIA Linux+LFCS (Linux Foundation Certified System Administrator)RHCSA (Red Hat Certified System Administrator)RHCE (Red Hat Certified Engineer)
11. CompTIA Linux+
12. LFCS (Linux Foundation Certified System Administrator)
13. RHCSA (Red Hat Certified System Administrator)
14. RHCE (Red Hat Certified Engineer)

书籍:

• 《鸟哥的Linux私房菜》
• 《Linux命令行与Shell脚本编程大全》
• 《深入理解Linux内核》
• 《高性能Linux服务器构建实战》

在线课程:

• Linux Foundation提供的免费课程
• Coursera上的Linux相关课程
• Udemy上的Linux服务器管理课程

认证:

• CompTIA Linux+
• LFCS (Linux Foundation Certified System Administrator)
• RHCSA (Red Hat Certified System Administrator)
• RHCE (Red Hat Certified Engineer)

实践项目

1. 搭建LAMP/LNMP环境:实践搭建完整的Web服务器环境
2. 配置高可用集群:使用Keepalived、HAProxy等工具配置高可用服务
3. 实现自动化部署:使用Ansible、SaltStack等工具实现自动化配置管理
4. 构建监控系统:搭建完整的系统监控和告警平台
5. 部署容器化应用:使用Docker和Kubernetes部署和管理容器化应用

参与开源社区

1. 贡献代码:为开源项目贡献代码或文档
2. 参与测试:参与新版本的测试和反馈
3. 回答问题:在Stack Overflow、Reddit等社区回答问题
4. 撰写博客:分享你的学习经验和解决问题的方法

结语

通过本教程的学习,你已经掌握了CentOS云服务器配置与管理的基本技能。从系统初始化到Web服务器部署,从数据库配置到安全加固,这些知识为你进一步探索Linux系统管理打下了坚实的基础。

记住,技术学习是一个持续的过程,随着技术的不断发展,你需要不断学习新知识、掌握新技能。希望本教程能够成为你Linux学习之旅的良好起点,鼓励你继续探索和实践,不断提升自己的技术水平。

无论你是想成为一名专业的系统管理员,还是希望将Linux技能应用到开发工作中,坚持不懈的学习和实践都是成功的关键。祝你在Linux的世界里取得更大的成就!
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则