面对日均5000+IP的5个WordPress站点,你的数据库准备好了吗?
本文将手把手教你在阿里云ECS(2核1.5G内存,Debian 11.8系统)上安装、配置和优化MariaDB 10.6及Redis 7.x,作为内网远程数据库服务器,为另一台内网地址为192.168.1.101的服务器上的WordPress站点提供数据库支持。
一、准备工作与系统优化
在开始之前,我们需要做好一些准备工作并对系统进行基础优化。
关闭防火墙(生产环境慎用):由于我们部署的是内网数据库服务器,且根据要求需要关闭防火墙,但必须注意安全风险。
对于Debian系统,通常默认使用iptables。检查状态并关闭:
sudo iptables -L # 查看当前规则 sudo iptables-save > ~/iptables.backup # 备份当前规则 sudo impables -F # 清空规则
建议:更安全的做法是配置安全组,只允许内网访问。例如在阿里云安全组中,设置仅允许192.168.1.0/24网段访问3306和6379端口。
更新系统并安装必要工具:
sudo apt update && sudo apt upgrade -y sudo apt install -y curl wget vim software-properties-common
优化内核参数:编辑/etc/sysctl.conf
,添加以下内容:
net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535 vm.overcommit_memory = 1
执行sudo sysctl -p
使配置生效。
二、MariaDB 10.6安装与优化配置
1. 安装MariaDB 10.6
Debian 11默认源中的MariaDB版本可能较低,我们需要从官方仓库安装:
# 导入MariaDB密钥 sudo apt install apt-transport-https curl sudo curl -o /etc/apt/trusted.gpg.d/mariadb-release-key.asc 'https://mariadb.org/mariadb_release_signing_key.asc' sudo sh -c "echo 'deb https://mirrors.aliyun.com/mariadb/repo/10.6/debian bullseye main' >> /etc/apt/sources.list.d/mariadb.list" sudo apt update sudo apt install -y mariadb-server mariadb-client
2. 基础安全设置
运行安全安装脚本:
sudo mysql_secure_installation
按照提示设置root密码、移除匿名用户、禁止root远程登录等安全选项。
3. 配置优化(重点)
编辑MariaDB配置文件/etc/mysql/mariadb.conf.d/50-server.cnf
:
[mysqld] # 基础设置 user = mysql pid-file = /run/mysqld/mysqld.pid socket = /run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp # 字符集设置 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci # 连接设置 max_connections = 100 # 根据2核1.5G内存调整 connect_timeout = 60 wait_timeout = 600 max_allowed_packet = 256M # 日志设置 log_error = /var/log/mysql/error.log slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 2 log_queries_not_using_indexes = 1 # InnoDB优化(关键部分) innodb_buffer_pool_size = 1G # 约占内存的70% innodb_log_file_size = 256M innodb_log_buffer_size = 16M innodb_flush_log_at_trx_commit = 1 innodb_file_per_table = 1 innodb_flush_method = O_DIRECT innodb_stats_on_metadata = 0 # 其他优化 key_buffer_size = 32M tmp_table_size = 64M max_heap_table_size = 64M query_cache_type = 0 query_cache_size = 0 # 二进制日志(主从复制备用) server-id = 1 log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 7
创建日志文件并设置权限:
sudo touch /var/log/mysql/mysql-slow.log sudo touch /var/log/mysql/error.log sudo chown -R mysql:mysql /var/log/mysql
4. 设置访问权限
登录MySQL,为root设置本地访问和192.168.1.101访问权限:
mysql -u root -p
执行以下SQL命令:
-- 创建用于远程连接的root用户(生产环境建议创建独立用户) CREATE USER 'root'@'192.168.1.101' IDENTIFIED BY '你的强密码'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.101' WITH GRANT OPTION; -- 刷新权限 FLUSH PRIVILEGES;
三、Redis 7.x安装与优化配置
1. 安装Redis 7.x
Debian 11默认源中的Redis版本可能不是7.x,我们需要从官方源安装:
# 添加Redis源 curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list sudo apt update sudo apt install -y redis-server
2. 配置优化
编辑Redis配置文件/etc/redis/redis.conf
:
# 基础设置 daemonize yes pidfile /var/run/redis/redis-server.pid port 6379 timeout 0 tcp-keepalive 300 # 安全设置(设置访问密码) requirepass 你的强密码 rename-command FLUSHDB "" rename-command FLUSHALL "" rename-command CONFIG "" # 内存设置 maxmemory 512mb # 根据1.5G内存合理分配 maxmemory-policy allkeys-lru # 持久化设置 appendonly yes appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb # 性能优化 stop-writes-on-bgsave-error no rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir /var/lib/redis # 高级配置 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit replica 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 # 网络设置 bind 0.0.0.0 tcp-backlog 51169
创建持久化目录:
sudo mkdir -p /var/lib/redis sudo chown -R redis:redis /var/lib/redis
3. 设置访问权限
配置Redis允许内网访问:
# 在配置文件中已设置bind 0.0.0.0,允许所有网络访问 # 但通过防火墙/安全组控制实际访问范围更安全 # 重启Redis使配置生效 sudo systemctl restart redis
四、系统与服务优化
1. 配置系统限制
编辑/etc/security/limits.conf
,添加以下内容:
* soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535 mysql soft nofile 65535 mysql hard nofile 65535 redis soft nofile 65535 redis hard nofile 65535
2. 创建交换文件(可选但建议)
对于1.5G内存的服务器,建议添加交换空间:
sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 永久生效 echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
3. 服务管理与监控
启动服务并设置开机自启:
# MariaDB管理 sudo systemctl enable mariadb sudo systemctl start mariadb # Redis管理 sudo systemctl enable redis sudo systemctl start redis
安装监控工具:
sudo apt install -y htop mytop
五、WordPress端配置
在192.168.1.101服务器上,需要配置WordPress连接远程数据库。
1. 修改wp-config.php
在每个WordPress站点的wp-config.php
中添加:
// 数据库连接设置 define('DB_HOST', '内网ECS的IP地址:3306'); define('DB_USER', 'root'); define('DB_PASSWORD', '你的强密码'); // Redis缓存设置 define('WP_REDIS_HOST', '内网ECS的IP地址'); define('WP_REDIS_PORT', '6379'); define('WP_REDIS_PASSWORD', '你的Redis密码'); define('WP_REDIS_TIMEOUT', 1); define('WP_REDIS_READ_TIMEOUT', 1); define('WP_REDIS_DATABASE', 0);
2. 安装Redis对象缓存插件
在每个WordPress站点安装并配置Redis Object Cache插件。
六、性能测试与监控
1. 数据库压力测试
使用sysbench进行基础测试:
# 安装sysbench sudo apt install -y sysbench # 创建测试数据库 mysql -u root -p -e "CREATE DATABASE sbtest;" # 准备测试数据 sysbench oltp_read_write --table-size=10000 --mysql-db=sbtest --mysql-user=root --mysql-password=你的密码 prepare # 运行测试 sysbench oltp_read_write --table-size=10000 --mysql-db=sbtest --mysql-user=root --mysql-password=你的密码 --num-threads=12 --time=300 run
2. 监控命令
常用监控命令:
# MariaDB监控 mytop -u root -p 你的密码 mysqladmin -u root -p extended-status # Redis监控 redis-cli -a 你的密码 info memory redis-cli -a 你的密码 info stats
七、常见问题与解决方案
1. 连接数过多:增加max_connections
参数,但更建议优化查询和添加缓存。
2. 内存不足:监控MariaDB和Redis的内存使用,适当调整innodb_buffer_pool_size
和maxmemory
参数。
3. 持久化导致Redis变慢:根据数据重要性权衡appendfsync
策略。
4. 数据库响应慢:启用慢查询日志,定期分析并优化SQL查询。
八、安全注意事项
1. 定期备份数据库:使用mysqldump
或xtrabackup
进行MariaDB备份,定期导出RDB或AOF文件进行Redis备份。
2. 定期更新软件:定期检查并更新MariaDB和Redis到安全版本。
3. 监控异常连接:使用网络监控工具检查异常连接尝试。
4. 考虑使用VPN或专有网络:确保数据库通信仅在安全网络内进行。
结语
通过以上步骤,你已经在阿里云ECS上成功部署了一个针对WordPress优化的MariaDB 10.6和Redis 7.x数据库服务器。这套配置能够支撑5个日均5000+IP的WordPress站点,但请注意,持续监控和优化才是保证长期稳定运行的关键。
记得根据实际运行情况不断调整参数,特别是内存相关设置,以适应真实的访问模式。良好的数据库设计、优化的查询语句以及适当的缓存策略,往往比硬件配置更能提升性能。
万事屋版权所有,转载请保留出处:https://www.rei3.com
没有回复内容