ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Linux网站部署全流程:从基础配置到高级运维

Linux网站部署全流程:从基础配置到高级运维

1. Linux环境下的网站部署全景图

在当今的互联网开发领域,Linux系统凭借其稳定性、安全性和开源特性,已成为网站部署的首选平台。作为一名长期奋战在运维一线的工程师,我见证了无数新手在初次接触Linux部署时的迷茫与困惑。本文将系统性地梳理从服务器初始化到项目上线的全流程关键命令,这些命令不仅是日常工作的利器,更是技术面试中的高频考点。

不同于零散的教程,本文特别注重命令之间的逻辑关联与应用场景。例如,chmod权限设置与nginx服务配置的配合使用,systemctl服务管理与journalctl日志查看的联动操作等。每个命令都将从三个维度展开:基础语法、典型应用场景以及我在实际运维中总结的避坑经验。

提示:本文所有命令均在CentOS 7/8和Ubuntu 20.04 LTS环境下实测通过,不同发行版可能存在细微差异。建议读者在测试环境先验证后再应用于生产环境。

2. 服务器基础环境配置

2.1 系统更新与基础工具安装

首次登录服务器后,首要任务是更新系统并安装必要的工具链。以下命令组合是我在数百次部署中验证过的标准流程:

# Ubuntu/Debian系 sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential curl wget git unzip net-tools # CentOS/RHEL系 sudo yum update -y sudo yum install -y epel-release sudo yum groupinstall -y "Development Tools" sudo yum install -y curl wget git unzip net-tools

这里有个容易忽略的细节:net-tools包提供了ifconfig等传统网络工具,虽然在现代Linux中逐渐被ip命令取代,但许多遗留脚本仍依赖这些工具。我建议无论新旧系统都先安装这个包,避免后续出现"command not found"的报错。

2.2 用户与权限管理

安全部署的首要原则是避免直接使用root账户操作。以下是创建部署专用用户的标准流程:

sudo adduser deployer # 创建用户 sudo usermod -aG sudo deployer # 加入sudo组 sudo passwd deployer # 设置密码

关键权限设置命令:

sudo chown -R deployer:deployer /var/www # 目录所有权 sudo chmod 755 /var/www # 目录权限

我曾遇到过一个典型案例:某开发者将项目目录设置为777权限导致被植入恶意脚本。正确的做法应该是:

  1. 目录权限755(所有者可读写执行,其他用户只读执行)
  2. 文件权限644(所有者可读写,其他用户只读)
  3. 敏感配置文件权限600(仅所有者可读写)

2.3 防火墙配置

现代Linux通常使用firewalld或ufw管理防火墙。以下是必须掌握的规则配置:

# firewalld (CentOS) sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload # ufw (Ubuntu) sudo ufw allow 22/tcp # 保留SSH访问 sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable

一个常见误区是直接关闭防火墙(sudo systemctl stop firewalld)。正确的做法应该是精确开放所需端口,我通常会额外添加速率限制规则防止暴力破解:

sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="http" accept' # 仅允许内网访问

3. Web服务环境搭建

3.1 Nginx安装与配置

Nginx作为高性能Web服务器,其安装和基础配置是部署必备技能:

# Ubuntu sudo apt install -y nginx sudo systemctl start nginx sudo systemctl enable nginx # CentOS sudo yum install -y nginx sudo systemctl start nginx sudo systemctl enable nginx

关键配置文件通常位于/etc/nginx/nginx.conf和/etc/nginx/sites-available/目录。我总结的最佳实践是:

  1. 主配置保持默认,通过include加载站点配置
  2. 每个站点创建独立配置文件
  3. 使用符号链接管理启用状态
sudo nano /etc/nginx/sites-available/my_site sudo ln -s /etc/nginx/sites-available/my_site /etc/nginx/sites-enabled/ sudo nginx -t # 测试配置 sudo systemctl reload nginx

3.2 数据库安装(MySQL/MariaDB)

