Discuz论坛建站需要什么配置?按规模选服务器与PHP参数
Discuz论坛对配置的要求不算高,但“能跑起来”和“跑得稳”是两回事。
如果只是几十人同时在线的兴趣论坛,1核2G内存的云服务器配合PHP 7.4以上版本就能运行;
如果日均发帖活跃、同时在线几百人,就需要把内存提到4G以上,并针对性调整PHP和MySQL参数。
下面按实际搭建流程说明准备条件和操作步骤。
先确认你的论坛属于哪种规模
Discuz是PHP+MySQL架构的论坛程序,性能瓶颈通常出现在PHP进程数和MySQL连接数上,而不是CPU核心数。
选配置前先估算两个指标:
- 同时在线人数:后台“全局-站点信息”可以看到历史最高在线人数。几十人在线属于轻量,几百人在线属于中等,上千人同时在线就需要独立数据库或负载均衡。
- 是否启用大量插件和门户功能:每多一个插件,PHP执行时间和内存占用都会增加。纯论坛版块比带门户、商城、签到插件的站点轻很多。
新手常犯的错误是只看CPU核数,忽视内存。
Discuz的PHP进程每个大约占用30-80MB内存,MySQL本身也要预留几百MB,内存不足时最先出现的症状是502错误或页面加载超时。
环境准备:PHP与MySQL版本怎么选
Discuz X3.4及以上版本建议使用PHP 7.4或PHP 8.0,MySQL 5.7或8.0。
PHP 7.4在兼容性和性能之间比较平衡,部分老插件可能不兼容PHP 8,升级前要确认插件说明。
如果用宝塔面板,安装路径如下:
- 登录宝塔面板,进入“软件商店”。
- 安装Nginx 1.20以上版本、MySQL 5.7、PHP 7.4。
- 在PHP设置中安装
fileinfo、opcache、redis扩展,Discuz的附件上传和缓存会用到。 - 创建站点并绑定域名,PHP版本选择刚安装的7.4。
命令行安装LNMP环境时,以Ubuntu为例,安装PHP和MySQL基础包:
sudo apt update
sudo apt install nginx mysql-server php7.4-fpm php7.4-mysql php7.4-gd php7.4-curl php7.4-mbstring php7.4-xml -y
安装完成后用php -v和mysql --version确认版本。
如果版本低于要求,Discuz安装程序会直接报错,不会继续。
关键参数调整:让Discuz不报502和连接错误
默认的PHP和MySQL配置是按通用场景设置的,直接跑Discuz容易出现内存耗尽或连接数不够。
需要改三个地方。
第一,调高PHP内存限制和执行时间。 打开php.ini,找到并修改:
memory_limit = 256M
max_execution_time = 120
post_max_size = 32M
upload_max_filesize = 32M
Discuz后台备份数据库、批量删除帖子时容易超时,max_execution_time设得太小会导致操作中断。
修改后重启PHP-FPM:systemctl restart php7.4-fpm。
第二,调整PHP-FPM进程数。 在/etc/php/7.4/fpm/pool.d/www.conf中,根据内存大小设置:
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 8
2G内存的服务器,pm.max_children不要超过25,否则每个进程都占内存,容易触发OOM。
4G内存可以设到40左右。
第三,调整MySQL连接数和缓存。 编辑/etc/mysql/mysql.conf.d/mysqld.cnf:
max_connections = 150
innodb_buffer_pool_size = 512M
innodb_buffer_pool_size建议设为可用内存的50%左右。
2G内存的机器设512M比较稳妥,设太大反而会挤占PHP进程的内存。
安装后的验证与压力检查
配置改完后,先访问Discuz安装向导完成建站。
安装过程中如果卡在“创建数据表”步骤,大概率是MySQL连接数或权限问题,检查数据库用户是否拥有CREATE权限。
安装完成后做三项验证:
- 打开论坛首页和帖子详情页,确认没有502或空白页。
- 在后台“工具-运行记录”中查看是否有PHP报错。
- 用
ab或wrk对首页做简单压测,观察内存和CPU占用:ab -n 500 -c 20 http://你的域名/。如果并发20时响应时间超过3秒,说明PHP进程数偏少或内存不足。
另外,Discuz后台的“全局-性能优化”中,开启OPcache和内存缓存(Redis或Memcached),能明显降低数据库查询压力。
常见误区:配置不是越高越好
有人直接买8核16G服务器跑Discuz,但没调PHP-FPM进程数,结果并发一上来还是502。
原因是pm.max_children默认值太小,CPU再高也用不上。
反过来,1核1G的机器如果只开默认参数,装完Discuz再装几个插件,内存就会吃紧。
判断配置是否够用,看两个信号:后台同时在线人数持续接近服务器承载上限,以及free -m显示可用内存长期低于200M。
出现这两种情况时,优先加内存和调整进程数,而不是换更高主频的CPU。
如果论坛计划长期运营,建议把附件和图片放到对象存储,数据库单独用云数据库,这样服务器配置可以按Web层需求选,扩容也更灵活。