Ubuntu LAMP集群实现指南
LAMP(Linux、Apache、MySQL、PHP)集群通过分布式架构提升Web应用的性能、可用性与容错能力。以下是针对Ubuntu系统的具体实现步骤,涵盖基础环境搭建、高可用性优化及关键配置细节。
系统初始化
在所有集群节点(Web服务器、数据库服务器)上执行:
sudo apt update && sudo apt upgrade -y # 更新系统包
sudo apt install -y ufw # 安装防火墙工具(可选)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3306/tcp
sudo ufw enable
网络配置
确保节点间网络互通(如VirtualBox桥接模式或云服务商安全组规则),可通过ping命令验证:
ping <其他节点IP>
在所有Web服务器节点上执行:
sudo apt install -y apache2
sudo systemctl start apache2
sudo systemctl enable apache2 # 开机自启
在所有Web服务器节点上执行:
sudo apt install -y php libapache2-mod-php php-mysql php-gd php-curl php-intl php-mbstring
sudo systemctl restart apache2 # 重启Apache加载PHP模块
/var/www/html/创建info.php,内容为<?php phpinfo(); ?>,浏览器访问IP/info.php查看PHP信息。方案1:单数据库服务器(适合小型集群)
在单独的数据库节点上执行:
sudo apt install -y mariadb-server
sudo mysql_secure_installation # 强化数据库安全(设置root密码、移除匿名用户等)
sudo mysql -u root -p,创建应用数据库及用户:CREATE DATABASE wordpress; -- 替换为你的数据库名
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPassword123'; -- 替换为强密码
GRANT ALL PRIVILEGES ON wordpress.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
方案2:MySQL主从复制(适合中型集群,数据冗余)
参考搜索结果中“高可用MySQL集群”的主从复制配置,实现数据实时同步。
使用Nginx作为反向代理(轻量高效),在单独的负载均衡节点或某台Web服务器上安装:
sudo apt install -y nginx
/etc/nginx/sites-available/default):upstream backend {
server 192.168.1.101:80; # Web服务器1 IP
server 192.168.1.102:80; # Web服务器2 IP
}
server {
listen 80;
server_name your_domain.com; # 替换为你的域名
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
sudo systemctl restart nginx
/etc/mysql/mysql.conf.d/mysqld.cnf),添加以下内容:[mysqld]
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.1.101,192.168.1.102,192.168.1.103" # 所有数据库节点IP
wsrep_node_address="192.168.1.101" # 当前节点IP
wsrep_node_name="node1" # 当前节点名称
依次在所有数据库节点启动Galera集群:sudo systemctl stop mysql
sudo galera_new_cluster # 在第一个节点执行(初始化集群)
sudo systemctl start mysql
编辑Apache配置文件(/etc/apache2/mods-enabled/mpm_prefork.conf),调整进程/线程数:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 1000
</IfModule>
重启Apache生效:sudo systemctl restart apache2。
your_domain.com,观察请求是否分发到不同Web服务器(可通过apachetop或nginx日志验证)。SELECT * FROM wordpress.wp_posts;)。mysqldump -u root -p wordpress > wordpress_backup.sql)和Web文件(tar -czvf /backups/web_$(date +%F).tar.gz /var/www/html)。journalctl -u apache2 -f(Apache日志)或tail -f /var/log/nginx/error.log(Nginx日志)排查故障。通过以上步骤,可实现一个具备高可用性的Ubuntu LAMP集群,满足中小型Web应用的需求。根据实际业务规模,可进一步扩展节点数量或优化配置(如启用CDN、数据库分片等)。