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、數據庫分片等)。