温馨提示×

centos lamp最佳实践分享

小樊
34
2025-12-11 19:01:41
栏目: 智能运维

CentOS LAMP 最佳实践

一 环境准备与基线安全

  • 系统初始化与最小权限
    • 更新系统并安装常用工具:yum update -y && yum install -y wget curl vim net-tools
    • 创建部署用户并赋权:adduser deployer && usermod -aG wheel deployer
    • 禁用 root 远程登录:sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config && systemctl restart sshd
  • 防火墙与安全组
    • 放行必要流量:firewall-cmd --permanent --add-service={http,https,ssh} && firewall-cmd --reload
    • 云上安全组仅放通 TCP 22/80/443,SSH 限制来源 IP
  • SELinux 策略
    • 生产环境建议保持 SELinux Enforcing,为自定义目录设置正确的文件上下文(如 semanage fcontext/restorecon),排查权限问题时避免直接 setenforce 0
  • 基础加固
    • 定期 yum update -y;禁用 PHP 错误回显(生产环境);为数据库与应用使用最小权限账户强口令

二 组件安装与基础配置

  • 组件版本建议(示例)
    • CentOS 7.6 + Apache 2.4.6 + MariaDB 10.11.9 + PHP 8.3.8(可按需调整)
  • 安装与启动
    • Apache:yum install -y httpd && systemctl start httpd && systemctl enable httpd
    • MariaDB:yum install -y mariadb-server mariadb && systemctl start mariadb && systemctl enable mariadb
    • PHP:yum install -y php php-mysqlnd php-fpm php-opcache php-gd php-xml php-mbstring
  • 数据库安全初始化
    • 执行 mysql_secure_installation,设置 root 强密码、删除匿名用户、禁止远程 root、移除测试库
  • 基础验证
    • 临时创建 info.php 验证 PHP:echo "<?php phpinfo(); ?>" > /var/www/html/info.php,访问确认后删除该文件

三 部署与网络最佳实践

  • 目录与权限
    • 项目目录:mkdir -p /var/www/myapp && chown -R apache:apache /var/www/myapp
  • 虚拟主机示例(/etc/httpd/conf.d/myapp.conf)
    • 启用 .htaccessAllowOverride All
    • 日志分离:ErrorLog /var/log/httpd/myapp_error.logCustomLog /var/log/httpd/myapp_access.log combined
  • 域名与 HTTPS
    • DNS 添加 A 记录 指向服务器 IP
    • Let’s Encrypt:yum install -y certbot python3-certbot-apache && certbot --apache -d myapp.example.com
    • 自动续期:echo "0 3 * * * /usr/bin/certbot renew --quiet" | crontab -
  • 静态资源与缓存
    • 启用 mod_expiresExpiresActive On,如 ExpiresByType image/jpg "access plus 1 year"text/css "access plus 1 month"
  • 可选:CDN 回源与浏览器缓存策略,降低源站压力、提升首屏体验

四 性能与安全优化

  • Apache
    • 启用 KeepAlive On、启用 mod_deflate 压缩
    • 并发与 MPM:高并发场景优先 Event MPM,并按内存与并发目标调整 MaxRequestWorkers/ThreadsPerChild 等参数
  • PHP
    • 启用 OPcacheopcache.enable=1opcache.memory_consumption=128
    • 常用 php.inimemory_limit=256Mupload_max_filesize=32Mpost_max_size=32M
    • 禁用危险函数:disable_functions = exec,passthru,shell_exec,system
  • MariaDB/MySQL
    • 关键内存参数:innodb_buffer_pool_size(建议为可用内存的50%–70%,视负载调整)
    • 连接与会话:max_connectionsback_logwait_timeout 结合业务压测微调
  • 系统与网络
    • 文件句柄与进程限制:/etc/security/limits.conf 设置 * soft/hard nofile 65535* soft/hard nproc 65535
    • 内核网络参数:net.core.somaxconnnet.ipv4.tcp_tw_reusenet.ipv4.ip_local_port_rangenet.core.rmem_max/wmem_max 等按并发目标优化
  • 安全增强
    • 部署 Fail2Ban 防暴力破解;仅内网开放 3306(如需远程管理,使用 SSH 隧道或跳板机)

五 监控 备份 与常见问题排查

  • 监控与日志
    • 资源监控:htopnmon;日志轮转:/etc/logrotate.d/httpd 防止日志过大
    • 关键日志:/var/log/httpd/error_log/var/log/php-fpm/error.log/var/log/messages
  • 备份策略
    • 数据库:mysqldump -u root -p myapp > /backup/myapp_$(date +%F).sql
    • 代码与配置:tar czf /backup/myapp_code_$(date +%F).tar.gz /var/www/myapp /etc/httpd/conf.d/
  • 常见问题速查
    • 502 Bad Gateway:检查 php-fpm 是否运行、监听地址与 Apache 配置是否匹配
    • 前端资源 404:核对 DocumentRoot.htaccess 是否生效、构建产物是否完整
    • 数据库连接失败:确认服务运行、账户权限、bind-address 与防火墙策略
    • Permission denied:先排除 SELinux 上下文问题,再检查文件系统权限与属主

0