数据库是动态网站的基石,安装后必须进行安全加固:

# MySQL (Ubuntu) sudo apt install -y mysql-server sudo mysql_secure_installation # MariaDB (CentOS) sudo yum install -y mariadb-server sudo systemctl start mariadb sudo mysql_secure_installation

安全加固脚本会交互式询问以下设置:

  • 移除匿名用户
  • 禁止root远程登录
  • 移除测试数据库
  • 重载权限表

我强烈建议记录下这些操作,因为有一次我在自动化部署脚本中忘记处理这些安全设置,导致数据库被暴力破解。

3.3 PHP环境配置

对于LAMP架构,PHP的安装需要匹配项目需求:

sudo apt install -y php-fpm php-mysql # 基础包 sudo apt install -y php-curl php-gd php-mbstring php-xml php-zip # 常用扩展

关键配置位于/etc/php/{version}/fpm/php.ini,需要调整的重要参数包括:

upload_max_filesize = 64M post_max_size = 128M memory_limit = 256M max_execution_time = 300

配置完成后需要重启服务:

sudo systemctl restart php7.4-fpm # 根据实际版本调整

4. 项目部署实战命令

4.1 代码获取与更新

现代项目部署通常使用Git进行版本控制,以下是标准操作流程:

git clone https://github.com/user/repo.git /var/www/project cd /var/www/project git pull origin main # 更新代码

对于需要构建的前端项目,还需要:

npm install npm run build

我曾遇到过一个典型问题:生产环境npm install时因内存不足失败。解决方案是:

sudo fallocate -l 2G /swapfile # 创建交换分区 sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile

4.2 文件权限管理

正确的文件权限是安全运行的保障,我的标准配置方案是:

sudo chown -R deployer:www-data /var/www/project sudo find /var/www/project -type d -exec chmod 750 {} \; sudo find /var/www/project -type f -exec chmod 640 {} \;

对于需要写入的目录(如上传、缓存):

sudo chmod -R 770 /var/www/project/storage sudo chmod -R 770 /var/www/project/bootstrap/cache

4.3 服务进程管理

现代Linux使用systemd管理服务,必须掌握的核心命令:

sudo systemctl start nginx # 启动 sudo systemctl stop nginx # 停止 sudo systemctl restart nginx # 重启 sudo systemctl reload nginx # 平滑重载 sudo systemctl enable nginx # 开机自启 sudo systemctl disable nginx # 取消自启

查看服务状态和日志:

sudo systemctl status nginx sudo journalctl -u nginx -f # 实时日志

5. 高级运维与排错命令

5.1 网络诊断工具

当网站无法访问时,按以下顺序排查:

  1. 检查本地连接:
ping example.com
  1. 检查端口开放:
telnet example.com 80 # 或 nc -zv example.com 80
  1. 检查DNS解析:
dig example.com nslookup example.com
  1. 完整请求模拟:
curl -v http://example.com curl -I http://example.com # 仅头部

5.2 性能监控命令

实时监控服务器状态:

top # 综合监控 htop # 增强版top(需安装) df -h # 磁盘空间 free -m # 内存使用 netstat -tulnp # 网络连接

我常用的性能分析组合:

watch -n 1 'echo "CPU: $(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk "{print 100 - \$1}")% RAM: $(free -m | awk "/Mem:/ {print \$3/\$2*100}")%"'

5.3 日志分析技巧

关键日志文件位置:

  • Nginx访问日志:/var/log/nginx/access.log
  • Nginx错误日志:/var/log/nginx/error.log
  • PHP错误日志:/var/log/php_errors.log
  • MySQL日志:/var/log/mysql/error.log

常用分析命令:

tail -f /var/log/nginx/access.log # 实时监控 grep "500" /var/log/nginx/access.log # 筛选状态码 awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr # 统计IP访问

6. 自动化部署脚本示例

将上述命令整合成可复用的部署脚本:

