2023使用Discuz Q论坛系统搭建三端(h5,小程序,pc)折腾踩坑总结

2023使用Discuz Q论坛系统搭建三端(h5,小程序,pc)折腾踩坑总结

阅读此文前提:

  • 本文所有安装搭建流程基于官方安装文档宝塔面板。请先仔细阅读官方文档,再来阅读本文。
  • 官方文档有两个版本,请先搞清楚你看的是哪个版本的文档(肥肠重要)
  • 本文写于2023年3月30日。
  • 所有的踩坑均已经用特殊格式注明
  • 在按照文档安装fileinfoexif 两个扩展以后,请重启php服务,否则安装程序不会识别
  • 宝塔面板早期安装的Php7.3是独立编译zip扩展,后续安装及升级是整合编译的,导致升级后会重复加载zip模块.
    为避免这个错误,后面的PHP就不再单独编译ZIP扩展了。
    然后呢,PHP 7.3.8,ZIP 模块不再整合了,在面板配置中却没有安装ZIP扩展的选择。
    这样新安装php7.3就会出现phpzip丢失的问题
    但是ZIP扩展本来就包含在软件包里,解决这个问题,只需要手动进行添加即可.
    SSH登录Linux服务器,先进入php73的扩展安装目录(因为php扩展里已经下载好zip扩展文件所以不用再自行下载了,直接安装)
cd /www/server/php/73/src/ext/zip/
/www/server/php/73/bin/phpize
./configure --with-php-config=/www/server/php/73/bin/php-config
make
make install

安装好zip扩展,还需要在PHP配置文件中启用.
在php.ini中添加这一行:

extension = zip.so
  • 删除禁用putenvreadlinksymlinkshell_exec 函数,不是删除
    php配置完成以后,设置伪静态,更改运行目录,设置gzip。
    访问 http://<绑定网站的域名名称>/dl.php
    设置定时任务
sudo -u www /usr/bin/php /www/wwwroot/<网站主目录>/disco schedule:run

小程序/h5构建

旧版官方文档提供了两种构建方式,分别是通过HBuilderX和npm。
但是这是过时的。

  • 新版discuz小程序仅支持使用npm构建。如果你使用HBuilderX构建,会直接提示编译失败。
  • 小程序对npm的版本有着严格的要求。严格限制node: 14.x.x 版本与 npm: 6.14.。如果你已经安装了高版本的npm,无法安装依赖文件。
    解决方案:
    step1.在官网重新下载node: 14.x.x.
    step2.使用控制面板卸载高版本已安装的node,并安装刚刚下载的旧版本node
    step3.执行
npm uninstall -g npm  # 全局卸载npm,默认卸载高版本npm

step4.再次执行

npm uninstall -g npm  # 很玄学,但是再次执行卸载的确会更新旧版本npm

当你使用了正确的npm版本安装sass依赖时由于国内的网络问题,需要更换镜像源否则会爆红

  • 执行
npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass
npm install

如果你是按照官方旧版文档安装的,那么当你成功安装所有依赖,开始构建小程序时。按照官方给出的命令,依旧会报错,不要惊慌,官方偷偷的更改了构建命令
+

npm run build:weapp

是新版的构建命令

至此,小程序构建完成,在dist目录下可以找到构建好的微信小程序源码,并且可以进行源码级调试
但上传时会提示:单个分包/主包大小不能超过 2M,因此上传失败。
构建discuz论坛系统过程中最大的坑就在这里。
事实上,无论是新版文档还是旧版文档,能安装成功的最新版本是3.0.6。而这个版本,无论是小程序还是pc都已被官方弃用。官方已经在论坛中发布了discuz的全新4.2版本,以及免编译的小程序源码。discuz也更新成了单圈版本(用户为站长粉丝)和多圈版本(用户为数据粉丝)。而这些,在官方文档中,只字未提。

新版构建

所以可以简化小程序的构建流程为一步:下载论坛内官方提供的源码并上传到自己的账号上。

  • 如果你已经安装了3.0.6版本的pc版,想升级官方提供的4.2react版,请注意:官方提供了两个升级包,请下载覆盖安装版,文件大小为31M。并且在网站目录下执行官方提供的升级命令,否则会出现数据库链接失败

后记

人生没有白走的路,多钻研,多动手才能实现目标。在此次构建过程中,尽管途中对npm进行了一系列操作(或者尝试了HBuilderX),实际上都是无效的。但是,每一次的失败,都在通往成功。

猜你喜欢

转载自blog.csdn.net/qq_46832407/article/details/129865000