
这些年总有人问我想开网课卖知识是该去小鹅通这类商业SaaS平台交年费还是找人定制开发每次我都会反问一句你有没有听说过Likeshop这个开源知识付费系统基于LikeAdmin-PHP开发的那套代码全开源部署不需要什么高深技术一台云服务器配上宝塔面板就能跑起来。我用它给好几个朋友搭过在线课程平台说实话这个开源项目把知识付费平台的门槛拉到了几乎为零——如果你之前完全没有碰过服务器只要照着步骤做一下午也能把前台、支付、会员、分销全跑通。这篇文章就把我从选型、部署到二开的完整过程写出来适合三种人看一是教育培训机构想低成本自建线上课堂的技术负责人二是做知识付费产品、不想被SaaS平台年年涨价的独立讲师三是PHP开发新手想找一个结构清晰、能练手又能落地的开源项目。接下来我按真实的推进顺序讲不绕弯子。1. 买别人的SaaS和自建开源版这笔账到底应该怎么算先别急着聊部署第一步永远是需求判断。很多人在选型阶段就卡住了。市面上成熟的知识付费SaaS平台确实多功能做得也漂亮直播、小班、训练营、督学全都有但它的模式是按年付费、按流量计费、按功能模块加钱。你卖出去的课越多、学员越多平台费就越高而且学员数据、支付流水、营销数据全在别人服务器上。对于一年营收几十万的中小机构来说这笔账越往后越难受。开源版的核心优势不是免费而是自主。Likeshop把整个知识付费系统的源码完整交给你包括后台管理、用户端、课程体系、订单系统、分销逻辑、营销工具。服务器是自己的数据库是自己的学员关系链也是自己的。如果哪天想加一个特别个性化的功能比如某种特殊的会员等级规则、自定义的课程报名表单SaaS平台只能让你在它给的框架里买菜开源版则是整个厨房都是你的。但我不建议所有人都来选择开源自建。如果你完全不懂技术、也没有一个能帮忙的IT朋友出了问题连日志都不会看那我劝你还是老老实实用SaaS省心比省钱重要。开源版适合的是那种愿意花一个下午研究部署、出了问题愿意自己查资料解决的人。说实话Likeshop这套项目已经是开源阵营里部署友好的代表了它比那些号称开源但光环境就要折腾三天的项目好太多后文你就能感受到。我当时帮朋友选型的理由就三条第一预算几乎为零服务器费用一个月几十块第二功能足够全课程点播、会员套餐、分销裂变这些核心能力开箱即用第三代码是PHP的任何做过web开发的人都能接手不存在系统跑起来之后没人敢动的问题。有个数据也可以参考现在搜索Likeshop相关话题时问频率最高的是两件事一是PHP版本到底要装哪个二是支付回调配置不生效怎么办。这两件事后面都会详细讲到那些在论坛里悬而未决的疑问其实踩坑点就那么几个。2. LikeAdmin-PHP这套底座到底解决了什么问题很多第一次接触Likeshop的人会困惑为什么项目介绍里总强调基于LikeAdmin-PHP开发这个LikeAdmin-PHP到底是什么角色这里我直接把它拆开讲。LikeAdmin-PHP本质是一套PHP后台管理框架它提供了开发一套完整业务系统所需要的基础设施管理员权限体系、菜单管理、操作日志、文件上传、通用配置存储、接口鉴权、定时任务调度以及一个基于标准后台模板搭建好的界面框架。你可以把它理解成盖房子时先打好的地基和毛坯房骨架——水电气线路预留好了你只需要按自己的需求隔房间、装橱柜。有了这套底座Likeshop的项目方不需要从头开发后台框架而是集中精力做知识付费业务的垂直功能课程模型怎么设计、订单状态机怎么流转、学员和讲师怎么关联、分销层级怎么计算。这也是为什么Likeshop的代码结构看起来非常工整——业务代码和后端框架代码是明显分层的你把项目目录一打开哪些是核心框架文件、哪些是业务模块文件一眼就能分清楚。对于想二次开发的人这个底子的价值更大。比如你不想用默认的后台模板想把它换成自己品牌的样式LikeAdmin-PHP的视图层是独立剥离的你可以直接改模板文件而不动业务逻辑。再比如你想在用户注册后增加一个赠送优惠券的动作也只需要找到用户注册事件的位置加一个方法调用不会牵一发动全身。技术栈方面也是经典得不能再经典的组合PHP新版本主分支已经基于ThinkPHP 8那套思路做了升级 MySQL存储业务数据 Redis做缓存和队列支撑。这里多说一句为什么一定要Redis因为知识付费系统里有大量高频率读取的数据比如课程列表、轮播图、热门推荐这些数据全放MySQL里也行但每访问一次就查一次数据库并发一高CPU就很吃力。Likeshop把这类数据做了Redis缓存访问请求直接走内存MySQL只负责写操作和冷数据查询。这也是它跑起来轻快的直接原因。这个底座的理解直接关系到你后面部署的成功率——你会发现安装向导里要填的基本上就是数据库信息和Redis信息Once理解了这个逻辑配置的时候心里就有底了数据库管业务数据持久化Redis管临时的高频读写两者都要正确配置系统才能完整跑起来。3. 从零到跑通前台一套可以直接照抄的部署链路我猜很多读者关心的是能不能照着一路点下去就部署成功。答案是能只要你不跳步。下面这套步骤我原样还原了给朋友搭建的过程用的环境是宝塔面板 CentOS其实Ubuntu也没问题习惯用哪个就用哪个宝塔把差异屏蔽掉了。3.1 环境准备清单先把环境需求列齐避免装到一半发现缺东西。这是一个已经跑通多套Likeshop的必备清单PHP版本推荐8.1或8.2跑起来更稳。PHP 7.4老版本也能装但我不推荐因为一些新版的依赖组件对旧PHP支持已经变差了。PHP扩展fileinfo、opcache、redis、swoole如果要用异步任务、intl、bcmath、gd这几个是主要的。宝塔里直接在PHP设置页面勾选安装就行都是图形界面操作。MySQL5.7或8.0都可以。装MySQL 8.0的话注意一下密码加密方式的兼容性如果程序连不上、报认证插件错误把用户密码改成mysql_native_password方案即可。Redis装最新稳定版就行不需要额外配置。Nginx推荐用Nginx别用Apache后面伪静态规则省事很多。以上在宝塔里基本都是搜索安装几分钟搞定。很多人在这一步折返跑就是因为漏装了某个PHP扩展结果前台白屏、后台报错各种排查半天最后发现只是intl没装。3.2 源码获取与站点创建Likeshop开源版的源码从官方仓库拉取就行gitee和GitHub都有镜像。下载后解压把全部文件上传到服务器的站点目录下建议直接用站点根目录而不是套一层子目录因为程序默认按根目录解析套子目录容易多出一些路径问题。在宝塔中创建站点时有几点要设对域名写你自己的域名没域名先用服务器IP端口也是可以的但支付回调功能必须靠正式域名才能稳定使用测试阶段无所谓。PHP选择前面装好的8.1或8.2。运行目录要指向public目录——这一步非常关键。Likeshop的入口文件在public/index.php如果你不把站点运行目录设为public访问会直接暴露项目根目录甚至引发安全风险。很多第一次部署的人一打开网站就是目录列表或者40499%是这个运行目录没设置对。我当时第一次部署也栽在这里。当时我习惯性地以为入口在根目录的index.php结果网站整个显示的是文件目录还以为是源码没传全。后来翻了一下文档才发现public目录才是web根目录这是很多PHP框架共同的做法ThinkPHP也是把公共文件和应用代码隔离开web服务只暴露public目录里面的index.php做前端控制器转发。理解了这条安全设计的逻辑以后部署任何ThinkPHP系项目都不会再犯同样的错误。3.3 安装向导的配置逻辑站点创建好后浏览器访问你的域名会出现Likeshop的安装引导界面。整个安装向导就是几步检测环境、填写数据库信息、设置管理员账号、安装完成。填数据库信息时注意数据库要提前在宝塔里创建好并且给这个库一个独立的账号不要把root账号直接给程序用这是基本的安全素养。安装向导里需要填的是数据库地址本地就是127.0.0.1或localhost、数据库名、账号、密码。Redis信息当时是同一个表单里要填的主机127.0.0.1、端口6379密码留空或填你设置过的密码两者一致对应好就行。管理员账号密码设置好之后点击安装页面会跑一小会儿进度条其实就是程序在初始化数据表、写入基础配置、生成runtime缓存。安装完成后建议立刻把网站根目录下的install目录改名或删除——这一步不是可选的而是必须的。留着安装目录等于把系统重新安装的钥匙挂在门口任何访问者都能通过访问install地址把系统打回出厂状态数据全清。我见过不止一个人忘了删后来发现后台登录不上了一查是有人恶意重装了。安装完成之后前台即可访问后台入口一般是在域名后面加上/admin路径。第一次进后台建议先去系统设置里把网站名称、SEO关键词、网站备案信息这些基础内容配置好。很多人不重视SEO那栏其实SEO标题和关键词直接影响搜索引擎收录你的课程页面知识付费行业非常依赖自然搜索流量所以千万别把这块留空。3.4 推荐的最佳实践用DevOps方式初始化一个干净的库如果你在安装向导阶段想让环境更可控我可以分享一个小技巧与其让安装向导自动建表不如自己先建好一个干净的空库再运行向导。这样你可以预先设定好数据库字符集utf8mb4、排序规则以及把数据库账号权限收敛为仅对这一个库生效。通过这种手动初始化安装向导执行时不会因为权限不足或者字符集不符而失败后期做数据迁移也更干净。这对完全没接触过数据库操作的读者也不难宝塔里创建数据库时有下拉框可以直接选编码选utf8mb4即可。4. 前台能访问只是开始上线前这几个配置最容易翻车部署完成、前台后台都能打开之后很多人的心态会变成成了可以开卖了。别急这时候才是真正要细看配置的阶段。我把最容易翻车的几个环节按顺序列一下每个都是实打实踩过或被问过的坑。4.1 伪静态规则不配置路由就全是404Likeshop的路由是重写模式靠Nginx的伪静态规则把请求转发给index.php处理。宝塔里创建站点时有一个伪静态按钮如果你不设置访问文章详情页、课程播放页这类动态路由地址就会直接404。错误地设置成其他用的伪静态代码也可能导致部分页面能开、部分页面404非常诡异。正确做法是在伪静态设置里选择ThinkPHP的规则模板或者直接手写以下这段location / { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?s/$1 last; } }这段规则的意思很简单如果访问的文件在服务器上不存在就交给index.php去路由解析。如果你使用Apache则需要使用对应的.htaccess重写规则宝塔里切换网站服务时通常也会自动给出对应配置。设置完伪静态后记得清理一下失效的缓存否则改了不生效很常见。WordPress系统的伪静态规则拿过来用是不行的因为框架的路由定义方式完全不同我见过有人直接复制WordPress的Nginx规则过来结果admin后台都能打开、前台文章页全404折腾一圈才发现是规则类型错了。4.2 支付接口测试能付、线上挂掉的坑在线课程平台逃不开支付环节。Likeshop默认集成了微信支付和支付宝的接入通道配置入口在后台的支付方式里。这一块有两种最常见的翻车情况第一种是只填写了商户号和密钥没有正确配置回调地址。微信支付和支付宝在用户付完款后会向你的服务器地址发送一个异步通知程序收到通知后才把订单标记为已支付。如果你配置服务器时没有把回调地址填对而且后台回调地址不能为内网IP或者带非标准端口——支付平台无法外网回调到你本机或私网用户付完款后订单一直停留在待支付状态课不能看你会遭受大量客服投诉。第二种是忘了在微信支付商户平台里给Native支付或JSAPI支付的授权目录加上你的站点URL。很多新申请的小程序支付和App支付需要在商户平台配置对应的支付域名和授权目录不配的话前台点击支付会直接报当前页面的URL未注册。这个不在代码里查而是在微信商户平台的后台配置第一次做的人完全想不到。我建议的上线前验证顺序是先用官方文档里的测试码模拟几笔订单确认订单状态流转正常再切换到正式环境用0.01元小额走一笔真实支付确认回调能够正常接收并且订单自动变成已支付再把课程价格改回去。这一步不要省支付链路一旦出问题你在上线第一小时就会收到一堆退款要求。4.3 邮件发送验证码发了但收不到注册验证、找回密码这些功能依赖邮件服务。很多人配置了SMTP后邮件发不出去又不知道看哪里的日志。Likeshop后台的邮件配置里有一个测试发送按钮配置完先点它验证。如果测试发送失败排查顺序是服务器能否连通SMTP服务器的25或465端口阿里云等云厂商默认限制25端口改用465或587、发件邮箱是否开启了SMTP服务授权码、后台里填写的账号密码是否正确。这些环节都配置正确后再重新跑一遍部署时收录的页面测试确保正式环境没有数据错误。其实这里我想强调的是部署完成后最消耗时间的不是操作本身而是排查为什么明明配置了但没生效的过程。所以我建议养成一个习惯任何配置改动之后都做一个最小验证——改邮件就发一封测试邮件改支付就下一笔0.01元订单改伪静态就访问一个详情页——不要等用户上线后替你测试。4.4 后台的基础运营参数很多人忽略的隐形门槛Likeshop后台里还有一些默认值非常保守的参数比如单用户上传课程视频大小默认限制、播放器允许的域名白名单。如果你的讲师是在后台直接上传本地视频很可能遇到文件太大无法上传的提示这时需要去系统配置里调整上传限制同时还要保证PHP的upload_max_filesize和post_max_size也要一起调大通常这两个值默认只有几十MB对高清课程视频来说完全不够。播放器域名白名单就更隐蔽了。Likeshop的视频播放器做了防盗链处理你自己用域名A生成的前台课程页如果通过某个临时域名B去访问视频会无法播放。上线前要确认白名单里包含了你所有的业务域名否则前台点了播放显示黑屏很难想到是这里的问题。5. 从跑起来了到运营起来课程、用户与二次开发的思考路径系统能访问、能支付这只是万里长征第一步。真正让它成为在线课程平台的是后续的课程组织方式、用户运营手段以及针对业务需求做的二次开发。5.1 课程模型先想明白点播、专栏还是会员制Likeshop把课程按形式分了几大类普通单课、专栏课程多个课程打包出售、会员套餐按期订阅期内所有内容通看。这三种商业模型对应完全不同的运营思路强烈建议在录入课程之前就规划好。我见过一个典型反例一个教烘焙的老师上了几个单课卖得不错想做一个年度会员。结果他一股脑把单课加进会员里售价定得很低但会员专享的直播答疑、社群服务根本没法在系统里体现最后学员觉得不值口碑受损。知识付费的核心从来不是技术架构而是产品设计技术的活是帮你把售课—学习这条链路跑通而链路里装什么货是运营侧需要想清楚的。好在Likeshop后台的会员模块做得比较完整可以设置多个会员等级、不同等级对应不同课程权限。你在创建会员套餐时可以直接勾选该级别能看的课程范围也能设置有效期。到期后学员自动失去访问权限这个逻辑后台是自动处理的不需要人工干预。这个自动上下架会员权限的机制很重要它决定了年费会员模式做起来有多省心。5.2 分销裂变本质是人传人的奖励逻辑知识付费特别适合分销这也是Likeshop后台自带分销功能的原因。你可以设置分销层级一级分销、二级分销、佣金比例生成用户专属推广海报。分销的关键不是把佣金比例调高就行了而是要理解分销逻辑的层级怎么走一级分销商是自己分享的链接带来的直接购买二级分销商则是他的下级带来的购买佣金自然也不同。绝大多数系统的分销算法在源码里都可以调如果你需要用更复杂的条件比如会员只推会员、只有囤课用户才有分销资格那就要写一点二次开发代码了。提醒一句分销功能一定要搭配提现审核和风险控制。Likeshop后台有佣金提现申请和审核的功能建议设置好提现最低金额、审核人工确认之后再进行打款避免利用返利规则恶意刷单钻空子。5.3 二开从哪里下手看懂这几个目录就够了最后聊一聊二次开发。别人问Likeshop好不好二开我的回答是它是PHP项目里对初学者最友好的那一档因为你只要能看懂目录结构就知道功能代码在哪。主目录里几个关键位置直接标一下app/api用户端接口所有App、H5、小程序触达后端都是走这里。app/admin后台管理相关的功能逻辑比如课程管理、订单管理、用户管理。app/common公共模型和服务层。像订单流程、支付逻辑、用户金币变动这类核心业务模型都在这里。server/public入口文件和静态资源目录。server/route路由定义文件接口改动或新增时先看这里。比如说你想在用户注册后自动发一张优惠券就同时动三个位置先用后台菜单里的优惠券管理把券做好再在app/common里找到用户注册事件的服务加一句调用发券的方法即可。熟练之后一天能改三四个这类小需求。有一点我想提醒所有的二开新手Likeshop项目更新迭代速度不慢官方会定期修bug、穿插安全补丁。你在二开时尽量把自定义逻辑集中在server/extend目录或者写成独立插件而不要直接改核心文件。这样以后官方升级的时候你只要替换核心代码就好不会把自己的业务代码覆盖掉。否则每次升级都要手工合并代码谁改谁知道痛。这一点实际上是开源软件通用的二开纪律和上游保持最小差异。官方代码升级了你自定义的那部分不受影响两边代码能平滑融合。我认识的一些人拿到源码后第一件事就是大改特改把核心业务改成自己的形状等官方发补丁时发现自己满地的修改记录直接崩溃。所以建议即使是修改掉一个文案、一行字也要记录变更原因保持在追踪列表里方便日后合并。5.4 运营阶段的系统体检性能和安全不是上线就结束系统正式运营后有几个指标我建议每周固定看一次MySQL慢查询日志、Redis内存使用率、磁盘空间、错误日志数量。知识付费系统里经常出现的一个隐患是课程视频和图片等大文件直接存在本地磁盘学员一多磁盘迅速打满。更优的做法是把视频传到对象存储OSS/COS/七牛之类上在后台配置存储驱动让程序只存文件URL流量压力交给云厂商。Likeshop后台本身已经预留了存储类型切换的配置本地存储、阿里云OSS、腾讯云COS这些都可以选只是很多人前期图省事一直用本地结果后期迁移时才发现几千个视频已经占满了磁盘。安全层面除了前面提到的删除install目录建议再检查这几个点后台登录接口是否有频率限制Likeshop后台自带防爆破机制但要在配置开关里打开、服务器SSH是否禁用了密码登录、PHP错误日志是否会暴露到web目录。课程平台的数据比较敏感学员手机号、支付流水都是隐私信息别等出事了再来补救。最后再说点掏心窝的如果让我给Likeshop一个评价它是一个花一个下午部署、再用一周研究、能长期稳定运营的开源项目。优点是文档清晰、功能完整度远超同类缺点不是没有比如部分闭环细节需要运营人员深度参与视频处理功能相对基础如果要做直播或者打卡训练营这类重交互功能还是得自己二开或者对接第三方服务。但单就知识付费获客、交易、交付这三件核心事它已经做得非常到位了。我实际操作中最大的体会是部署阶段其实是最简单的一步真正有壁垒的是把商业逻辑想清楚。系统里每一个模块设置的背后都是一套运营决策——要不要分销、会员怎么分级、佣金怎么定。这些想透了再倒回去看代码你会发现那些字段名、参数位都有了解释。要是你也正在选型或者已经下载了源码准备折腾建议先按上面的部署链路跑通一遍别怕犯错源码在你手上最坏的情况就是重装一遍系统数据都在跑不丢。