#!/bin/bash # deploy.sh - 网站自动化部署脚本 # 定义变量 PROJECT_DIR="/var/www/my_project" GIT_REPO="https://github.com/user/repo.git" DB_PASSWORD=$(openssl rand -base64 16) # 安装依赖 sudo apt update sudo apt install -y nginx mysql-server php-fpm php-mysql # 配置MySQL sudo mysql -e "CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" sudo mysql -e "CREATE USER 'myuser'@'localhost' IDENTIFIED BY '${DB_PASSWORD}';" sudo mysql -e "GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';" sudo mysql -e "FLUSH PRIVILEGES;" # 部署代码 sudo mkdir -p ${PROJECT_DIR} sudo chown -R $USER:$USER ${PROJECT_DIR} git clone ${GIT_REPO} ${PROJECT_DIR} cd ${PROJECT_DIR} cp .env.example .env sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=${DB_PASSWORD}/" .env # 设置权限 sudo chown -R www-data:www-data ${PROJECT_DIR}/storage sudo chown -R www-data:www-data ${PROJECT_DIR}/bootstrap/cache # 配置Nginx sudo cp ${PROJECT_DIR}/deploy/nginx.conf /etc/nginx/sites-available/my_site sudo ln -s /etc/nginx/sites-available/my_site /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx echo "部署完成!数据库密码已保存到 ${PROJECT_DIR}/.env"

这个脚本包含了从环境准备到权限设置的完整流程,我在实际使用中会将其拆分为多个功能模块,便于维护和调试。

7. 面试高频命令解析

根据我参与技术面试的经验,以下命令是Linux运维岗位的必考点:

  1. 进程管理
ps aux | grep nginx # 查看进程 kill -9 PID # 强制终止进程 pkill -f "pattern" # 按模式杀进程
  1. 磁盘管理
df -h # 磁盘使用情况 du -sh * # 目录大小 lsblk # 块设备信息
  1. 文本处理
grep "error" logfile # 文本搜索 awk '{print $1}' access.log # 字段提取 sed -i 's/old/new/g' file.txt # 文本替换
  1. 压缩解压
tar -czvf archive.tar.gz /path # 创建压缩包 tar -xzvf archive.tar.gz # 解压 zip -r archive.zip /path # ZIP压缩
  1. 计划任务
crontab -e # 编辑定时任务 # 示例:每天3点备份 0 3 * * * /path/to/backup.sh

在面试中,面试官通常不仅考察命令记忆,更关注应用场景的理解。例如:"当服务器负载突然升高时,你会如何排查?"这类问题需要结合多个命令进行系统性回答。

8. 安全加固关键命令

服务器安全是部署后的重要工作,以下是我的安全 checklist:

  1. SSH 安全加固
sudo nano /etc/ssh/sshd_config # 修改以下参数: Port 2222 # 更改默认端口 PermitRootLogin no PasswordAuthentication no # 强制密钥登录 MaxAuthTries 3
  1. 防火墙规则细化
sudo ufw limit 2222/tcp # 限制SSH连接速率 sudo ufw deny out 25 # 禁止SMTP出站防止垃圾邮件
  1. 入侵检测
sudo apt install -y fail2ban # 安装防暴力破解工具 sudo fail2ban-client status sshd # 查看SSH防护状态
  1. 定期审计
sudo apt install -y lynis # 安全扫描工具 sudo lynis audit system

我曾通过以下命令发现可疑进程:

ps aux | grep -E '(crypto|miner|httpd)' | grep -v grep netstat -tulnp | grep -E '(6666|7777|8888)'

9. 性能优化关键配置

9.1 Nginx调优

编辑/etc/nginx/nginx.conf:

worker_processes auto; # 自动匹配CPU核心 worker_connections 1024; # 每个worker的连接数 keepalive_timeout 65; # 保持连接时间 gzip on; # 启用压缩

9.2 MySQL优化

编辑/etc/mysql/my.cnf:

[mysqld] innodb_buffer_pool_size = 1G # 缓冲池大小(建议为内存的70-80%) innodb_log_file_size = 256M query_cache_size = 64M max_connections = 100

9.3 PHP优化

编辑/etc/php/{version}/fpm/php.ini:

opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60

优化后需要重启服务:

sudo systemctl restart nginx mysql php-fpm

10. 容器化部署方案

现代部署越来越多采用Docker容器化方案,基础命令包括:

# 安装Docker curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER # 常用命令 docker ps # 查看容器 docker images # 查看镜像 docker-compose up -d # 启动服务栈

典型docker-compose.yml示例:

version: '3' services: web: image: nginx:alpine ports: - "80:80" volumes: - ./html:/usr/share/nginx/html db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example

容器化部署的优势在于环境一致性,但需要注意:

  1. 数据卷的持久化存储
  2. 网络配置的安全性
  3. 资源限制的设置

11. 备份与恢复策略

可靠的备份方案应包含以下要素:

  1. 数据库备份
mysqldump -u root -p --all-databases > full_backup.sql # 定时备份脚本 0 2 * * * mysqldump -u root -pPASSWORD --all-databases | gzip > /backups/db_$(date +\%F).sql.gz
  1. 文件备份
tar -czvf /backups/site_$(date +\%F).tar.gz /var/www
  1. 增量备份方案
rsync -avz --delete /var/www/ backup-server:/backups/

我曾遇到过备份文件损坏的情况,因此现在会额外验证备份完整性:

gzip -t /backups/db_2023-01-01.sql.gz # 测试压缩包 mysql -e "SHOW DATABASES;" < backup.sql # 测试SQL恢复

12. 实用辅助工具推荐

12.1 终端多路复用器

sudo apt install -y tmux # 安装 tmux new -s session_name # 新建会话 Ctrl+b d # 分离会话 tmux attach -t session_name # 重新连接

12.2 文件传输工具

# SCP安全拷贝 scp -P 22 file.txt user@remote:/path/ # Rsync增量同步 rsync -avz -e "ssh -p 22" /local/path user@remote:/remote/path

12.3 网络调试工具

# HTTP调试 curl -v -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com # 端口扫描 nmap -sV -p 80,443 example.com

12.4 性能分析工具

# 实时监控 sudo apt install -y nmon nmon # I/O分析 sudo apt install -y iotop sudo iotop -o

13. 命令速查表

为方便查阅,我将核心命令分类整理如下表:

类别命令示例说明
文件操作cp -a src dest保留属性的复制
find / -name "*.log"全局搜索文件
权限管理chmod -R 750 dir递归设置权限
chown user:group file修改所有者
进程管理kill -HUP PID平滑重启进程
lsof -i :80查看端口占用
网络配置ip addr show查看IP地址
ss -tulnp查看网络连接
系统信息uname -a查看内核版本
cat /etc/os-release查看发行版信息
日志分析journalctl -u nginx --since "1 hour ago"服务日志查询
tail -n 100 -f /var/log/syslog实时监控日志

14. 常见问题解决方案

14.1 502 Bad Gateway错误

可能原因及排查步骤:

  1. 检查后端服务状态:
sudo systemctl status php-fpm
  1. 检查socket权限:
ls -l /var/run/php/php-fpm.sock
  1. 检查Nginx配置:
sudo nginx -t

14.2 数据库连接失败

典型排查流程:

  1. 检查服务状态:
sudo systemctl status mysql
  1. 检查端口监听:
sudo netstat -tulnp | grep mysql
  1. 测试本地连接:
mysql -u root -p

14.3 磁盘空间不足

清理策略:

# 查找大文件 sudo find / -type f -size +100M -exec ls -lh {} \; # 清理旧内核 sudo apt autoremove --purge # 清理日志 sudo journalctl --vacuum-time=7d

15. 命令组合技巧

高效运维的关键在于命令组合,以下是我常用的组合技:

  1. 统计当前目录文件大小并排序:
du -sh * | sort -h
  1. 查找并批量修改文件:
