在 CentOS 上搭建 LAMP(Linux + Apache + MySQL + PHP)并实现“负载”,通常有两种理解:
- 负载均衡(多台服务器分担访问压力)
- 单机 LAMP 性能调优(提高并发处理能力)
下面我分别说明,最常见的是 LAMP + 负载均衡架构。
一、LAMP 负载均衡常见架构
用户
↓
负载均衡器(Nginx / HAProxy / LVS)
↓ ↓ ↓
Web 服务器1 Web 服务器2 Web 服务器3(Apache + PHP)
↓
数据库(MySQL 主从 / 集群)
二、CentOS LAMP 负载均衡方案
方案 1:Nginx 做负载均衡(最常用)
1️⃣ 后端 Apache(LAMP)服务器
每台 CentOS 上安装:
yum install httpd php php-mysql mariadb-server -y
systemctl start httpd
systemctl enable httpd
确保每台 Web 服务器内容一致(可用 rsync / NFS / Git)。
2️⃣ 前端 Nginx 负载均衡服务器
yum install nginx -y
编辑配置:
vi /etc/nginx/nginx.conf
http {
upstream lamp {
server 192.168.1.11:80;
server 192.168.1.12:80;
server 192.168.1.13:80;
}
server {
listen 80;
location / {
proxy_pass http://lamp;
}
}
}
systemctl start nginx
✅ 支持:
- 轮询(默认)
ip_hash(会话保持)weight(权重)
方案 2:HAProxy 负载均衡(更稳定)
yum install haproxy -y
vi /etc/haproxy/haproxy.cfg
frontend http
bind *:80
default_backend lamp
backend lamp
balance roundrobin
server web1 192.168.1.11:80
server web2 192.168.1.12:80
systemctl start haproxy
三、Session 问题(非常重要)
LAMP 负载后,PHP Session 不能只存本地。
解决方式:
- Session 存 Redis(推荐)
yum install redis php-pecl-redis -y
php.ini:
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
- 或使用
ip_hash绑定用户
四、数据库负载(MySQL)
推荐方式
- MySQL 主从复制
- 写主库,读从库
- PHP 使用读写分离中间件(如 ProxySQL)
五、单机 LAMP 提高负载能力(不扩服务器)
如果你只是想让一台 CentOS 扛更多请求:
Apache 调优
vi /etc/httpd/conf/httpd.conf
- 使用
prefork→worker/event - 增加
MaxClients - 开启
KeepAlive
PHP
- 使用 OPcache
yum install php-opcache -y
数据库
- 加索引
- 调
innodb_buffer_pool_size
六、总结建议
| 场景 | 方案 |
|---|---|
| 小网站 | 单机 LAMP 调优 |
| 中大型 | Nginx + 多台 Apache |
| 高并发 | HAProxy + Redis + MySQL 主从 |
| 云环境 | 可直接用 SLB / ALB |
如果你愿意,可以告诉我:
- CentOS 版本(7 / 8 / Stream)
- 访问量级别
- 是否上云
我可以给你一套可直接用的配置方案。