为了账号安全,请及时绑定邮箱和手机立即绑定

运维学习入门指南:轻松掌握服务器管理基础

概述

运维学习涉及对服务器管理基础的全面掌握,包括运维基础知识、操作系统管理、网络配置、服务部署和日志监控等。本文详细介绍了运维人员需要掌握的各项技能和常用命令,旨在帮助读者轻松入门运维领域。运维学习还包括使用监控工具如Zabbix和Nagios实现系统监控,以及编写自动化运维脚本以提高工作效率。

运维基础知识介绍

什么是运维

运维(Operations and Maintenance,简称O&M)是指对硬件、软件和网络等基础设施进行日常管理、维护、优化和故障排除的过程。运维的目标是确保系统稳定运行、提高系统的可用性和可靠性,同时尽可能减少停机时间。运维包括但不限于数据中心管理、系统监控、性能优化、安全防护等。

运维的基本职责

运维的基本职责可以归纳如下:

  1. 系统监控:监控系统运行状态、资源使用情况和性能指标,确保系统正常运行。
  2. 故障处理:及时发现并排除系统故障,确保服务连续性。
  3. 性能优化:优化系统性能,提高系统响应速度和资源利用率。
  4. 数据备份:定期备份系统数据,防止数据丢失。
  5. 安全防护:维护系统安全,防止黑客攻击、病毒入侵等安全事件。
  6. 文档记录:记录系统操作日志、配置变更等,方便后续维护。

运维人员需要掌握的技能

运维人员需要掌握以下技能:

  1. 操作系统管理:熟悉Linux、Windows等常用操作系统的基本命令和配置方法。
  2. 网络配置:理解TCP/IP模型,掌握常见网络协议和网络设备配置。
  3. 服务部署:能够部署和管理Web服务、数据库服务等常用服务。
  4. 日志管理:能够读取和分析系统日志文件,快速定位和解决故障。
  5. 监控工具:熟悉Zabbix、Nagios等监控工具的使用。
  6. 脚本编写:能够使用Shell、Python等脚本语言编写自动化运维脚本。
  7. 安全防护:掌握基本的安全防护知识,如防火墙配置、加密通信等。
  8. 文档撰写:能够撰写清晰的技术文档和操作手册。
常用操作系统管理

Linux系统常用命令

Linux系统中,常用命令包括但不限于以下几种:

  • 文件和目录操作
    • ls:列出指定目录的内容。
    • cd:改变当前目录。
    • mkdir:创建新的目录。
    • rm:删除文件或目录。
    • mv:移动文件或重命名文件。
    • touch:创建空文件或修改文件的最后修改时间。
    • cp:复制文件或目录。

示例代码:

# 列出当前目录下的所有文件
ls

# 创建一个新的目录
mkdir new_directory

# 删除一个空目录
rmdir empty_directory

# 移动文件到另一个目录
mv file.txt /new_directory/

# 创建一个空文件
touch new_file.txt
  • 文件权限管理
    • chmod:更改文件权限。
    • chown:更改文件所有者。
    • chgrp:更改文件所属组。

示例代码:

# 更改文件权限,为文件赋予可读、可写、可执行权限
chmod 777 file.txt

# 更改文件所有者
chown new_user file.txt

# 更改文件所属组
chgrp new_group file.txt
  • 用户与权限
    • useradd:添加新用户。
    • userdel:删除用户。
    • passwd:修改用户密码。
    • groupadd:添加新用户组。
    • groupdel:删除用户组。

示例代码:

# 添加新用户
useradd newuser

# 删除用户
userdel olduser

# 修改用户密码
passwd newuser

# 添加新用户组
groupadd newgroup

# 删除用户组
groupdel oldgroup
  • 进程管理
    • ps:显示当前运行的进程。
    • top:实时显示系统中各个进程的资源占用情况。
    • kill:终止指定的进程。
    • killall:终止指定名称的所有进程。

示例代码:

# 显示当前运行的进程
ps aux

# 实时显示系统中各个进程的资源占用情况
top

# 终止指定的进程
kill 1234

# 终止指定名称的所有进程
killall process_name
  • 文件压缩与解压
    • tar:打包或解包文件。
    • gzip:压缩或解压文件。
    • bzip2:压缩或解压文件。
    • zip:压缩或解压文件到zip格式。

示例代码:

# 打包文件并压缩
tar -czvf archive.tar.gz file1 file2

