debian

Debian LNMP集群搭建方法

小樊
35
2025-10-23 04:58:50
栏目: 智能运维

Debian LNMP集群搭建指南(含高可用配置)
LNMP(Linux + Nginx + MySQL/MariaDB + PHP)是中小型网站常见的Web架构,Debian系统因其稳定性成为搭建该架构的热门选择。以下是基础环境搭建高可用优化的详细步骤:

一、基础环境准备

1. 更新系统与安装基础工具

sudo apt update && sudo apt upgrade -y  # 更新系统软件包
sudo apt install -y curl wget vim htop  # 安装常用工具

2. 安装Nginx(Web服务器)

sudo apt install -y nginx  # 安装Nginx
sudo systemctl start nginx && sudo systemctl enable nginx  # 启动并设置开机自启
# 验证安装:浏览器访问服务器IP,应显示Nginx欢迎页面

3. 安装MariaDB(数据库服务器,MySQL替代方案)

sudo apt install -y mariadb-server mariadb-client  # 安装MariaDB
sudo mysql_secure_installation  # 运行安全脚本,设置root密码、移除匿名用户、禁止远程root登录
# 登录数据库验证:sudo mysql -u root -p

4. 安装PHP及扩展(后端脚本语言)

sudo apt install -y php php-fpm php-mysql php-opcache php-cli php-gd php-curl  # 安装PHP及常用扩展
sudo systemctl start php7.4-fpm && sudo systemctl enable php7.4-fpm  # 启动PHP-FPM并设置开机自启

5. 配置Nginx解析PHP

编辑Nginx默认站点配置文件:

sudo nano /etc/nginx/sites-available/default

修改location ~ \.php$部分,确保FastCGI传递到PHP-FPM:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;  # 使用Unix Socket通信
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

测试Nginx配置并重启:

sudo nginx -t  # 验证配置语法
sudo systemctl restart nginx  # 重启Nginx

6. 验证LNMP环境

/var/www/html目录下创建测试文件:

sudo nano /var/www/html/info.php

写入以下内容:

<?php phpinfo(); ?>

浏览器访问http://服务器IP/info.php,若显示PHP信息页面则说明环境搭建成功。

二、高可用性优化(可选但推荐)

1. 负载均衡(分发流量到多台Nginx服务器)

使用Nginx自身作为负载均衡器,需至少两台Nginx后端服务器。
编辑负载均衡器配置(如/etc/nginx/conf.d/loadbalancer.conf):

http {
    upstream backend {
        server 192.168.1.101:80;  # 后端Nginx服务器1
        server 192.168.1.102:80;  # 后端Nginx服务器2
        # 可添加更多服务器
    }
    server {
        listen 80;
        server_name yourdomain.com;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

测试配置并重载Nginx:

sudo nginx -t && sudo systemctl reload nginx

2. MySQL高可用(主从复制)

主服务器配置
编辑/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
server-id = 1  # 唯一ID
log_bin = /var/log/mysql/mysql-bin.log  # 开启二进制日志
binlog_do_db = your_database  # 需同步的数据库名

重启MySQL并创建复制用户:

sudo systemctl restart mysql
sudo mysql -u root -p

在MySQL中执行:

CREATE USER 'replicator'@'%' IDENTIFIED BY 'StrongPassword';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;  # 记录File和Position(后续从服务器需要)

从服务器配置
编辑/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
server-id = 2  # 唯一ID(需与主服务器不同)
relay_log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = your_database
read_only = 1  # 设置为只读(可选)

重启MySQL并配置主从同步:

sudo systemctl restart mysql
sudo mysql -u root -p

在MySQL中执行:

CHANGE MASTER TO
    MASTER_HOST='主服务器IP',
    MASTER_USER='replicator',
    MASTER_PASSWORD='StrongPassword',
    MASTER_LOG_FILE='mysql-bin.000001',  # 主服务器记录的File
    MASTER_LOG_POS=107;  # 主服务器记录的Position
START SLAVE;  # 启动复制

验证从服务器状态:

SHOW SLAVE STATUS\G  # 查看Slave_IO_Running和Slave_SQL_Running是否为Yes

3. PHP-FPM高可用

通过多台PHP-FPM服务器配合负载均衡实现。每台服务器的PHP-FPM配置(/etc/php/7.4/fpm/pool.d/www.conf)需确保listen指令一致(如/run/php/php7.4-fpm.sock),并通过NFS或分布式文件系统共享/var/www/html目录(避免代码不同步)。

三、监控与维护

1. 安装监控工具(Prometheus + Grafana)

sudo apt install -y prometheus grafana
# 配置Prometheus监控Nginx、MySQL、PHP-FPM(需添加对应exporter)
# 配置Grafana展示监控面板(导入官方模板)

2. 数据备份

定期备份数据库和网站文件:

# 备份数据库
mysqldump -u root -p --all-databases > /backup/mysql_$(date +%F).sql
# 备份网站文件
tar -czvf /backup/www_$(date +%F).tar.gz /var/www/html

3. 日志管理

使用logrotate管理Nginx、MySQL日志,避免日志文件过大:

sudo nano /etc/logrotate.d/nginx

添加以下内容:

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
}

注意事项

通过以上步骤,可在Debian系统上搭建稳定、高可用的LNMP集群,满足中小型网站的部署需求。

0
看了该问题的人还看了