优化 Linux 服务器上的 DirectAdmin使用 CustomBuild 更新您的技术栈,切换到现代 Web 服务器, PHP-FPM,调谐 PHP, MySQL 使用 MariaDB 和内核,启用缓存(OPcache/Redis),通过 CSF 和 ModSecurity 进行安全加固,并监控资源使用情况。首先进行备份,逐步测试变更,并实现日常维护自动化。
DirectAdmin 是一款轻量级且可靠的控制面板,但需要进行巧妙的调优才能达到最佳性能和安全性。在本指南中,我将向您展示如何在 Linux 服务器环境中优化 DirectAdmin,就像我们为生产环境网站所做的那样——简洁、安全且可衡量。
什么是 DirectAdmin 优化?为什么它如此重要?
优化是指配置您的操作系统、Web堆栈、数据库、邮件系统等。 DNS以及 DirectAdmin 服务,以降低延迟、处理更多并发流量并确保安全。如果配置正确,您将会看到更快的速度。 PHP 响应时间更短 CPU 以及 RAM 用法更少的 5xx 错误,更顺畅的电子邮件送达率。
前提条件和安全第一
检查您的环境
- Linux 发行版: AlmaLinux/Rocky、CentOS Stream、Debian 或 Ubuntu LTS
- DirectAdmin with CustomBuild 2.x
- root 或 sudo 访问
- 最低2 CPU 核心数:4–8 GB RAM 适用于小型多站点托管
备份和暂存
- 创建完整快照或镜像级备份。
- 使用 DirectAdmin > 管理员备份/传输进行帐户和配置备份/传输。
- 请在维护窗口期间或先在测试服务器上应用更改。
更新堆栈并建立基线
系统和自定义构建更新
# OS packages
sudo dnf -y update || sudo apt -y update && sudo apt -y upgrade
# DirectAdmin CustomBuild
cd /usr/local/directadmin/custombuild
./build update
./build versions
保持 PHP 在当前支持的分支(8.2/8.3)上 Apache 2.4 版本,带 MPM 事件,或考虑开放模式LiteSpeed 对于高并发环境,务必启用 OPcache。
选择合适的 Web 技术栈
- Nginx 作为反向代理 + Apache (nginx_apache):平衡,广泛兼容。
- Apache 仅限(Apache):简单,适合低流量场景。
- 可选LiteSpeed (openlitespeed): 快速高效,易于使用的 HTTP/3;非常适合 WordPress。
cd /usr/local/directadmin/custombuild
# Example: Nginx reverse proxy + Apache + PHP-FPM + OPcache
./build set webserver nginx_apache
./build set php1_release 8.2
./build set php1_mode php-fpm
./build set opcache yes
./build set modsecurity yes
./build set modsecurity_ruleset owasp
./build all d
./build rewrite_confs
如果您选择“开放”LiteSpeed,将 Web 服务器设置为 openlitespeed 并重建网站。切换后测试网站功能。
Web 服务器和 PHP 优化
PHP-FPM池调优
每个 DirectAdmin 用户或域都可以拥有自己的 PHP-FPM池。避免池大小过大。 CPU 思维混乱或记忆力衰竭。估计 pm.max_children 使用 RAM/平均值 PHP 进程大小(WordPress 通常为 60–90 MB)。
; Example: /usr/local/php72/etc/php-fpm.d/user.domain.conf
[domain.com]
user = domain
group = domain
listen = /usr/local/php56/var/run/domain.sock
pm = dynamic
pm.max_children = 20
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 8
pm.max_requests = 500
pm.process_idle_timeout = 10s
; Adjust per user based on traffic and RAM
对于许多小型网站而言, pm = ondemand 采用保守的限制可以减少空闲内存。
对于 繁忙的网站, pm = dynamic 提供更稳定的延迟。
快速 OPcache 设置 PHP
; php.ini or /usr/local/php*/lib/php.ini
opcache.enable=1
opcache.memory_consumption=192
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=100000
opcache.validate_timestamps=1
opcache.revalidate_freq=60
opcache.save_comments=1
增加 opcache.memory_consumption 如果您托管多个网站,请重新启动。 PHP-FPM 更改后。
Nginx 反向代理调整(如果使用 nginx_apache)
# /etc/nginx/nginx.conf (snippet)
gzip on;
gzip_comp_level 5;
gzip_types text/plain text/css application/javascript application/json image/svg+xml;
# Example SSL server block directive
listen 443 ssl http2;
对于 HTTP/3,开放LiteSpeed 这是DirectAdmin中最简单的方法。在OLS监听器中启用QUIC/HTTP/3并重启。
另请参阅: 如何在不丢失数据的情况下修复 Linux 服务器上的 MongoDB 问题
数据库(MariaDB/MySQL) 优化
基于此调整 MariaDB RAM 以及工作负载。重点关注 InnoDB 缓冲池和日志文件大小。避免在现代 MariaDB 上使用旧式查询缓存。
# /etc/my.cnf.d/server.cnf or /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld]
# Example for 8 GB RAM server hosting WordPress
innodb_buffer_pool_size = 4G
innodb_log_file_size = 1G
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
max_connections = 200
tmp_table_size = 256M
max_heap_table_size = 256M
thread_cache_size = 100
table_open_cache = 4000
performance_schema = ON
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1
编辑完成后重启 MariaDB,然后运行一天的工作负载并分析慢查询。 mysqltuner 以及 pt-query-digest 用于优化设置和索引繁重的查询。
sudo mysqltuner
sudo apt install percona-toolkit || sudo dnf install percona-toolkit
pt-query-digest /var/log/mysql-slow.log | less
邮件, DNS以及基本服务
邮件堆栈(Exim/Dovecot)和垃圾邮件控制
- 请使用 Maildir,而不是 mbox(DirectAdmin 默认使用 Maildir)。
- 通过 CustomBuild 启用 SpamAssassin 或 Rspamd(Rspamd 更轻量级且更准确)。
- 限制并发 SMTP 连接数以保护 CPU/RAM.
# Enable Rspamd in CustomBuild
cd /usr/local/directadmin/custombuild
./build set exim yes
./build set dovecot yes
./build set spamassassin no
./build set rspamd yes
./build rspamd d
./build rewrite_confs
DKIM、SPF 和 DMARC
从 DirectAdmin > DNS 管理层,启用 DKIM 并为每个域创建 SPF 和 DMARC 记录。这有助于提高邮件送达率和信誉度。
DNS 性能:功率DNS
电力DNS 对于大多数托管情况而言,它比 BIND 速度更快,资源占用更少。
cd /usr/local/directadmin/custombuild
./build set powerdns yes
./build set bind no
./build powerdns d
./build rewrite_confs
缓存和加速
Redis 对象缓存
安装 Redis 并将其用于 WordPress 对象缓存可以降低数据库负载,并缩短首字节到达时间。
# Install Redis server
sudo dnf -y install redis || sudo apt -y install redis
sudo systemctl enable --now redis
# In PHP, install redis extension via CustomBuild
cd /usr/local/directadmin/custombuild
./build set redis yes
./build redis d
使用信誉良好的插件(例如“Redis Object Cache”),并为每个站点设置唯一的前缀。对于 WooCommerce,请启用会话锁定。
静态资源和 CDN
- 充分利用浏览器缓存 用于图像、CSS、JS。
- 尽可能提供 WebP/AVIF 格式。
- 卸载大型资产并使用 CDN 来缩短全球范围内的 TTFB。
增强安全性而不损失性能
CSF/LFD 防火墙
ConfigServer 安全与防火墙 (CSF) 与 DirectAdmin 完美集成。您可以将 IP 地址加入白名单、限制登录尝试次数并阻止滥用端口。
# Basic CSF workflow
csf -e # enable
csf -a YOUR_IP # allowlist admin IP
csf -g 1.2.3.4 # grep IP status
csf -t # view temp bans
ModSecurity(OWASP CRS)和排除项
通过 CustomBuild 启用带有 OWASP 规则集的 ModSecurity,然后在出现误报时添加合法应用程序的规则排除项。监控您的 Apache/Nginx 错误日志用于识别被阻止的请求。
Let's Encrypt、TLS 1.2/1.3 和 ECDSA
- 绝大部分储备使用 让我们加密 DirectAdmin 中的自动化。
- 为保证性能,优先选择 ECDSA 证书(如果客户端支持)。
- 禁用 TLS 1.0/1.1;强制使用强加密算法。
SSH 硬化
- 移动 SSH 从端口 22(可选),仅允许密钥认证,如果您的工作流程允许,请禁用 root 登录。
- 安装 fail2ban 如果你不使用 LFD 的 SSH 保护。
系统级调优(内核和限制)
/etc/sysctl.conf 优化
# /etc/sysctl.d/99-directadmin-tuning.conf
fs.file-max = 2097152
net.core.somaxconn = 65535
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_local_port_range = 10240 65535
vm.swappiness = 10
fs.inotify.max_user_watches = 1048576
# apply
sudo sysctl --system
文件描述符和 Systemd 覆盖
# Example for Nginx/Apache/MariaDB
sudo systemctl edit nginx
# then add:
# [Service]
# LimitNOFILE=1048576
sudo systemctl daemon-reload
sudo systemctl restart nginx
日志和旋转
- 确保 logrotate 已启用 Apache/Nginx, PHP-FPM、Exim、Dovecot 和 MySQL 日志。
- 限制 journald 大小以防止磁盘压力(
/etc/systemd/journald.conf).
监控和故障排除
快速找到瓶颈
# CPU/RAM
htop
atop
# Disk I/O
iotop -oPa
# Network
ss -tulpn
# Web errors
tail -f /var/log/httpd/error_log # Apache (path may vary)
tail -f /var/log/nginx/error.log # Nginx
# PHP-FPM
journalctl -u php-fpm --since "10 min ago"
# Mail
tail -f /var/log/exim/mainlog
打开 MySQL 记录缓慢的查询日志并修复性能最差的查询。对于 WordPress,可以使用 Query Monitor 来查找占用资源过多的插件或主题。
自动化、备份和安全更新
DirectAdmin 管理员备份/传输
- 使用远程存储安排每日帐户备份(SFTP/FTP/S3 通过 rclone)。
- 对于大型数据集,请使用增量式 rsync。
- 每季度进行一次恢复测试,以确保完整性。
保持可控的更新节奏
- 每周进行操作系统安全更新。
- 更新 PHP 次要版本 及时测试重大升级。
- 跟踪 CustomBuild 版本,并在更改后重建服务。
快速见效的方法和常见陷阱
- 启用 OPcache 和 PHP-FPM: 轻松加速。
- 合适的尺码 PHP-FPM池: 防止出现“内存不足”和 502 错误。
- 使用 Redis 作为 WordPress 对象缓存:减少数据库负载。
- 避免启用所有 ModSecurity 规则;根据您的应用程序进行调整。
- 不要过度分配交换空间;注意 iowait 和磁盘健康状况。
常见问题
哪种 Web 技术栈最适合提升 DirectAdmin 的性能?
对于一般主机托管, Nginx 反向代理 + Apache + PHPFPM 实现了很好的平衡。为了获得最佳性能和更简单的 HTTP/3 支持,OpenLiteSpeed 性能极其出色,尤其适用于 WordPress。务必启用 OPcache 和 size PHP-FPM 池化适当。
我如何加速 PHP 在 DirectAdmin 中?
绝大部分储备使用 PHP-FPM(非 CGI),启用 OPcache 并分配足够的内存,升级到 PHP 8.2/8.3,并进行调音 pm.max_children 4.9分 RAM 和平均 PHP 进程大小。对于动态网站,添加 Redis 对象缓存以减少数据库调用次数。
如何针对多个 WordPress 站点优化 MariaDB?
首先将 InnoDB 缓冲池的容量设置为 50-70% 左右 RAM,设定 innodb_log_file_size 至 512M–1G,保持 performance_schema 开启可见性,启用慢查询日志记录,并迭代 mysqltuner 以及 pt-query-digest在应用层使用 Redis 对象缓存。
如果我使用 CDN/WAF,是否还需要 ModSecurity?
是本地 WAF(例如 ModSecurity)可在 CDN/WAF 规则失效或请求绕过 CDN 时提供额外保护。使用 OWASP CRS 作为基准,并为已知的安全模式创建排除项,以降低误报率并保持良好的性能。
我可以在 DirectAdmin 上启用 HTTP/3 (QUIC) 吗?
是最直接的途径是开放LiteSpeed DirectAdmin 支持 HTTP/3,并提供简单的监听器设置。 Nginx 可以通过特定版本支持 HTTP/3,但这更复杂。务必测试客户端,并无缝回退到 HTTP/2。