# 解压文件
tar -xzvf archive.tar.gz

# 使用gzip压缩文件
gzip file.txt

# 使用gzip解压文件
gunzip file.txt.gz

# 使用bzip2压缩文件
bzip2 file.txt

# 使用bzip2解压文件
bunzip2 file.txt.bz2

# 使用zip压缩文件
zip archive.zip file1 file2

# 使用zip解压文件
unzip archive.zip

Windows系统常用命令

Windows系统中,常用命令包括但不限于以下几种:

  • 文件和目录操作
    • dir:列出指定目录的内容。
    • cd:改变当前目录。
    • mkdir:创建新的目录。
    • rmdir:删除空目录。
    • del:删除文件。
    • move:移动文件或重命名文件。
    • echo:创建空文件。
    • copy:复制文件或目录。

示例代码:

# 列出当前目录下的所有文件
dir

# 创建一个新的目录
mkdir new_directory

# 删除一个空目录
rmdir empty_directory

# 删除文件
del file.txt

# 移动文件到另一个目录
move file.txt new_directory

# 创建一个空文件
echo > new_file.txt
  • 文件权限管理
    • icacls:更改文件权限。
    • takeown:更改文件所有者。
    • net localgroup:添加或删除用户组和用户权限。

示例代码:

# 更改文件权限
icacls file.txt /grant Everyone:F

# 更改文件所有者
takeown /f file.txt

# 添加或删除用户组
net localgroup Administrators /add new_user
  • 用户与权限
    • net user:添加或删除用户。
    • net localgroup:添加或删除用户组。

示例代码:

# 添加新用户
net user newuser password /add

# 删除用户
net user olduser /delete

# 添加新用户组
net localgroup newgroup /add
  • 进程管理
    • tasklist:显示当前运行的进程。
    • taskkill:终止指定的进程。

示例代码:

# 显示当前运行的进程
tasklist

# 终止指定的进程
taskkill /PID 1234
  • 文件压缩与解压
    • compress:压缩文件。
    • expand:解压文件。
    • zip:压缩或解压文件到zip格式。

示例代码:

# 使用compress压缩文件
compress file.txt

# 使用expand解压文件
expand file.txt

# 使用zip压缩文件
zip archive.zip file1 file2

# 使用zip解压文件
unzip archive.zip

常见操作系统安装与配置方法

操作系统安装与配置方法主要包括以下几个步骤:

  • 安装操作系统
    1. 准备安装介质(ISO镜像或USB启动盘)。
    2. 设置BIOS/UEFI启动顺序。
    3. 从安装介质启动。
    4. 按照安装向导完成安装。

示例代码(以Linux Ubuntu为例):

# 使用ISO镜像安装Ubuntu
# 执行以下命令刻录ISO镜像到USB启动盘
sudo dd if=/path/to/ubuntu.iso of=/dev/sdX bs=4M status=progress && sync
# where /dev/sdX 是USB启动盘的设备名
  • 系统配置
    1. 设置用户账户。
    2. 安装必要的软件包。
    3. 配置网络设置。

示例代码(以Linux Ubuntu为例):

# 设置用户账户
sudo adduser newuser

# 安装必要的软件包
sudo apt-get update
sudo apt-get install vim

# 配置网络设置
sudo nano /etc/netplan/01-netcfg.yaml
  • 系统优化
    1. 配置防火墙。
    2. 启用或禁用不必要的服务。
    3. 配置系统定时任务。

示例代码(以Linux Ubuntu为例):

# 配置防火墙
sudo ufw enable
sudo ufw allow 22/tcp

# 启用或禁用服务
sudo systemctl enable ssh
sudo systemctl disable ssh

# 配置系统定时任务
sudo crontab -e
# 添加定时任务
0 0 * * * /path/to/script.sh
网络基础及配置

IP地址与子网掩码

IP地址是一种用于标识网络设备的数字标识符,通常分为IPv4和IPv6两种。IPv4地址由四个八位字节组成(例如192.168.1.1),IPv6地址则由八个16位的十六进制数组成(例如2001:0db8:85a3:0000:0000:8a2e:0370:7334)。

子网掩码用于划分IP地址的网络部分和主机部分。常见的子网掩码有:

  • IPv4:255.255.255.0(表示一个C类网络)
  • IPv6:ffff:ffff:ffff:ffff::(表示一个/64子网)

