用CentOS7做服务器运维一段时间了,整理一下常用操作和踩过的坑。
磁盘分区与挂载
查看磁盘信息
首先使用fdisk -l命令查看系统中的磁盘信息:
1 | fdisk -l |
输出示例:
1 | Disk /dev/xvda: 42.9 GB, 42949672960 bytes, 83886080 sectors |
关键字段说明:
| 字段 | 说明 |
|---|---|
| Device | 设备名称,如/dev/xvda |
| Boot | 是否启动分区 |
| Start | 起始扇区 |
| End | 结束扇区 |
| Blocks | 块大小(1KB) |
| Id | 分区类型ID |
| System | 文件系统类型 |
创建新分区
以新挂载的数据盘/dev/xvdb为例:
步骤1:进入fdisk模式
1 | fdisk /dev/xvdb |
步骤2:创建新分区
输入n表示新增分区。
步骤3:选择分区类型
输入p选择主分区(最多4个)。
步骤4:选择分区编号
输入1选择编号1。
步骤5:设置起始扇区
直接回车使用默认值2048。
步骤6:设置结束扇区
直接回车使用全部空间。
步骤7:写入分区表
输入w保存。
同步分区表
1 | partprobe |
格式化分区
1 | mkfs -t ext4 /dev/xvdb1 |
格式化过程输出:
1 | mke2fs 1.42.9 (28-Dec-2013) |
挂载分区
创建挂载目录:
1 | mkdir /mnt/sdc |
挂载:
1 | mount /dev/xvdb1 /mnt/sdc |
查看挂载结果:
1 | df -TH |
输出示例:
1 | Filesystem Type Size Used Avail Use% Mounted on |
设置开机自动挂载
注意: 不能直接在/etc/fstab中指定/dev/xvdb1,因为设备顺序可能变。推荐用UUID配置。
查询UUID:
1 | blkid /dev/xvdb1 |
输出示例:
1 | /dev/xvdb1: UUID="1851e23f-1c57-40ab-86bb-5fc5fc606ffa" TYPE="ext4" |
编辑fstab文件:
1 | vi /etc/fstab |
添加内容:
1 | UUID=1851e23f-1c57-40ab-86bb-5fc5fc606ffa /mnt/sdc ext4 defaults 0 2 |
fstab字段说明:
| 字段 | 说明 |
|---|---|
| UUID | 分区唯一标识符 |
| /mnt/sdc | 挂载点 |
| ext4 | 文件系统类型 |
| defaults | 挂载选项 |
| 0 | dump备份设置 |
| 2 | fsck检查顺序 |
DNS配置
查看网络连接
1 | nmcli connection show |
修改DNS服务器
1 | nmcli con mod eth0 ipv4.dns "114.114.114.114 8.8.8.8" |
注意:eth0需要替换为实际的连接名称。
使配置生效
1 | nmcli con up eth0 |
验证配置
1 | cat /etc/resolv.conf |
时区配置
查看时区状态
1 | timedatectl |
列出所有时区
1 | timedatectl list-timezones |
设置系统时区
1 | timedatectl set-timezone Asia/Shanghai |
硬件时钟设置
1 | # 设置为本地时间 |
时间同步
1 | # 安装ntp |
常用NTP服务器:
| 服务器地址 | 说明 |
|---|---|
| ntp1.aliyun.com | 阿里云NTP服务器 |
| ntp2.aliyun.com | 阿里云NTP服务器 |
| time.windows.com | Windows时间服务器 |
| cn.pool.ntp.org | 中国NTP池 |
MySQL安装与配置
卸载现有MySQL/MariaDB
查询已安装的包:
1 | rpm -qa | grep mysql |
卸载MariaDB:
1 | # 逐个卸载 |
安装MySQL YUM源
下载YUM源:
1 | wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm |
安装YUM源:
1 | rpm -ivh mysql80-community-release-el7-3.noarch.rpm |
安装MySQL服务器
1 | yum -y install mysql-server |
设置外部访问
MySQL安装后默认只允许localhost访问,如需外部访问需创建新用户:
1 | -- 创建允许外部访问的用户 |
防火墙配置
1 | # 开放MySQL端口 |
Nginx部署与配置
安装Nginx
1 | yum -y install nginx |
403 Forbidden错误解决
查看错误日志:
1 | cat /var/log/nginx/error.log |
常见错误:
1 | open() "/data/xxxx.xxx" failed (13: Permission denied), client: 192.168.1.2, server: www.xxxx.com |
解决方案1:修改Nginx用户
查看Nginx启动用户:
1 | ps aux | grep "nginx: worker process" | awk '{print $1}' |
修改nginx.conf:
1 | user root; # 改为root用户或其他有权限的用户 |
解决方案2:修改文件权限
1 | chmod -R 777 /data/www/ |
解决方案3:关闭SELinux
查看SELinux状态:
1 | /usr/sbin/sestatus |
修改SELinux配置:
1 | vi /etc/selinux/config |
修改内容:
1 | SELINUX=disabled |
重启生效:
1 | reboot |
网络工具
获取外网IP
使用curl命令:
1 | # 多种方式获取外网IP |
输出示例:
1 | 123.45.67.89 |
网络诊断
1 | # 测试网络连通性 |
常用数值单位
| 单位 | 英文 | 换算关系 |
|---|---|---|
| B | Byte | 1 B |
| KB | kilo | 1 KB = 1024 B |
| MB | mega | 1 MB = 1024 KB |
| GB | giga | 1 GB = 1024 MB |
| TB | tera | 1 TB = 1024 GB |
| PB | peta | 1 PB = 1024 TB |
| EB | exa | 1 EB = 1024 PB |
总结一下
CentOS7运维的核心技能就这些:
| 主题 | 关键命令/配置 | 注意事项 |
|---|---|---|
| 磁盘管理 | fdisk, mkfs, mount | 用UUID配置自动挂载 |
| DNS配置 | nmcli | 确保使用正确的连接名 |
| 时区配置 | timedatectl | 用ntp同步时间 |
| MySQL安装 | yum, rpm | 先卸载MariaDB |
| Nginx部署 | yum | 注意权限和SELinux |
| 网络工具 | curl, ping, netstat | 多种方式获取外网IP |
掌握这些后,日常的Linux服务器维护和故障排查基本能搞定了。
参考:
- CentOS官方文档:https://www.centos.org/
- MySQL官方文档:https://dev.mysql.com/doc/
- Nginx官方文档:https://nginx.org/en/docs/
- Linux man pages:https://man7.org/linux/man-pages/