以下是Debian LAMP集群的部署步骤,包含基础环境搭建与高可用性配置:
更新系统
sudo apt update && sudo apt upgrade -y
安装Apache
sudo apt install apache2
sudo systemctl enable --now apache2
安装MariaDB(MySQL替代)
sudo apt install mariadb-server
sudo mysql_secure_installation # 按提示设置root密码及安全选项
CREATE DATABASE db_name;
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON db_name.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
安装PHP及扩展
sudo apt install php libapache2-mod-php php-mysql
sudo systemctl restart apache2
/var/www/html/info.php
,内容为<?php phpinfo(); ?>
,访问确认PHP运行正常。方案1:Nginx反向代理
安装Nginx并配置反向代理到多台Apache服务器:
sudo apt install nginx
sudo nano /etc/nginx/sites-available/lamp_cluster
添加以下内容(替换server_ip1/2
为实际服务器IP):
upstream apache_cluster {
server server_ip1:80;
server server_ip2:80;
}
server {
listen 80;
location / {
proxy_pass http://apache_cluster;
}
}
启用配置并重启Nginx:
sudo a2ensite lamp_cluster
sudo systemctl restart nginx
方案2:DNS轮询
在DNS管理界面为域名添加多条A记录,指向不同服务器IP,实现简单负载。
主服务器配置(假设主服务器IP为master_ip
):
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
添加以下内容:
[mysqld]
server-id=1
log-bin=mysql-bin
重启MariaDB:
sudo systemctl restart mariadb
创建复制用户:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'repl_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
从服务器配置:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
添加:
[mysqld]
server-id=2
重启MariaDB后,执行复制命令:
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl_user',
MASTER_PASSWORD='repl_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
验证复制状态:
SHOW SLAVE STATUS\G
sudo apt install pacemaker corosync pcs
sudo systemctl enable --now corosync pcsd
sudo pcs cluster auth node1 node2 node3 -u hacluster -p your_password
sudo pcs cluster setup --name lamp_cluster node1 node2 node3
sudo pcs cluster start --all
sudo pcs cluster enable --all
sudo pcs resource create apache systemd:apache2 op monitor interval=30s
sudo pcs resource create mysql systemd:mariadb op monitor interval=30s
sudo pcs constraint colocation add mysql apache INFINITY
sudo pcs constraint order start mysql then start apache
sudo ufw allow 'Apache Full'
sudo ufw deny in on eth0 from any to any port 3306 # 限制数据库端口仅允许可信IP
sudo tar -czvf /backup/lamp_backup_$(date +%F).tar.gz /var/www /etc/apache2 /etc/mysql
说明: