温馨提示×

LNMP在Debian上的自动化运维

小樊
31
2025-12-10 20:30:08
栏目: 智能运维

LNMP在Debian上的自动化运维实践

一、部署与配置自动化

  • 基础安装与开机自启
    • 更新索引并升级系统:sudo apt update && sudo apt upgrade -y
    • 安装并启动 Nginxsudo apt install nginx -y && sudo systemctl enable --now nginx
    • 安装并启动 MariaDBsudo apt install mariadb-server -y && sudo systemctl enable --now mariadb,随后执行 sudo mysql_secure_installation 完成安全加固
    • 安装 PHP 与 PHP-FPM(以 PHP 8.2 为例):sudo apt install php8.2 php8.2-fpm php8.2-mysql -y && sudo systemctl enable --now php8.2-fpm
  • Nginx 与 PHP-FPM 联动
    • 编辑站点配置(如:/etc/nginx/sites-available/default),确保包含:
      • index index.php index.html;
      • PHP 处理段:
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        }
        location ~ /\.ht { deny all; }
        
    • 语法检查与重载:sudo nginx -t && sudo systemctl reload nginx
  • 一键与自动化工具
    • 一键脚本:如 lnmp-oneinstackDebianLNMP-Jimmyli.sh,适合快速交付与标准化
    • 配置管理与编排:Ansible(Playbook 批量部署、滚动升级)、Docker Compose(开发/测试环境)、Terraform(云上基础设施即代码)

二、安全与证书自动化

  • 防火墙与端口
    • 启用 UFWsudo apt install ufw -y && sudo ufw enable
    • 放行 Nginx Full(同时开放 80/443):sudo ufw allow 'Nginx Full'
  • HTTPS 自动化
    • 安装 Certbotsudo apt install certbot python3-certbot-nginx -y
    • 申请并自动配置证书:sudo certbot --nginx -d yourdomain.com
    • 建议将续期加入定时任务(如:0 3 * * * certbot renew --quiet && systemctl reload nginx

三、监控与告警

  • 主机与应用指标
    • 系统资源监控:htop、nmon、sar
    • 可视化与告警:Prometheus + Grafana 采集 Nginx、PHP-FPM、MariaDB 指标并配置阈值告警
  • 服务可用性
    • 部署 Zabbix 进行主机与服务状态监控、可视化与通知(邮件/企业微信/钉钉等)

四、自动扩展与高可用

  • 自动扩展
    • 监控与阈值:基于 CPU/内存/磁盘IO 设置阈值触发动作
    • 扩展方式:
      • 垂直扩展:升级实例规格(CPU/内存)
      • 水平扩展:新增 Web/PHP-FPM 节点,前置 Nginx 作为负载均衡分发流量
    • 自动化工具:Ansible 编排扩容流程;DockerDocker Compose 简化多实例部署与管理
  • 高可用
    • 负载均衡:使用 Nginx 反向代理与 upstream 分发至多个后端
    • 数据库高可用:MariaDB Galera Cluster / Percona XtraDB ClusterMySQL 主从复制 实现数据冗余与故障切换
    • 故障转移:使用 Keepalived 提供 VIP 漂移,保障入口与核心服务连续性

五、备份与回滚策略

  • 数据库备份
    • 逻辑备份(推荐):mysqldump -u root -p --single-transaction --routines --triggers --databases your_db > backup_$(date +%F).sql
    • 定时任务(示例每日 2 点):0 2 * * * mysqldump -u root -p'YOUR_PASS' --single-transaction --routines --triggers --databases your_db | gzip > /opt/backup/db_$(date +\%F).sql.gz
  • 网站文件与配置
    • 打包发布目录与关键配置:tar czf /opt/backup/www_$(date +%F).tgz -C /var/www/html . && tar czf /opt/backup/nginx_$(date +%F).tgz /etc/nginx
  • 保留与校验
    • 保留策略:至少 7–30 天;定期校验与异地/对象存储留存
    • 回滚流程:数据库导入 gunzip < backup_YYYY-MM-DD.sql.gz | mysql -u root -p,静态文件与配置使用备份包解压覆盖并 sudo systemctl reload nginx

0