首页主机资讯centos lnmp最佳实践分享

centos lnmp最佳实践分享

时间2025-11-14 10:55:03发布访客分类主机资讯浏览1001
导读:CentOS LNMP 最佳实践 一 基础部署与目录规范 系统准备与防火墙 更新系统并安装基础工具:yum update -y && yum install -y epel-release wget 放行访问:firew...

CentOS LNMP 最佳实践

一 基础部署与目录规范

  • 系统准备与防火墙
    • 更新系统并安装基础工具:yum update -y & & yum install -y epel-release wget
    • 放行访问:firewall-cmd --permanent --zone=public --add-service=http --add-service=https & & firewall-cmd --reload
  • 组件安装(以 CentOS 7/8 为例)
    • Nginx:yum install -y nginx & & systemctl enable --now nginx
    • MariaDB:yum install -y mariadb-server mariadb & & systemctl enable --now mariadb & & mysql_secure_installation
    • PHP(按需选择版本):yum install -y php php-fpm php-mysqlnd php-gd php-mbstring php-xml php-opcache
  • 目录与权限
    • 网站根目录:/var/www/your_domain
    • 日志目录:/var/log/nginx/var/log/php-fpm
    • 运行用户:nginx:nginx,目录属主:chown -R nginx:nginx /var/www/your_domain
  • 快速连通性验证
    • 创建探针:echo "< ?php phpinfo(); ?> " > /var/www/your_domain/info.php
    • 访问 http://your_ip/info.php 确认 Nginx + PHP 正常。

二 关键配置优化

  • Nginx
    • 进程与连接:worker_processes auto; worker_connections 1024; (按 CPU 与内存调优)
    • 静态资源缓存与压缩:开启 gzip on; 并为图片、CSS、JS 设置 expiresCache-Control
    • 慢请求日志:通过 map $request_time $loggable { 1.000+ slow; default main; } > 1s 请求单独记录到 slow.log,便于定位瓶颈
  • PHP-FPM(建议 FPM 池使用 Unix Socket)
    • 进程模型:pm = dynamic; pm.max_children = 50; pm.start_servers = 5; pm.min_spare_servers = 5; pm.max_spare_servers = 35; pm.max_requests = 1000
    • 慢日志:request_slowlog_timeout = 1s; slowlog = /var/log/php-fpm/www-slow.log
    • 安全与性能:rlimit_files = 65535; env[PATH]=/usr/local/bin:/usr/bin:/bin; security.limit_extensions = .php
  • PHP(php.ini)
    • 性能:opcache.enable=1; opcache.memory_consumption=128; opcache.interned_strings_buffer=16; opcache.max_accelerated_files=10000; opcache.validate_timestamps=1; opcache.revalidate_freq=60
    • 资源与上传:memory_limit=128M; max_execution_time=30; post_max_size=16M; upload_max_filesize=10M
    • 字符集与日志:default_charset="utf-8"; log_errors=On; error_log=/var/log/php-fpm/error.log
  • MySQL/MariaDB
    • 基础与连接:max_connections=500~2000(视内存与业务而定)
    • InnoDB 缓冲:innodb_buffer_pool_size(建议为可用内存的 50%~70%,数据库专用机可更高)
    • 日志与临时表:slow_query_log=1; long_query_time=1; tmp_table_size=64M; max_heap_table_size=64M
    • 字符集:统一使用 utf8mb4(支持 emoji),在 [client] [mysql] [mysqld] 段设置 default-character-set=utf8mb4

三 安全加固与日常运维

  • 最小权限与服务隔离
    • Web 运行用户与目录属主统一为 nginx:nginx;禁用 PHP 执行上传目录;限制 open_basedir
    • 禁用危险函数:disable_functions = exec,passthru,shell_exec,system,proc_open,popen,show_source
  • 网络与访问控制
    • 仅开放 80/443;管理口限制来源 IP;数据库端口不对外暴露
  • 数据与备份
    • 每日全量 + 增量备份(物理/逻辑均可),保留 7~30 天;定期异地/离线备份
    • 备份校验与恢复演练,保留回滚方案
  • 日志与审计
    • 启用并轮转 Nginx、PHP-FPM、MySQL 日志;集中采集与告警(如 5xx、慢查询激增)
  • 补丁与合规
    • 订阅安全公告,及时更新系统与组件;遵循最小暴露面原则

四 高可用与扩展

  • 负载均衡与横向扩展
    • 使用 Nginx 作为反向代理与负载均衡器,分发到多台后端应用服务器(upstream + health_check)
  • 数据库高可用
    • 主从复制(异步/半同步)实现读写分离与故障切换;关键业务引入 MHA/OrchestratorGalera Cluster/MariaDB Cluster 提升可用性
  • PHP-FPM 多实例与调度
    • 多 FPM 实例 + Unix Socket + Nginx 权重/最少连接调度,提升吞吐与容错
  • 监控与自动化
    • 监控:Node Exporter + Prometheus/Grafana 监控 CPU、内存、连接、QPS、慢查询等
    • 告警:基于阈值的多通道告警(如 5xx、连接数、磁盘、复制延迟)
    • 自动化:Ansible 批量部署与配置管理,蓝绿/金丝雀发布

五 性能压测与持续优化

  • 压测与基线
    • 使用 ab/wrk/siege 进行基线压测;关注 P95/P99、RPS、错误率、带宽、CPU/IO
    • 逐步增加并发,观察瓶颈(DB 连接、慢查询、文件描述符、锁争用)
  • 慢查询治理
    • 开启并分析慢查询日志,使用 pt-query-digest 定位 TOP SQL;补充索引、改写 SQL、避免全表扫描
  • 缓存与前端优化
    • 启用 OPcache、页面/对象/页面片段缓存;静态资源上 CDN;启用 gzip/Brotli;合并压缩与懒加载
  • 操作系统与存储
    • 使用 SSD;优化内核参数(如 vm.swappinessdirty_ratio/background_ratio);合理分区与文件系统(如 XFS
  • 持续迭代
    • 建立容量水位线(CPU、内存、连接、IOPS),设置自动扩缩容策略;定期复盘慢日志与监控趋势

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos lnmp最佳实践分享
本文地址: https://pptw.com/jishu/747816.html
centos定时器支持哪些脚本 centos lnmp缓存策略解析

游客 回复需填写必要信息