1. 客户来咨询Discuz时,渠道商最该先聊清楚的几件事
做腾讯云渠道商这些年,隔三岔五就会碰到客户问同一类问题:“我想搭个社区论坛,用Discuz行不行?怎么在CVM上装?”这种咨询往往从一句“我看了你们页面说腾讯云CVM有优惠”开始,聊到最后才发现,对方其实连Discuz是个什么都说不清。所以我一直觉得,渠道商接这类单子,第一件事不是急着给客户开机器,而是先把需求盘清楚——这对双方都省时间。
1.1 Discuz到现在依然能打的核心原因
Discuz是老牌的PHP论坛程序,我从它还是Discuz! 6.0的时代就开始接触,到现在它被腾讯云生态里的中小企业用得依然很频繁。你问它为什么还没过气,我觉得核心就三点。
第一,部署门槛极低。一个懂点Linux的运维,在CVM上装好Nginx、PHP、MySQL,再传一份Discuz源码解压,跟着安装向导点几下鼠标就能跑起来。对渠道商来说,这意味着交付成本低、排错难度小,一个人一天能交付好几台。
第二,功能对社区场景来说够完整。板块、帖子、用户组、私信、门户、应用中心插件,这套东西对做垂直社区、地方论坛、企业内部知识库、学校班级网站来说完全够用。客户说“要能发帖、能回帖、能传图”的时候,Discuz开箱即用,不需要开发介入。
第三,官方和生态还活着。虽然不像当年那样高频更新,但应用中心里依然有大量免费和付费插件,从签到打卡到微信登录都有现成方案。渠道商最怕碰到那种“程序死了还得硬着头皮维护的客户”,Discuz在这块相对让人省心。
1.2 先问清场景再推荐配置:不是所有客户都需要高配CVM
接待客户时,我一般先问三个问题:你准备拿它做什么?预期多少人同时在线?技术底子怎么样?
这几个问题的答案直接决定我给他推什么样的CVM配置。整理成表格就是下面这样:
| 使用场景 | 参考配置 | 带宽 | 预估成本水平 |
|---|---|---|---|
| 内部知识库/几十人小社区 | 2核2G CVM标准型S5 | 2-3Mbps | 低 |
| 地方论坛/千人级访问 | 2核4G CVM标准型S5 | 5Mbps | 中 |
| 带图库/附件下载的社区 | 4核8G CVM标准型SA2 | 10Mbps起 | 中高 |
| 高并发运营社区 | 4核8G以上,加CDN和数据库独立 | 按峰值预估 | 高 |
我给客户讲的时候会打一个比方:2核2G的机器就像一家小面馆,同时坐十几个人没问题,但要是一下涌进来几百人排队,后厨就崩了。Discuz本身不算吃资源,但Mysql一旦要处理大量并发查询,内存就非常敏感。所以我会要求客户给个估算值——“你觉得峰值同时在线多少人”,而不是让他自己选配置。
1.3 域名备案这个坑,建议渠道商提前帮客户把关
这一点必须单独拿出来说,因为Discuz论坛只要绑域名对外提供服务,就绕不开域名备案。很多客户兴致勃勃买完CVM、装好论坛,结果域名一直没备案,最后只能拿IP先凑合着访问,体验极差。
我们渠道商在客户下单前最好就确认:域名买好了吗?打算ICP备案吗?腾讯云控制台有备案入口,流程不算复杂,但耗时长,正常审核周期加管局审核,前后可能一两周,部分省份还要邮寄核验单。我一般会帮客户把备案流程的截图和注意事项整理成一页文档,让他先提交备案,再隔几天开始搭建机器,这样等到环境配好、Discuz装完,备案差不多也下来了,时间正好衔接上。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. CVM购买后的第一个拦路虎:登录方式和SecureCRT密钥登录
机器买好之后,渠道商交付过程中最常见的翻车点,反而不是配置,而是客户根本登录不上服务器。打开“腾讯云CVM控制台”——“登录”按钮似乎很简单,可客户一旦在自己电脑上用SSH工具连不上,就会立刻回来找你,觉得是你给他的IP或者密码有问题。
2.1 为什么我坚持让客户用密钥而不是密码登录
这里先说结论:无论客户嫌不嫌麻烦,我交付CVM时都建议用密钥登录,至少也是“密钥+密码”双保险。原因很简单,Discuz这类PHP论坛跑起来要开放80/443端口,服务器长期暴露在公网上,如果用的是纯密码登录,就相当于每天24小时让人反复猜你家大门的锁。客户如果设置了个弱密码,比如“admin123”这种,脚本扫出来基本就是秒破,一旦被人拿到权限挂马,论坛就是重灾区。
密钥登录的原理我用大白话讲过很多次:你本地生成一对钥匙,一把是公钥、一把是私钥,公钥存在服务器上,私钥留在你自己电脑里。你SSH连接的时候,服务器拿公钥验证你手里的私钥,验证通过就放行。公钥放出去无所谓,私钥只要不丢,别人就永远伪造不了你的身份。这比“知道密码就能进”的方式安全了一个量级。
2.2 crt连接腾讯云CVM的完整操作:从pem到session保存
用SecureCRT(大家习惯叫crt)连腾讯云CVM,是Windows用户最常见的路径。腾讯云在购买CVM时如果选了“密钥登录”,会下载一个.pem私钥文件。很多客户卡在这一步:双击这个pem文件根本没反应,或者提示格式不对。
实际操作用的是这个流程:
- 打开SecureCRT,点击“Quick Connect”或者新建Session。
- 在“Hostname”填CVM的公网IP,“Username”填root或ubuntu(具体看镜像)。
- 最关键的一步,不要直接输密码,而是点左下角的“Public Key”验证方式,然后点Properties进设置。
- 在Public Key Properties里选择“Import”导入腾讯云下载的那个.pem文件。
- 返回后点Connect,如果这个私钥和你CVM上创建时用的公钥是一对,就会直接连上。
需要注意的一个细节:有些人会把.pem的内容复制粘贴到SecureCRT的“Password”栏里,然后反复提示认证失败。这不是你操作不对,是压根用错了栏目,.pem是私钥文件,不是密码字符串。另外,生成时的密钥对如果当时没下载.pem,后期是没法在腾讯云控制台重新下载的,只能通过控制台的“重置密码”功能设置SSH密码,或者再创建一个新的密钥对绑定实例。
2.3 密码登录方式下crt怎么填:别忽略端口和安全组
如果客户坚持用密码登录,crt这边就简单了:Hostname填IP,Username填root,Password填账号密码,Protocol选SSH2,Port默认22。但注意,端口这一栏基本不会有人去改,可是安全组一旦没放行22端口,任你怎么填都是白搭。
腾讯云CVM的安全组规则是独立于系统防火墙的,很多客户理解不了,为什么我密码没错它还说connection refused?十有八九就是安全组里没加放行22端口的入站规则。我教客户的口诀是:先放通22(SSH管理),再放通80/443(网站访问),最后放通3306(仅限内网,不要对全世界开放)。这三条规则加好,后面搭建环境才会顺手。
2.4 登录之后先把系统升个级
crt能连上服务器了,第一件事不是急着下Discuz,而是执行系统更新,把内核和基础软件源更新到比较新的状态:
bash复制sudo apt update && sudo apt upgrade -y
如果是CentOS系就用:
bash复制sudo yum update -y
这一步对系统安全性的重要性不用多说,但容易被赶时间的客户忽略。我每次交付都强行要求客户至少执行一次这一步,不然回头发现系统里的软件源自带版本有老漏洞,又得折腾一次,渠道商的售后时间就是这么被占掉的。
3. 从裸机到可运行环境:LNMP搭建与Discuz源码上传
到了这一步,机器能登录了,接下来就是让服务器可以跑Discuz。Discuz是PHP程序,需要Nginx、PHP、MySQL三件套。环境组合上,传统有LAMP(Apache)和LNMP(Nginx)两条路,我几乎所有客户都用LNMP,原因后面详细说。
3.1 为什么选LNMP而不是LAMP
LNMP比LAMP更适合跑Discuz的理由很直接:
- Nginx处理静态资源和PHP请求的并发能力更好,同样一台2核4G的机器,Nginx能抗的并发明显高于Apache。
- Nginx配伪静态规则非常简单,Discuz的伪静态规则网上一搜一大把,直接写进conf文件里就能生效。
- 内存占用更可控,Nginx是事件驱动模型,不像Apache因为进程模型在低配机器上容易被拖垮。
我这个说法可能会让一些老运维不同意,毕竟Apache的兼容性和mod_php模式在某些场景下确实更省心。但在给客户交付Discuz这件事上,我更看重低配机器上的性价比,所以LNMP是我的默认选项。
3.2 基于apt/yum的LNMP环境安装要点
如果客户买的是腾讯云的Ubuntu 22.04镜像,我会在crt里执行下面这套命令:
bash复制# 安装Nginx
sudo apt install nginx -y
# 安装PHP及Discuz需要的扩展
sudo apt install php8.1-fpm php8.1-mysql php8.1-gd php8.1-xml php8.1-mbstring php8.1-curl -y
# 安装MySQL
sudo apt install mysql-server -y
CentOS系比如TencentOS Server 3.1,则用yum,并且可能要启用EPEL源,这里就不展开了。装完之后有一个非常重要的动作:把PHP-FPM和Nginx联动配置好。默认Nginx的站点配置在/etc/nginx/sites-available/default(Ubuntu),要把PHP处理那段取消注释并调整fastcgi_pass指向:
nginx复制location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
这里最容易出错的就是fastcgi_pass的值,有人写127.0.0.1:9000,有人写sock文件路径,这取决于你php-fpm是怎么跑的,建议先用sudo netstat -tlnp | grep php-fpm确认端口或sock状态。我遇到过不少次客户照着网上教程配,结果Nginx一直返回502 Bad Gateway,排查了一圈发现就是php-fpm的sock路径写错了版本号。
3.3 腾讯云上传源码的几种姿势
环境装好,现在Discuz安装包怎么传到服务器上,这是个看起来简单但经常出问题的事。我从渠道商视角推荐三种方式:
方式一:控制台“上传文件”。腾讯云CVM控制台自带上传文件入口,很多Windows用户就用它,直接选择本地的Discuz压缩包即可上传到服务器目录。但它有大小限制,几百MB级别的附件没问题,GB级就可能断,而且上传后还是要自己在服务器上移动和减压,操作环节多。
方式二:WinSCP或SecureFX图形化传输。这种方式我最推荐给非专业客户,因为能直接拖动文件,还能可视化处理权限改动。连上SFTP,把Discuz压缩包拖到/var/www/目录,然后在crt里解压。SFTP默认走22端口,只要之前安全组放行了22,这个方式天然就能用。
方式三:scp命令行。就一句话:
bash复制scp ./Discuz_X3.5_SC_UTF8.zip root@<你的公网IP>:/var/www/
适合已经习惯命令行的客户,速度比图形化界面更可控,唯一痛点是要记得自己的密钥文件路径。
3.4 上传后的目录权限问题:最容易埋雷的一步
源码上传、解压、移动到网站目录之后,绝大部分第一次搭Discuz的人都会踩到一个雷:安装向导打开是500错误,或者验证目录权限时一堆红色“不可写”。
原因在于Discuz运行时需要向config/、data/这些目录写入缓存和配置文件。Nginx和PHP-FPM进程跑在www-data用户下,而你上传的目录权限默认是root所有,www-data根本没有写权限。
一行命令解决:
bash复制sudo chown -R www-data:www-data /var/www/discuz
sudo chmod -R 755 /var/www/discuz
我长期实践下来,755已经够用,有些教程让你777,那纯粹是图省事,实际上给服务器埋了一个巨大的提权风险。记住,777是最后的选项,能不用就不用。
4. Discuz安装向导全流程:从解压到搜索模块的坑
环境就绪、权限正确,接下来就是安装向导。这个环节大部分人能顺利完成,但我做渠道商这几年,也积攒了一些客户经常踩的细节坑,这里一次性说清楚。
4.1 浏览器安装流程的关键填写项
先在crt里把站点目录配置好,然后浏览器访问http://公网IP/index.php,就会进入安装向导。流程大概四步:
- 阅读协议并勾选同意。
- 检查环境依赖和目录权限,这里有红叉就回到上一节处理。
- 填写数据库信息和创始人信息。
- 安装完成后删除install目录,完成。
数据库这栏是渠道商要重点盯住的,因为Discuz的安装界面里的“数据库用户名”“数据库密码”填的是MySQL里新建的专用账号,不是系统的root密码。MySQL默认root账号经常没有远程访问权限,且在腾讯云默认安全组里3306端口是封着的。所以在安装前,我先在服务器上建好库和账号:
sql复制CREATE DATABASE discuz DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'discuz_user'@'localhost' IDENTIFIED BY '一个强密码';
GRANT ALL PRIVILEGES ON discuz.* TO 'discuz_user'@'localhost';
FLUSH PRIVILEGES;
这个账号只给本地用,这样即使MySQL出问题,也不至于把root密码暴露在安装界面上。
4.2 安装完成后的强制动作:删除install目录防重装
Discuz官方在安装完成页会提醒删除install/index.php,但很多人装完就急着进后台,把这事忘了。结果就是别人访问你的域名/install/index.php可以重新初始化安装,把你的论坛数据直接覆盖掉。这是真实发生过的安全事故,不要抱侥幸心理。
bash复制rm -rf /var/www/discuz/install
4.3 搜索模块:动态搜索性能与可选优化方向
Discuz自带搜索功能,用户量小的时候没什么感觉,但帖子数到几万甚至几十万之后,全表搜索的速度会明显下滑。客户来抱怨“搜索好慢”的频率,其实比“论坛打开慢”还高,因为搜索是一个高消耗功能。针对这个,我们在交付时可以给客户两个方向:
第一,配置好MySQL的全文索引,让Discuz做站内搜索时走索引而不是全表扫描。这个对中小社区算够用,实施成本低,是默认方案。
第二,如果客户社区数据量特别大,发帖、搜索、推荐都开始吃数据库资源时,可以考虑更上层的方案。比如腾讯云生态里也有向量数据库这类产品,可以把帖子内容向量化后做语义检索,效果比传统关键词搜索好很多,但这对Discuz来说要二次开发,一般渠道商交付时不用走这么深。我会把这两个方向跟客户讲清楚:一开始用默认搜索,量大了再来找我优化,不要一上来就整重活。
4.4 后台基础设置里容易忽略的三个选项
Discuz安装完,堂而皇之就把后台的“全局设置”忽略掉的客户太多了,我交付时会专门带客户过一遍明显能影响使用体验的设置项:
- 站点URL:一定要填成最终的访问域名,比如
https://bbs.example.com,否则发帖生成的链接可能全是IP形式,后面再改会让你重新做一遍伪静态链接,非常麻烦。 - 缓存设置:打开“论坛页面缓存”和“模块缓存”。Discuz很多打开慢的问题其实就是没开自带缓存。
- 邮件设置:如果要用到用户注册验证邮件,建议提前配置SMTP,用腾讯云企业邮或其它邮箱服务都行。不提前配,回头客户发现“邮箱收不到验证码”,又是一轮售后。
5. 论坛上线之后:渠道商必须教给客户的生存技能
Discuz装完、后台设置完成,不等于交付结束。一个论坛真正的运营挑战才刚刚开始,而渠道商的售后口碑,恰恰是在这个阶段建立起来的。我见过太多渠道商,机器交付了就装消失,客户隔一个月跑来说“论坛打不开了”,然后双方互相甩锅,非常难看。
5.1 备份:一句话能救命的习惯
备份这事,客户基本不会自觉做,渠道商必须在交付时就帮客户把备份方案顺手配好。Discuz的数据有两块:一是MySQL数据库,这是帖子和用户的根本;二是站点目录里的附件,用户上传的图片和文件都在这。
数据库备份命令很简单:
bash复制mysqldump -u discuz_user -p discuz > /备份目录/discuz_$(date +%Y%m%d).sql
站点目录备份就是压缩文件:
bash复制cd /var/www && tar -czf discuz_$(date +%Y%m%d).tar.gz discuz
关键是怎么让客户坚持执行。我一般直接在crontab里配一个每周自动备份的脚本,并把备份传到腾讯云COS对象存储的指定桶里。这样数据库和附件每一天或一周自动备份一次,即使哪天真出事了,也能从COS里及时找回。
5.2 基础安全加固:渠道商交付前的检查清单
被挂马、被植入垃圾帖、被CC攻击,这些都是Discuz站点常见的“售后事故”。很多问题其实在一开始就能防范。我交付前会强制自己过一遍这个清单:
- 后台管理员账号不是admin,密码强度足够高。
data/backup下不再有近期备份文件对外可访问。- Nginx层限制
/data和/config目录的PHP执行权,防止上传漏洞导致直接getshell。 - 安装防采集、验证码插件,降低垃圾帖刷量。
- 开启腾讯云主机安全的免费防护功能,基础弱口令检测和木马提醒还是有用的。
- 安全组里只放通必要端口,不用的端口一律别开。
这里第3条多说一句,很多人以为把目录权限设对了就安全了,其实Discuz历史上出过几起通过上传图片拿webshell的案例。最稳的方法是Nginx禁止这些目录解析PHP,在nginx的server配置里加上:
nginx复制location ~* /(data|config)/.*\.php$ {
deny all;
}
配置完reload一下Nginx,这个隐患基本就堵住了。
5.3 账号注销和资源回收:提醒客户别乱点
之前有客户问过我“腾讯云账号注销”的事,说公司法人变了要换个账号。我必须叮嘱一句,这个操作要极其慎重。腾讯云账号注销意味着账号下所有资源和数据都会销毁,CVM实例、COS数据、备案信息统统没了,而且注销流程一旦启动,短期内无法撤销。渠道商遇到这种需求,正确的做法是引导客户走账号变更、实名信息修改的流程,而不是让客户直接注销账号。
我猜这个热词之所以有人搜,大概是有些客户买了CVM不想续费了,就想“干脆把号销了省心”。实际上不续费让机器过期即可,没有必要把整个账号注销,否则连带域名备案、CDN、对象存储等资产全部都没了,得不偿失。
5.4 “为什么帖子图片裂了”和“为什么访问很慢”两个高频问题
访问慢和图片打不开是论坛上线后问得最多的两类问题。这里也顺便给大家一个排查思路:
图片裂:多半是附件目录权限丢失或者磁盘满。用df -h看下磁盘,再用ls -lh /var/www/discuz/data/attachment看权限,基本能定位。
访问慢:优先进后台看“负载情况”或用top命令看CPU内存。如果CPU不高但页面慢,大概率需要开Discuz自带缓存,或者给Nginx加Gzip压缩。如果攻击流量大,就需要上腾讯云自带的CDN防DDoS功能,或者购买高防IP,这个就看客户预算了。
6. 进阶交付:静态网站托管、CDN加速和渠道商的服务溢价空间
Discuz这个项目做到上面那步,已经算交付得比较扎实了。但渠道商的利润空间,往往取决于能不能在基础交付之外,给客户提供额外的便利方案。
6.1 腾讯云静态网站托管免费版,能用来做什么
做Discuz交付时给客户提到“腾讯云静态网站托管”,不少人第一反应是“那我要这CVM还有啥用”。其实两个东西定位完全不同。静态网站托管本质上是一种Serverless模式的静态资源托管服务,只适合放纯静态页面:企业官网首页、个人作品集、活动落地页。Discuz是动态论坛,离不开PHP和MySQL,所以必须跑在CVM上。但可以组合起来用,比如论坛首页的图片、附件这些静态资源,可以单独走对象存储或静态托管分发,减轻CVM压力。免费额度对小型论坛的附件分流也够用,教客户这么用,能明显降低带宽压力。
6.2 CDN加速:Discuz论坛的动静分离思路
客户论坛访问量上来之后,最值得推荐的优化就是上CDN。Discuz的动态页面不能全部走CDN缓存,否则用户看到的内容不是最新的,所以通常思路是加规则只缓存图片、CSS、JS这些静态资源。腾讯云CDN配一个域名,回源到CVM的站点目录,静态资源命中缓存后,源站负载明显下降。具体的配置流程文档写得很清楚,渠道商需要做的,就是跟客户解释清楚为什么论坛不能像官网那样整站加速,避免客户对效果产生误判。
6.3 渠道商如何把一次交易变成长期服务
最后说一点做渠道商的个人心得。Discuz这个盘本身不赚钱,机器差价就那么点,利润其实在后面的长期维护。我每一单交付完,都会给客户留下一份类似“论坛交付清单”的文档:里面包含服务器登录信息、数据库账号、备份周期、安全组规则、常用命令表和常见问题排查表。这份文档的价值远超一次搭建服务本身,因为它让客户形成了一种依赖感——下次遇到问题,第一反应就是来问你。
另外就是在交付时给客户讲清楚升级路径。Discuz本身遇到版本安全更新,需要手动升级;CVM遇到春节促销活动,续费能省钱;这些信息客户自己不会盯,渠道商盯住了,客户自然觉得你靠谱。时间长了,客户身边有人要搭网站,他第一个想到的还是你。
我自己的体会,做渠道商简单,做好渠道商不简单。Discuz这种老牌程序,技术上的坑其实网上都有答案,真正拉开差距的是运维习惯的引导和售后响应的温度。把一个CVM搭成能跑的论坛不难,难的是让客户知道这台机器以后该怎么养。上面这套流程跑下来,至少我在交付Discuz项目时,回访“论坛打不开”的电话明显少了一大半。