常见网络协议介绍

网络协议是计算机网络中的通信规则,用于控制数据的传输方式。以下是一些常见的网络协议:

  • TCP/IP

    • TCP(传输控制协议):一种面向连接的、可靠的协议,用于保证数据的正确传输。
    • IP(互联网协议):一种无连接的、不可靠的协议,用于将数据包从源地址传输到目的地址。
    • UDP(用户数据报协议):一种无连接的、不可靠的协议,用于实时传输数据。
  • HTTP/HTTPS

    • HTTP(超文本传输协议):一种用于Web传输的标准协议。
    • HTTPS(安全的HTTP):在HTTP的基础上增加了SSL/TLS加密,确保数据传输的安全性。
  • FTP

    • FTP(文件传输协议):用于在客户端和服务器之间传输文件。
  • DNS
    • DNS(域名系统):用于将域名转换为IP地址。

示例代码(以Linux为例,使用curl命令访问HTTP和HTTPS服务):

# 访问HTTP服务
curl http://example.com

# 访问HTTPS服务
curl https://example.com

网络设备配置及故障排查

网络设备的配置和故障排查是运维人员需要掌握的重要技能。

  • 配置路由器
    • 配置IP地址。
    • 配置子网掩码。
    • 配置默认网关。
    • 配置静态路由。

示例代码(以Cisco路由器为例,配置IP地址和子网掩码):

# 进入全局配置模式
configure terminal

# 配置接口的IP地址和子网掩码
interface GigabitEthernet0/0
ip address 192.168.1.1 255.255.255.0
  • 配置交换机
    • 配置VLAN。
    • 配置端口聚合。
    • 配置STP(生成树协议)。
    • 配置端口安全。

示例代码(以Cisco交换机为例,配置VLAN):

# 进入全局配置模式
configure terminal

# 创建VLAN
vlan 10
name VLAN10

# 将端口添加到VLAN
interface GigabitEthernet0/1
switchport mode access
switchport access vlan 10
  • 故障排查
    • 使用ping命令测试网络连通性。
    • 使用traceroute命令跟踪数据包的传输路径。
    • 使用netstat命令查看网络连接状态。

示例代码(以Linux为例,使用pingtraceroute命令):

# 测试网络连通性
ping 192.168.1.1

# 跟踪数据包的传输路径
traceroute 192.168.1.1
常用服务部署

Web服务 (如Apache, Nginx)

Web服务是为用户提供网页服务的软件,常见的Web服务器包括Apache、Nginx等。

  • Apache
    • 安装
    • 配置
    • 基本操作

示例代码(以Ubuntu为例,安装和配置Apache):

# 安装Apache
sudo apt-get update
sudo apt-get install apache2

# 启动Apache
sudo systemctl start apache2

# 设置Apache开机自启
sudo systemctl enable apache2

# 配置Apache虚拟主机
sudo nano /etc/apache2/sites-available/000-default.conf
# 添加虚拟主机配置
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ServerName example.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# 启用虚拟主机配置
sudo a2ensite 000-default.conf
  • Nginx
    • 安装
    • 配置
    • 基本操作

示例代码(以Ubuntu为例,安装和配置Nginx):

# 安装Nginx
sudo apt-get update
sudo apt-get install nginx

# 启动Nginx
sudo systemctl start nginx

# 设置Nginx开机自启
sudo systemctl enable nginx

# 配置Nginx虚拟主机
sudo nano /etc/nginx/sites-available/default
# 添加虚拟主机配置
server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
}

# 启用虚拟主机配置
sudo systemctl restart nginx

数据库服务 (如MySQL, MongoDB)

数据库服务是用于存储和管理数据的软件。常见的数据库服务包括MySQL、MongoDB等。

  • MySQL
    • 安装
    • 配置
    • 基本操作

示例代码(以Ubuntu为例,安装和配置MySQL):

# 安装MySQL
sudo apt-get update
sudo apt-get install mysql-server

# 启动MySQL
sudo systemctl start mysql

# 设置MySQL开机自启
sudo systemctl enable mysql

# 配置MySQL
sudo mysql_secure_installation
# 会提示设置root密码、删除匿名用户、禁止root远程登录等安全设置

# 登录MySQL
sudo mysql -u root -p
  • MongoDB
    • 安装
    • 配置
    • 基本操作

