运维是指对软件系统、硬件设备以及网络等进行日常管理、维护、监控和优化的工作,目标是保障系统的稳定运行。运维涵盖了系统监控、维护与修复、配置管理等多个方面,确保系统的安全性、可靠性和性能。运维在整个IT行业中扮演着重要角色,对于确保IT系统能够持续满足业务需求至关重要。
运维(Operational Maintenance,简称OM)是指对软件系统、硬件设备以及网络等进行日常管理、维护、监控和优化的工作。运维的目标是保障系统的稳定运行,提高资源利用率,确保业务连续性。
运维在整个IT行业中扮演着极其重要的角色,它不仅负责维护系统的正常运行,还需要确保系统的安全性、可靠性和性能。运维工作对于确保IT系统能够持续满足业务需求至关重要。
运维的工作内容主要涵盖如下几个方面:
操作系统是计算机系统的基本组成部分,主要负责管理硬件资源和运行应用程序。常用的服务器操作系统有Linux、Windows Server等。
hostnamectl set-hostname new_hostname
passwd root
sudo apt-get update && sudo apt-get install package_name
/etc/ssh/sshd_config
文件,将Port后的端口号修改为新的端口号,例如:Port 2222
,然后重启SSH服务:sudo systemctl restart ssh
安装步骤:
/etc/fstab
:定义文件系统挂载点。/etc/hostname
:定义主机名。/etc/resolv.conf
:定义DNS服务器。/etc/ssh/sshd_config
:配置SSH服务。C:\Windows\System32\drivers\etc\hosts
:定义主机名与IP地址的映射。ps -ef
:列出所有进程。top
:显示系统中占用资源最多的进程。kill <进程ID>
:杀死指定进程。pkill <进程名>
:杀死指定名称的进程。nice <命令>
:设置进程的优先级。renice -n <优先级> -p <进程ID>
:修改进程的优先级。Task Manager
:打开任务管理器,查看当前进程。taskkill /pid <进程ID>
:杀死指定进程。Linux:
cron
:用于定期执行任务的计划任务调度器。crontab -e
:编辑用户级别的crontab文件。cron
配置文件格式示例:
# 分钟 小时 日期 月份 星期 命令 0 2 * * * /usr/local/bin/my_script.sh
anacron
:用于不常运行的系统维护任务,例如每周备份或清理临时文件。at
:用于一次性执行任务,例如:at now + 3 hours
。schtasks
:命令行工具,用于计划任务。任务计划程序
:图形界面工具,用于管理计划任务。schtasks /create /tn "MyTask" /tr "C:\my_script.bat" /sc monthly /mo first /st 08:00
Linux:
top
:显示系统资源占用情况。htop
:交互式进程查看器,更方便地监视系统。iostat
:显示磁盘I/O统计信息。netstat
:显示网络连接。ss
:显示套接字信息。vmstat
:显示虚拟内存统计信息。sar
:系统活动报告,用于长期监控系统性能。nmon
:网络和其他监控工具。Task Manager
:查看CPU、内存、磁盘、网络等资源使用情况。Performance Monitor
:性能监视器,用于长期监控系统性能。Network Monitor
:网络监视器,用于监控网络连接。Resource Monitor
:资源监视器,用于查看资源使用情况。Event Viewer
:事件查看器,用于查看系统日志。/var/log/
:系统日志目录,包含以下日志文件:auth.log
:认证日志。syslog
:系统日志。messages
:消息日志。kern.log
:内核日志。apache2/error.log
:Apache错误日志。C:\Windows\System32\winevt\LogFiles
:系统日志目录,包含以下日志文件:Application.evtx
:应用程序日志。Security.evtx
:安全日志。System.evtx
:系统日志。Setup.evtx
:安装日志。ForwardedEvents.evtx
:转发事件日志。grep
:搜索日志文件。awk
:处理日志文件。logrotate
:日志文件管理工具。rsyslog
:日志转发工具。Event Viewer
:事件查看器,用于查看和分析系统日志。Log Parser
:日志解析工具。PowerShell
:用于分析日志的脚本语言。grep
和awk
分析Linux日志# 使用grep搜索错误日志 grep "error" /var/log/syslog # 使用awk提取Apache访问日志中的IP地址和URL awk '{print $1, $7}' /var/log/apache2/access.log
Apache是最常用的Web服务器软件之一,可以提供静态文件服务、动态内容等。
安装:
sudo apt-get install apache2
(Debian/Ubuntu)sudo yum install httpd
(CentOS/RHEL)/etc/apache2/apache2.conf
。DocumentRoot
:设置文档根目录。ServerName
:设置服务器名称。Listen
:设置监听端口。Directory
:设置目录访问权限。<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>
Nginx是一款高性能、高并发的Web服务器,可以提供静态文件服务、反向代理和负载均衡等功能。
安装:
sudo apt-get install nginx
(Debian/Ubuntu)sudo yum install nginx
(CentOS/RHEL)配置:
/etc/nginx/nginx.conf
。server
:定义虚拟主机。listen
:设置监听端口。server_name
:设置服务器名称。root
:设置文档根目录。location
:设置URL匹配规则。示例配置文件:
server { listen 80; server_name example.com; root /usr/share/nginx/html; index index.html; location / { try_files $uri $uri/ =404; } }
sudo service apache2 start
(启动)sudo service apache2 stop
(停止)sudo systemctl start nginx
(启动)sudo systemctl stop nginx
(停止)/var/log/apache2
,常见的文件有access.log
和error.log
。/var/log/nginx
,常见的文件有access.log
和error.log
。# 启动Apache sudo service apache2 start # 停止Apache sudo service apache2 stop # 启动Nginx sudo systemctl start nginx # 停止Nginx sudo systemctl stop nginx
MySQL是一款关系型数据库管理系统,适用于小到中型的应用程序。
安装:
sudo apt-get install mysql-server
(Debian/Ubuntu)sudo yum install mariadb-server
(CentOS/RHEL)/etc/mysql/my.cnf
。datadir
:设置数据文件目录。socket
:设置套接字文件路径。port
:设置监听端口。[mysqld] datadir=/var/lib/mysql socket=/var/run/mysqld/mysqld.sock port=3306
PostgreSQL是一款开源的关系型数据库管理系统,支持复杂的数据类型和事务处理。
安装:
sudo apt-get install postgresql
(Debian/Ubuntu)sudo yum install postgresql-server
(CentOS/RHEL)/etc/postgresql/<version>/main/postgresql.conf
。data_directory
:设置数据文件目录。port
:设置监听端口。listen_addresses
:设置监听地址。data_directory = '/var/lib/postgresql/<version>/main' port = 5432 listen_addresses = 'localhost'
sudo service mysql start
(启动)sudo service mysql stop
(停止)sudo systemctl start postgresql
(启动)sudo systemctl stop postgresql
(停止)/var/log/mysql/error.log
。/var/log/postgresql/postgresql-<version>-main.log
。# 启动MySQL sudo service mysql start # 停止MySQL sudo service mysql stop # 启动PostgreSQL sudo systemctl start postgresql # 停止PostgreSQL sudo systemctl stop postgresql
FTP(文件传输协议)用于在网络上进行文件传输。
安装:
sudo apt-get install vsftpd
(Debian/Ubuntu)sudo yum install vsftpd
(CentOS/RHEL)配置:
/etc/vsftpd.conf
。anonymous_enable
:允许匿名用户登录。local_enable
:允许本地用户登录。write_enable
:允许写入文件。anon_root
:设置匿名用户的根目录。local_root
:设置本地用户的根目录。anonymous_enable=NO local_enable=YES write_enable=YES local_root=/var/ftp
sudo service vsftpd start
(启动)sudo service vsftpd stop
(停止)SFTP(SSH文件传输协议)是基于SSH的安全文件传输方式。
安装:
sudo apt-get install openssh-server
(Debian/Ubuntu)sudo yum install openssh-server
(CentOS/RHEL)配置:
/etc/ssh/sshd_config
。Subsystem
:设置SFTP子系统。Match
:设置匹配规则。Subsystem sftp internal-sftp Match User user1 ForceCommand internal-sftp
sudo systemctl start sshd
(启动)sudo systemctl stop sshd
(停止)# 安装vsftpd sudo apt-get install vsftpd # 安装openssh-server sudo apt-get install openssh-server # 配置vsftpd.conf echo 'anonymous_enable=NO' | sudo tee -a /etc/vsftpd.conf echo 'local_enable=YES' | sudo tee -a /etc/vsftpd.conf echo 'write_enable=YES' | sudo tee -a /etc/vsftpd.conf echo 'local_root=/var/ftp' | sudo tee -a /etc/vsftpd.conf sudo service vsftpd restart # 配置sshd_config sudo sed -i 's/#Subsystem\ssftp/Subsystem\ssftp/g' /etc/ssh/sshd_config sudo sed -i '/Match User user1/a ForceCommand internal-sftp' /etc/ssh/sshd_config sudo systemctl restart sshd
/etc/network/interfaces
,添加静态IP配置:
auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1
/etc/network/interfaces
,添加动态IP配置:
auto eth0 iface eth0 inet dhcp
# 设置Linux静态IP地址 sudo nano /etc/network/interfaces # 添加以下内容 auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 sudo service networking restart # 设置Windows静态IP地址 # 打开“网络连接”,选择“本地连接” # 右键点击“属性”,选择“Internet协议版本4 (TCP/IPv4)” # 点击“使用以下IP地址”,填写IP地址、子网掩码和网关
DNS(域名系统)是将域名转换为IP地址的系统。DNS服务器存储域名与IP地址的映射关系,客户端通过DNS服务器查询域名对应的IP地址。
/etc/resolv.conf
文件,添加DNS服务器地址,例如:
nameserver 8.8.8.8 nameserver 8.8.4.4
# 设置Linux DNS服务器地址 sudo nano /etc/resolv.conf # 添加以下内容 nameserver 8.8.8.8 nameserver 8.8.4.4 # 设置Windows DNS服务器地址 # 打开“控制面板” > “网络和互联网” > “网络连接” # 选择“本地连接”或“无线网络连接” # 右键点击连接,选择“属性” # 选择“Internet协议版本4 (TCP/IPv4)” # 点击“使用以下DNS服务器地址”,填写首选DNS服务器地址和备用DNS服务器地址
ping
:检查网络连接。traceroute
:显示数据包到达目的地经过的路径。netstat
:显示网络连接、路由表、接口统计等信息。iftop
:显示网络接口带宽。wireshark
:网络抓包工具。ping
:检查网络连接。tracert
:显示数据包到达目的地经过的路径。netstat
:显示网络连接、路由表、接口统计等信息。Resource Monitor
:资源监视器,显示网络带宽使用情况。Wireshark
:网络抓包工具。ping
和netstat
进行网络监控# 使用ping检查网络连接 ping -c 4 www.example.com # 使用netstat查看网络连接 netstat -tunlp
sudo ifconfig
或ip addr show
。sudo cat /etc/network/interfaces
。ping
和nslookup
测试域名解析。Docker是一种容器化技术,可以将应用程序及其依赖项打包成一个轻量级、可移植的容器,实现应用程序的快速部署和管理。
sudo apt-get install docker.io
(Debian/Ubuntu)sudo yum install docker
(CentOS/RHEL)docker run
:运行容器。docker build
:构建镜像。docker pull
:拉取镜像。docker push
:推送镜像。docker ps
:查看正在运行的容器。docker images
:查看本地镜像。docker exec
:在容器中执行命令。docker stop
:停止容器。docker rm
:删除容器。docker rmi
:删除镜像。docker volume
:管理Docker卷。# 构建Docker镜像 # 编写Dockerfile FROM ubuntu:latest RUN apt-get update && apt-get install -y nginx CMD ["nginx", "-g", "daemon off;"] # 构建镜像 docker build -t my-nginx . # 运行容器 docker run -d -p 8080:80 --name my-nginx my-nginx
Ansible是一种自动化运维工具,可以通过配置文件或剧本(Playbooks)来实现自动化部署、配置、任务执行等。
sudo apt-get install ansible
(Debian/Ubuntu)sudo yum install ansible
(CentOS/RHEL)Playbooks剧本:定义任务执行顺序和配置内容。
[webservers] web1.example.com web2.example.com
[dbservers]
db1.example.com
db2.example.com
- 示例Playbook剧本: ```yaml - name: Install and configure web server hosts: webservers tasks: - name: Install nginx apt: name: nginx state: present - name: Start nginx service: name: nginx state: started
ansible
:执行单个任务。ansible-playbook
:执行Playbook剧本。ansible-doc
:查看模块文档。ansible-galaxy
:管理角色(Roles)。# 编写Inventory文件 cat << EOF > inventory [webservers] web1.example.com web2.example.com EOF # 编写Playbook剧本 cat << EOF > playbook.yml - name: Install and configure web server hosts: webservers tasks: - name: Install nginx apt: name: nginx state: present - name: Start nginx service: name: nginx state: started EOF # 执行Playbook剧本 ansible-playbook -i inventory playbook.yml
Jenkins是一个开源的持续集成(CI)工具,用于自动构建、测试和部署软件。
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ >/etc/apt/sources.list.d/jenkins.list'
sudo apt-get update && sudo apt-get install jenkins
Jenkins CLI
:命令行界面,可用于脚本化操作。Jenkins Pipeline
:流水线插件,用于定义复杂的构建流程。// Jenkinsfile pipeline { agent any environment { JDK_HOME = '/usr/lib/jvm/java-8-openjdk-amd64' } stages { stage('Checkout') { steps { git 'https://github.com/user/repo.git' } } stage('Compile') { steps { sh 'mvn clean compile' } } stage('Test') { steps { sh 'mvn test' } } stage('Deploy') { steps { sh 'mvn package' sh "scp target/*.jar user@server:/path/to/deploy" } } } }
ufw
(Linux):sudo ufw enable
启用防火墙,sudo ufw allow 22
允许SSH端口。Windows防火墙
:在“控制面板” > “Windows防火墙”中设置规则。chmod
和chown
命令设置文件和目录权限。# 启用ufw防火墙 sudo ufw enable # 允许SSH端口 sudo ufw allow 22/tcp # 允许HTTP端口 sudo ufw allow 80/tcp # 允许HTTPS端口 sudo ufw allow 443/tcp
# 创建备份目录 mkdir /backup # 使用rsync备份文件 rsync -avz /source/directory /backup/directory # 使用crontab定期执行备份任务 cat << EOF > /etc/cron.daily/backup #!/bin/bash rsync -avz /source/directory /backup/directory EOF chmod +x /etc/cron.daily/backup
X-XSS-Protection
。X-Frame-Options
。# 安装Fail2Ban sudo apt-get install fail2ban # 编辑jail.local配置文件 sudo nano /etc/fail2ban/jail.local # 添加以下内容 [sshd] enabled = true banaction = iptables-multiport port = ssh logpath = /var/log/auth.log maxretry = 3 # 重启Fail2Ban服务 sudo service fail2ban restart
通过以上步骤,可以确保系统及服务器的安全设置,并维护数据的安全与备份。