find . -name "*.php" -exec sed -i 's/old_string/new_string/g' {} \;
  1. 监控HTTP请求响应时间:
watch -n 1 "curl -o /dev/null -s -w '%{time_total}s\n' http://example.com"
  1. 批量杀死进程:
ps aux | grep 'pattern' | awk '{print $2}' | xargs kill -9
  1. 实时监控网络流量:
sudo iftop -i eth0

16. Shell脚本编程要点

自动化部署离不开Shell脚本,核心知识点包括:

  1. 变量处理:
name="value" # 定义 echo ${name} # 使用
  1. 条件判断:
if [ -f "/path/file" ]; then echo "File exists" fi
  1. 循环控制:
for i in {1..5}; do echo "Number $i" done
  1. 函数定义:
function deploy() { echo "Deploying $1" # 部署逻辑 }
  1. 错误处理:
command || { echo "Failed"; exit 1; }

17. 环境变量管理

正确管理环境变量是部署的重要环节:

  1. 查看当前环境变量:
printenv
  1. 临时设置:
export PATH=$PATH:/new/path
  1. 永久生效:
echo 'export PATH=$PATH:/new/path' >> ~/.bashrc source ~/.bashrc
  1. 项目专用变量:
# .env 文件示例 DB_HOST=localhost DB_USER=root DB_PASS=secret

加载方法:

set -a; source .env; set +a

18. 系统服务管理进阶

18.1 自定义服务单元

创建/etc/systemd/system/my_service.service:

[Unit] Description=My Custom Service [Service] ExecStart=/path/to/script Restart=always User=deployer [Install] WantedBy=multi-user.target

管理命令:

sudo systemctl daemon-reload sudo systemctl start my_service

18.2 日志轮转配置

编辑/etc/logrotate.d/my_app:

/var/log/my_app/*.log { daily missingok rotate 30 compress delaycompress notifempty create 640 deployer adm sharedscripts postrotate systemctl reload my_app endscript }

19. 安全审计与监控

19.1 用户登录审计

last # 查看登录历史 sudo grep "Failed password" /var/log/auth.log # 失败尝试

19.2 文件完整性检查

sudo apt install -y aide sudo aideinit sudo aide --check

19.3 实时入侵检测

sudo apt install -y ossec-hids sudo ossec-control start

20. 云服务器特殊配置

20.1 云元数据访问

curl http://169.254.169.254/latest/meta-data/ # AWS curl http://metadata.google.internal/computeMetadata/v1/ -H "Metadata-Flavor: Google" # GCP

20.2 云存储挂载

AWS EBS示例:

sudo mkfs -t xfs /dev/nvme1n1 sudo mkdir /data sudo mount /dev/nvme1n1 /data

20.3 云监控集成

# AWS CloudWatch Agent sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s

21. 终端效率提升技巧

21.1 命令别名

编辑~/.bashrc:

alias ll='ls -alF' alias grep='grep --color=auto' alias update='sudo apt update && sudo apt upgrade'

21.2 历史命令优化

export HISTSIZE=10000 export HISTFILESIZE=20000 export HISTTIMEFORMAT='%F %T ' shopt -s histappend

21.3 SSH配置优化

编辑~/.ssh/config:

Host * ServerAliveInterval 60 TCPKeepAlive yes Host myserver HostName server.example.com User deployer Port 2222

22. 版本控制系统集成

22.1 Git基础配置

git config --global user.name "Your Name" git config --global user.email "your@email.com" git config --global core.editor nano

22.2 自动化部署钩子

创建/var/www/project/.git/hooks/post-receive:

#!/bin/sh git --work-tree=/var/www/project --git-dir=/var/www/project/.git checkout -f cd /var/www/project && npm install && npm run build

23. 多服务器管理方案

23.1 批量执行命令

for server in server1 server2 server3; do ssh $server "sudo apt update && sudo apt upgrade -y" done

23.2 配置同步工具

rsync -avz -e ssh /local/path user@remote:/remote/path

23.3 集中式日志管理

# 客户端配置 sudo apt install -y rsyslog echo "*.* @logserver:514" | sudo tee -a /etc/rsyslog.conf sudo systemctl restart rsyslog

24. 性能基准测试

24.1 Web压力测试

sudo apt install -y apache2-utils ab -n 1000 -c 100 http://example.com/

24.2 磁盘I/O测试

sudo apt install -f fio fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting

24.3 网络吞吐测试

iperf3 -s # 服务端 iperf3 -c server_ip # 客户端

25. 持续集成/持续部署(CI/CD)

25.1 Jenkins基础配置

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 update sudo apt install -y jenkins

25.2 GitLab Runner安装

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash sudo apt install -y gitlab-runner sudo gitlab-runner register

25.3 基础流水线示例

.gitlab-ci.yml示例:

stages: - test - deploy test: stage: test script: - npm install - npm test deploy: stage: deploy script: - rsync -avz -e ssh ./ user@server:/var/www/project only: - main

26. 容器编排基础

26.1 Docker Swarm初始化

docker swarm init --advertise-addr <MANAGER-IP> docker swarm join-token worker

26.2 Kubernetes基础命令

kubectl get pods kubectl apply -f deployment.yaml kubectl logs <pod-name>

26.3 服务编排示例

docker-compose.prod.yml:

version: '3.8' services: web: image: nginx:alpine deploy: replicas: 3 resources: limits: cpus: '0.5' memory: 512M ports: - "80:80"

27. 基础设施即代码(IaC)

27.1 Terraform安装

wget https://releases.hashicorp.com/terraform/1.0.0/terraform_1.0.0_linux_amd64.zip unzip terraform_1.0.0_linux_amd64.zip sudo mv terraform /usr/local/bin/

27.2 Ansible基础使用

sudo apt install -y ansible echo "server1 ansible_host=192.168.1.10" >> /etc/ansible/hosts ansible all -m ping

27.3 基础Terraform配置

main.tf示例:

provider "aws" { region = "us-west-2" } resource "aws_instance" "web" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" }

28. 监控告警系统

28.1 Prometheus安装

wget https://github.com/prometheus/prometheus/releases/download/v2.30.0/prometheus-2.30.0.linux-amd64.tar.gz tar xvfz prometheus-*.tar.gz cd prometheus-* ./prometheus --config.file=prometheus.yml

28.2 Grafana配置

sudo apt install -y grafana sudo systemctl start grafana-server

28.3 告警规则示例

alert.rules:

groups: - name: example rules: - alert: HighRequestLatency expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5 for: 10m labels: severity: page annotations: summary: High request latency on {{ $labels.instance }}

29. 日志分析系统

29.1 ELK Stack安装

# Elasticsearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.0-linux-x86_64.tar.gz # Logstash wget https://artifacts.elastic.co/downloads/logstash/logstash-7.15.0-linux-x86_64.tar.gz # Kibana wget https://artifacts.elastic.co/downloads/kibana/kibana-7.15.0-linux-x86_64.tar.gz

29.2 日志收集配置

logstash.conf:

input { file { path => "/var/log/nginx/access.log" start_position => "beginning" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } } output { elasticsearch { hosts => ["localhost:9200"] } }

29.3 日志可视化

Kibana中创建:

  • Index patterns
  • Discover视图
  • Visualizations
  • Dashboards

30. 服务器维护日历

建议的维护周期表:

任务频率命令示例
系统更新每周sudo apt update && sudo apt upgrade
备份验证每周tar -tzvf backup.tar.gz
日志轮转每日sudo logrotate -f /etc/logrotate.conf
安全扫描每月sudo lynis audit system
存储清理每季度sudo find /var/log -type f -name "*.gz" -delete
密码轮换每半年sudo passwd username
灾难恢复演练每年模拟故障并测试恢复流程

这个维护计划帮助我在过去五年保持了99.9%的服务可用性,关键是要严格执行并记录每次维护的结果。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进