示例代码(以Ubuntu为例,安装和配置MongoDB):

# 安装MongoDB
sudo apt-get update
sudo apt-get install mongodb

# 启动MongoDB
sudo systemctl start mongod

# 设置MongoDB开机自启
sudo systemctl enable mongod

# 连接MongoDB
mongo

其他常用服务 (如DNS, FTP)

除了Web服务和数据库服务之外,还有其他一些常用的网络服务,如DNS、FTP等。

  • DNS
    • 安装
    • 配置
    • 基本操作

示例代码(以Ubuntu为例,安装和配置DNS服务使用BIND):

# 安装BIND
sudo apt-get update
sudo apt-get install bind9

# 启动BIND
sudo systemctl start bind9

# 设置BIND开机自启
sudo systemctl enable bind9

# 配置BIND
sudo nano /etc/bind/named.conf.local
# 添加DNS记录
zone "example.com" {
    type master;
    file "/etc/bind/db.example.com";
};

sudo nano /etc/bind/db.example.com
# 添加DNS记录
$ORIGIN example.com.
$TTL 86400
@       IN      SOA     ns.example.com. admin.example.com. (
                          2023100101      ; Serial
                          86400           ; Refresh
                          7200            ; Retry
                          3600000         ; Expire
                          86400 )         ; Minimum
        IN      NS      ns.example.com.
ns      IN      A       192.168.1.1
www     IN      A       192.168.1.2
  • FTP
    • 安装
    • 配置
    • 基本操作

示例代码(以Ubuntu为例,安装和配置FTP服务使用vsftpd):

# 安装vsftpd
sudo apt-get update
sudo apt-get install vsftpd

# 启动vsftpd
sudo systemctl start vsftpd

# 设置vsftpd开机自启
sudo systemctl enable vsftpd

# 配置vsftpd
sudo nano /etc/vsftpd.conf
# 修改配置选项
local_enable=YES
write_enable=YES
chroot_local_user=YES
日志管理和监控工具

日志文件基本概念

日志文件是系统运行过程中生成的记录文件,用于记录系统的操作日志、错误信息等。常见的日志文件包括系统日志、应用日志等。系统日志通常位于/var/log目录下,常见的日志文件有syslogauthkern等。

常见日志文件位置及内容

常见的日志文件位置及内容包括:

  • 系统日志

    • /var/log/syslog:系统日志文件,记录系统启动、关机、错误信息等。
    • /var/log/auth.log:用户认证日志文件,记录用户登录、密码认证等信息。
    • /var/log/kern.log:内核日志文件,记录内核错误信息。
  • 应用日志
    • /var/log/apache2/access.log:Apache访问日志文件,记录HTTP请求信息。
    • /var/log/mysql/error.log:MySQL错误日志文件,记录MySQL运行错误信息。

使用监控工具 (如Zabbix, Nagios) 实现系统监控

监控工具用于监控系统的运行状态,常见的监控工具有Zabbix、Nagios等。

  • Zabbix
    • 安装
    • 配置
    • 基本操作

示例代码(以Ubuntu为例,安装和配置Zabbix):

# 安装Zabbix
sudo apt-get update
sudo apt-get install zabbix-server-mysql zabbix-agent zabbix-web-nginx
sudo mysql -u root -p
# 创建数据库
CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

# 初始化数据库
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql zabbix
sudo zcat /usr/share/doc/zabbix-server-mysql*/schema.sql | mysql zabbix
sudo zcat /usr/share/doc/zabbix-server-mysql*/images.sql | mysql zabbix
sudo zcat /usr/share/doc/zabbix-server-mysql*/data.sql | mysql zabbix

# 启动Zabbix
sudo systemctl start zabbix-server
sudo systemctl start zabbix-agent
sudo systemctl start nginx
sudo systemctl enable zabbix-server
sudo systemctl enable zabbix-agent
sudo systemctl enable nginx
  • Nagios
    • 安装
    • 配置
    • 基本操作

示例代码(以Ubuntu为例,安装和配置Nagios):

# 安装Nagios
sudo apt-get update
sudo apt-get install nagios3 nagios-nrpe-plugin

# 启动Nagios
sudo systemctl start nagios3
sudo systemctl start nagios-nrpe-server
sudo systemctl enable nagios3
sudo systemctl enable nagios-nrpe-server

