很多刚接触运维的同学都有这样的困惑:Linux系统看起来复杂,命令繁多,不知道从哪里开始学起。网上资料虽然多,但往往零散不成体系,学了半天还是无法独立完成实际运维任务。本文将从真正的零基础开始,带你系统掌握Linux运维的核心技能,包括系统安装、常用命令、文件管理,一直到Docker容器化技术,学完后能够胜任初级运维工程师的日常工作需求。
1. Linux系统概述与安装部署
1.1 Linux系统简介与应用场景
Linux是一种开源的类Unix操作系统内核,由林纳斯·托瓦兹在1991年首次发布。经过30多年的发展,Linux已经成为服务器领域的绝对主流,在云计算、大数据、人工智能等领域都发挥着重要作用。
Linux的主要特点:
- 开源免费:用户可以自由使用、修改和分发
- 多用户多任务:支持多个用户同时登录和使用系统资源
- 安全性高:完善的权限管理和安全机制
- 稳定性强:可以长时间运行而不需要重启
- 跨平台性:支持x86、ARM等多种硬件架构
Linux在企业的典型应用:
- Web服务器(Nginx、Apache)
- 数据库服务器(MySQL、PostgreSQL)
- 应用服务器(Tomcat、Node.js)
- 云计算平台(OpenStack、Kubernetes)
- 网络设备(路由器、防火墙)
1.2 虚拟机环境搭建
对于初学者来说,直接在物理机上安装Linux存在风险,推荐使用虚拟机进行学习。VMware Workstation和VirtualBox都是优秀的虚拟化软件。
VMware Workstation安装步骤:
- 访问VMware官网下载Workstation Player(个人使用免费)
- 运行安装程序,按提示完成安装
- 重启计算机使虚拟化功能生效
创建Linux虚拟机:
1.3 Linux系统安装实战
我们以CentOS 7为例演示安装过程,其他发行版安装流程类似。
安装前准备:
- 下载CentOS 7 ISO镜像文件
- 创建虚拟机并加载ISO镜像
- 确保网络连接正常
安装步骤详解:
- 启动安装程序:从ISO镜像启动,选择"Install CentOS 7"
- 语言选择:建议选择English,避免中文路径问题
- 安装类型:选择"Minimal Install"(最小化安装)
- 磁盘分区:选择"自动分区"或手动分区
/boot:500MB(启动分区)
swap:内存的1-2倍(交换分区)
/:剩余所有空间(根分区)
- 网络配置:开启网络连接,设置主机名
- 用户设置:设置root密码,创建普通用户
- 开始安装:等待安装完成并重启
首次登录后的基本配置:
BASH
5
sudo yum install -y vim wget curl net-tools
9
cat /etc/redhat-release
2. Linux基础命令全面掌握
2.1 文件目录操作命令
目录操作命令:
BASH
18
mkdir -p dir1/dir2/dir3
文件操作命令:
BASH
3
echo "hello world" > file.txt
10
mv file1.txt file2.txt
2.2 文件查看与编辑命令
文件查看命令:
Vim编辑器使用:
Vim是Linux中最强大的文本编辑器,学习曲线较陡但效率极高。
2.3 系统管理命令
进程管理命令:
系统信息查看:
BASH
3
cat /etc/redhat-release
3. 文件权限与用户管理
3.1 Linux权限机制详解
Linux采用严格的权限管理机制,每个文件和目录都有对应的权限设置。
权限表示法:
r:读权限(数字4)
w:写权限(数字2)
x:执行权限(数字1)
权限示例分析:
3.2 权限管理命令
修改文件权限:
BASH
12
chmod -R 755 /path/to/dir
修改文件所有者:
BASH
2
chown user:group file.txt
7
chown -R user:group /path/to/dir
3.3 用户和组管理
用户管理命令:
BASH
15
usermod -aG newgroup user
16
gpasswd -d user newgroup
4. 软件包管理与服务配置
4.1 YUM包管理器
YUM是CentOS/RHEL系统的包管理工具,可以自动解决依赖关系。
常用YUM命令:
BASH
6
yum install package_name
7
yum remove package_name
13
yum provides /path/file
16
yum groupinstall "Development Tools"
4.2 系统服务管理
Systemd是现代Linux系统的服务管理工具。
服务管理命令:
BASH
2
systemctl start service_name
3
systemctl stop service_name
4
systemctl restart service_name
5
systemctl reload service_name
8
systemctl status service_name
9
systemctl is-active service_name
10
systemctl is-enabled service_name
13
systemctl enable service_name
14
systemctl disable service_name
15
systemctl list-unit-files
4.3 实战:安装配置Nginx Web服务器
BASH
2
sudo yum install -y epel-release
3
sudo yum install -y nginx
6
sudo systemctl start nginx
7
sudo systemctl enable nginx
10
sudo systemctl status nginx
13
sudo firewall-cmd --permanent --add-service=http
14
sudo firewall-cmd --permanent --add-service=https
15
sudo firewall-cmd --reload
21
cat /etc/nginx/nginx.conf
5. 网络配置与远程连接
5.1 网络配置管理
网络接口配置:
网络配置文件:
CentOS 7网络配置文件位于/etc/sysconfig/network-scripts/目录下。
BASH
2
cat /etc/sysconfig/network-scripts/ifcfg-ens33
5.2 SSH远程连接管理
SSH是Linux系统远程管理的标准工具。
SSH服务端配置:
BASH
2
sudo yum install -y openssh-server
5
sudo systemctl start sshd
6
sudo systemctl enable sshd
9
sudo systemctl status sshd
12
cat /etc/ssh/sshd_config
SSH客户端使用:
BASH
3
ssh -p 2222 username@hostname
6
ssh-copy-id username@hostname
7
ssh -i key.pem username@hostname
10
scp local_file user@host:/remote/path
11
scp user@host:/remote/file local_path
14
ssh -L 8080:localhost:80 user@hostname
6. 磁盘管理与文件系统
6.1 磁盘分区与挂载
磁盘分区管理:
文件系统挂载:
BASH
5
mount /dev/sdb1 /mnt/data
6.2 磁盘配额与LVM管理
磁盘配额配置:
BASH
2
cat /proc/mounts | grep quota
LVM逻辑卷管理:
BASH
8
lvcreate -L 10G -n lv0 vg0
11
mkfs.ext4 /dev/vg0/lv0
14
lvextend -L +5G /dev/vg0/lv0
15
resize2fs /dev/vg0/lv0
7. Shell脚本编程入门
7.1 Shell脚本基础语法
Shell脚本是自动化运维的重要工具。
第一个Shell脚本:
变量使用:
BASH
6
echo "系统版本:CentOS $version"
9
readonly company="CSDN"
条件判断:
BASH
3
if [ -f "/etc/passwd" ]; then
10
if [ $1 -gt 10 ]; then
12
elif [ $1 -eq 10 ]; then
7.2 循环与函数
循环结构:
BASH
9
while [ $count -le 5 ]; do
15
for file in /etc/*.conf; do
函数定义与使用:
BASH
21
echo "用户 $username 创建成功"
24
create_user "testuser"
8. Docker容器化技术实战
8.1 Docker基础概念
Docker是目前最流行的容器化技术,彻底改变了应用部署方式。
Docker核心概念:
- 镜像(Image):应用的打包模板,包含运行所需的一切
- 容器(Container):镜像的运行实例
- 仓库(Registry):存储和分发镜像的地方
- Dockerfile:构建镜像的脚本文件
Docker与传统虚拟机的区别:
- 虚拟机:硬件虚拟化,每个VM包含完整操作系统
- Docker:操作系统级虚拟化,共享主机内核,更轻量高效
8.2 Docker安装与配置
CentOS安装Docker:
BASH
2
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
5
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
8
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
11
sudo yum install -y docker-ce docker-ce-cli containerd.io
14
sudo systemctl start docker
15
sudo systemctl enable docker
19
sudo docker run hello-world
配置Docker镜像加速:
BASH
2
sudo mkdir -p /etc/docker
5
sudo tee /etc/docker/daemon.json <<-'EOF'
7
"registry-mirrors": ["https://registry.docker-cn.com"]
12
sudo systemctl daemon-reload
13
sudo systemctl restart docker
8.3 Docker常用命令详解
镜像管理命令:
BASH
5
docker pull nginx:latest
14
docker save -o nginx.tar nginx:latest
15
docker load -i nginx.tar
容器管理命令:
BASH
2
docker run -d --name mynginx -p 80:80 nginx
11
docker restart mynginx
15
docker exec -it mynginx bash
19
docker logs -f mynginx
8.4 Dockerfile编写与镜像构建
简单的Dockerfile示例:
DOCKERFILE
11
RUN pip install --trusted-host pypi.python.org -r requirements.txt
20
CMD ["python", "app.py"]
构建和运行自定义镜像:
BASH
2
docker build -t mypythonapp .
5
docker run -d -p 4000:80 mypythonapp
8
curl http://localhost:4000
8.5 Docker Compose多容器编排
docker-compose.yml示例:
YAML
8
- ./html:/usr/share/nginx/html
17
command: python app.py
24
MYSQL_ROOT_PASSWORD: example
27
- db_data:/var/lib/mysql
使用Docker Compose管理应用:
BASH
2
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
3
sudo chmod +x /usr/local/bin/docker-compose
9. 常见问题排查与性能优化
9.1 系统故障排查
系统启动问题排查:
性能问题排查:
9.2 服务故障排查
服务启动失败排查步骤:
- 检查服务状态:
systemctl status service_name
- 查看服务日志:
journalctl -u service_name
- 检查配置文件语法:
nginx -t(以Nginx为例)
- 检查端口占用:
netstat -tlnp | grep port
- 检查依赖服务是否正常
网络连接问题排查:
10. 运维自动化与监控
10.1 定时任务管理
Crontab定时任务:
BASH
15
0 2 * * * /root/backup.sh
16
*/5 * * * * /root/monitor.sh
17
0 0 * * 0 /root/weekly.sh
系统级定时任务:
10.2 日志管理与分析
日志文件位置:
BASH
9
/var/log/nginx/access.log
10
/var/log/nginx/error.log
日志分析命令:
BASH
2
tail -f /var/log/messages
5
grep "error" /var/log/messages
6
grep -i "failed" /var/log/secure
9
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
12
sed -n '/2024-01-01 10:00:00/,/2024-01-01 11:00:00/p' /var/log/messages
10.3 系统监控工具
基础监控命令:
BASH
12
ps aux --sort=-%cpu | head -10
13
ps aux --sort=-%mem | head -10
通过系统学习以上内容,你已经掌握了Linux运维工程师所需的核