CentOS LAMP 最佳实践
一 环境准备与基线安全
yum update -y && yum install -y wget curl vim net-toolsadduser deployer && usermod -aG wheel deployersed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config && systemctl restart sshdfirewall-cmd --permanent --add-service={http,https,ssh} && firewall-cmd --reloadsemanage fcontext/restorecon),排查权限问题时避免直接 setenforce 0yum update -y;禁用 PHP 错误回显(生产环境);为数据库与应用使用最小权限账户与强口令二 组件安装与基础配置
yum install -y httpd && systemctl start httpd && systemctl enable httpdyum install -y mariadb-server mariadb && systemctl start mariadb && systemctl enable mariadbyum install -y php php-mysqlnd php-fpm php-opcache php-gd php-xml php-mbstringmysql_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.htaccess:AllowOverride AllErrorLog /var/log/httpd/myapp_error.log、CustomLog /var/log/httpd/myapp_access.log combinedyum install -y certbot python3-certbot-apache && certbot --apache -d myapp.example.comecho "0 3 * * * /usr/bin/certbot renew --quiet" | crontab -ExpiresActive On,如 ExpiresByType image/jpg "access plus 1 year"、text/css "access plus 1 month"四 性能与安全优化
MaxRequestWorkers/ThreadsPerChild 等参数opcache.enable=1、opcache.memory_consumption=128php.ini:memory_limit=256M、upload_max_filesize=32M、post_max_size=32Mdisable_functions = exec,passthru,shell_exec,systeminnodb_buffer_pool_size(建议为可用内存的50%–70%,视负载调整)max_connections、back_log、wait_timeout 结合业务压测微调/etc/security/limits.conf 设置 * soft/hard nofile 65535、* soft/hard nproc 65535net.core.somaxconn、net.ipv4.tcp_tw_reuse、net.ipv4.ip_local_port_range、net.core.rmem_max/wmem_max 等按并发目标优化五 监控 备份 与常见问题排查
htop、nmon;日志轮转:/etc/logrotate.d/httpd 防止日志过大/var/log/httpd/error_log、/var/log/php-fpm/error.log、/var/log/messagesmysqldump -u root -p myapp > /backup/myapp_$(date +%F).sqltar czf /backup/myapp_code_$(date +%F).tar.gz /var/www/myapp /etc/httpd/conf.d/php-fpm 是否运行、监听地址与 Apache 配置是否匹配DocumentRoot、.htaccess 是否生效、构建产物是否完整bind-address 与防火墙策略