# 配置Nagios
sudo nano /etc/nagios3/conf.d/localhost.cfg
# 添加主机和服务配置
define host {
    use             generic-host
    host_name       localhost
    address         127.0.0.1
    check_command   check-host-alive
    notification_enabled   0
}

define service {
    use             generic-service
    host_name       localhost
    service_description   PING
    check_command   check_ping!100.0,20%!500.0,60%
}

# 其他服务配置
define service {
    use             generic-service
    host_name       localhost
    service_description   Apache
    check_command   check_http!192.168.1.1
}

# 设定警报通知
sudo nano /etc/nagios3/conf.d/localhost.cfg
# 添加警报通知配置
define command {
    command_name    notify-by-email
    command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $HOSTLONGDATETIME$\n" | /bin/mail -s "**$NOTIFICATIONTYPE$ Host Alert** $HOSTNAME$ is $HOSTSTATE$" $CONTACTEMAIL$
}
运维自动化脚本编写

常见脚本语言介绍 (如Shell, Python)

运维自动化脚本编写是运维人员提高工作效率的重要手段。常见的脚本语言包括Shell、Python等。

  • Shell
    • 介绍
    • 基本语法
    • 示例代码

示例代码(Shell脚本示例):

#!/bin/bash

# 变量定义
username="admin"
password="password"

# 输出变量
echo "Username: $username"
echo "Password: $password"

# 条件判断
if [ "$username" == "admin" ]; then
    echo "Welcome admin!"
fi

# 循环
for ((i=1; i<=5; i++)); do
    echo "Loop $i"
done

# 函数定义
function print_message() {
    echo "Hello, $1!"
}

print_message "World"
  • Python
    • 介绍
    • 基本语法
    • 示例代码

示例代码(Python脚本示例):

# 变量定义
username = "admin"
password = "password"

# 输出变量
print("Username:", username)
print("Password:", password)

# 条件判断
if username == "admin":
    print("Welcome admin!")

# 循环
for i in range(1, 6):
    print("Loop", i)

# 函数定义
def print_message(name):
    print("Hello,", name)

print_message("World")

常用命令行工具 (如SSH, SCP)

命令行工具是运维人员常用的工具,用于远程管理和传输文件。常用的命令行工具包括SSH、SCP等。

  • SSH
    • 介绍
    • 基本语法
    • 示例代码

示例代码(SSH示例):

# 连接远程服务器
ssh username@remote_host

# 执行远程命令
ssh username@remote_host 'ls /'

# 确认密码
ssh -o StrictHostKeyChecking=no username@remote_host 'ls /'

# 登录并执行脚本
ssh username@remote_host 'bash -s' < local_script.sh
  • SCP
    • 介绍
    • 基本语法
    • 示例代码

示例代码(SCP示例):

# 不出显进度条
scp local_file.txt username@remote_host:/path/to/destination/file.txt

# 显示进度条
scp -v local_file.txt username@remote_host:/path/to/destination/file.txt

# 递归复制目录
scp -r local_directory username@remote_host:/path/to/destination/directory

编写简单的自动化运维脚本

编写简单的自动化运维脚本有助于提高工作效率,减少手动操作的错误。

示例代码(Shell脚本示例,自动备份文件):

#!/bin/bash

# 变量定义
backup_dir="/path/to/backup"
source_file="/path/to/source/file"

# 创建备份目录(如果不存在)
mkdir -p $backup_dir

# 获取当前日期
current_date=$(date +%Y%m%d_%H%M%S)

# 复制文件到备份目录
cp $source_file $backup_dir/backup_$current_date.txt

# 输出备份信息
echo "Backup complete: $source_file -> $backup_dir/backup_$current_date.txt"

示例代码(Python脚本示例,自动检查磁盘空间):

import os
import psutil

# 获取磁盘使用情况
disk_usage = psutil.disk_usage('/')

# 输出磁盘使用情况
print(f"Total: {disk_usage.total / (1024.0 ** 3):.2f} GB")
print(f"Used: {disk_usage.used / (1024.0 ** 3):.2f} GB")
print(f"Free: {disk_usage.free / (1024.0 ** 3):.2f} GB")

# 检查磁盘空间是否低于阈值
threshold_gb = 10
if disk_usage.free / (1024.0 ** 3) < threshold_gb:
    print("Disk space is low!")

通过以上介绍和示例代码,希望能够帮助运维人员掌握运维基础,提高工作效率。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消