二次开发部署

#概述

本文将针对 Discuz! Q 二次开发的开发环境及代码部署进行说明。

#环境配置

开发环境使用 Nginx 1.18.0 、PHP 7.3.23 、CentOS 7.6 版本为例。详情参见:基于手动配置的 Nginx 环境

#代码部署

Discuz! Q 开源主仓库共有4个,若要 fork 仓库进行手动部署,则需要组合四个仓库的代码。详情如下:

  1. Discuz-Q: git@gitee.com:Discuz/Discuz-Q.git #Discuz! Q 后端主程序
  2. Discuz-Q-Framework: git@gitee.com:Discuz/Discuz-Q-Framework.git #Discuz! Q后端抽象类程序
  3. Discuz-Q-uniapp: git@gitee.com:Discuz/Discuz-Q-uniapp.git #Discuz! Q H5及小程序代码
  4. Discuz-Q-Web: git@gitee.com:Discuz/Discuz-Q-Web.git #Discuz! Q PC端代码

首次部署执行以下命令:

  1. git clone git@gitee.com:Discuz/Discuz-Q.git dzq-dev
  2. cd dzq-dev
  3. git clone git@gitee.com:Discuz/Discuz-Q-Framework.git
  4. framework

dzq-dev 目录中新增public_1public_2两个文件夹,并在设置如下值:

  • public_1 中新增skin.conf 文件并写入1 值到文件中。
  • public_2 中新增skin.conf 文件并写入2 值到文件中。

TIP

安装项目依赖前必须安装 composer ,您可以使用命令composer install 进行安装。

使用cd ../ 回到dzq-dev 同级目录,使用clone 命令拉取前端代码。

  1. git clone git@gitee.com:Discuz/Discuz-Q-uniapp discuz-uniapp
  2. git clone git@gitee.com:Discuz/Discuz-Q-Web.git discuz-web

TIP

以下的脚本执行需要安装 npm 环境。

把以下脚本内容复制到 back.sh 文件中。

  1. #!/bin/bash
  2. export PATH=$PATH:/usr/local/bin
  3. BASE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
  4. cd $BASE/dzq-dev
  5. git pull origin master
  6. cd $BASE/dzq-dev/framework
  7. git pull origin master
  8. cd $BASE/dzq-dev/resources/frame
  9. npm install
  10. npm run build-admin
  11. npm run build-admin:pay
  12. rm -rf $BASE/dzq-dev/public_2/static-admin
  13. cp -r $BASE/dzq-dev/public_pay/* $BASE/dzq-dev/public_2/
  14. rm -rf $BASE/dzq-dev/public_1/static-admin
  15. cp -r $BASE/dzq-dev/public/static-admin $BASE/dzq-dev/public_1/
  16. cp $BASE/dzq-dev/public/admin.html $BASE/dzq-dev/public_1/

把以下脚本内容复制到 H5.sh 文件中。

  1. #!/bin/bash
  2. export PATH=$PATH:/usr/local/bin
  3. BASE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
  4. cd $BASE/discuz-uniapp
  5. git pull origin master
  6. npm install
  7. echo ============build h5====================
  8. npm run build:h5
  9. echo ============build h5 play===============
  10. npm run build:h5-play
  11. echo =============delete static====================
  12. rm -rf $BASE/dzq-dev/public/static
  13. rm -rf $BASE/dzq-dev/public_1/static
  14. rm -rf $BASE/dzq-dev/public_2/static
  15. echo ============copy dist to public===============
  16. cp -r $BASE/discuz-uniapp/dist/build/h5/* $BASE/dzq-dev/public/
  17. cp -r $BASE/discuz-uniapp/dist/build/h5/* $BASE/dzq-dev/public_1/
  18. cp -r $BASE/discuz-uniapp/dist/build/h5-play/* $BASE/dzq-dev/public_2/

把以下脚本内容复制到 pc.sh 文件中。

  1. #!/bin/bash
  2. export PATH=$PATH:/usr/local/bin
  3. BASE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
  4. cd $BASE/discuz-web/
  5. git pull origin master
  6. npm install
  7. npm run build:spa
  8. rm -rf $BASE/dzq-dev/public/invite
  9. rm -rf $BASE/dzq-dev/public/manage
  10. rm -rf $BASE/dzq-dev/public/modify
  11. rm -rf $BASE/dzq-dev/public/my
  12. rm -rf $BASE/dzq-dev/public/_nuxt
  13. rm -rf $BASE/dzq-dev/public/site
  14. rm -rf $BASE/dzq-dev/public/thread
  15. rm -rf $BASE/dzq-dev/public/topic
  16. rm -rf $BASE/dzq-dev/public/user
  17. mv dist/index.html dist/pc.html
  18. cp -r $BASE/discuz-web/dist/* $BASE/dzq-dev/public/
  19. rm -rf $BASE/dzq-dev/public_1/invite
  20. rm -rf $BASE/dzq-dev/public_1/manage
  21. rm -rf $BASE/dzq-dev/public_1/modify
  22. rm -rf $BASE/dzq-dev/public_1/my
  23. rm -rf $BASE/dzq-dev/public_1/_nuxt
  24. rm -rf $BASE/dzq-dev/public_1/site
  25. rm -rf $BASE/dzq-dev/public_1/thread
  26. rm -rf $BASE/dzq-dev/public_1/topic
  27. rm -rf $BASE/dzq-dev/public_1/user
  28. cp -r $BASE/discuz-web/dist/* $BASE/dzq-dev/public_1/
  29. rm -rf $BASE/discuz-web/dist
  30. cd $BASE/discuz-web/
  31. npm run build:pay-spa
  32. rm -rf $BASE/dzq-dev/public_2/invite
  33. rm -rf $BASE/dzq-dev/public_2/manage
  34. rm -rf $BASE/dzq-dev/public_2/modify
  35. rm -rf $BASE/dzq-dev/public_2/my
  36. rm -rf $BASE/dzq-dev/public_2/_nuxt
  37. rm -rf $BASE/dzq-dev/public_2/site
  38. rm -rf $BASE/dzq-dev/public_2/thread
  39. rm -rf $BASE/dzq-dev/public_2/topic
  40. rm -rf $BASE/dzq-dev/public_2/user
  41. mv dist/index.html dist/pc.html
  42. cp -r $BASE/discuz-web/dist/* $BASE/dzq-dev/public_2/
  43. rm -rf $BASE/discuz-web/dist

把以上三个脚本文件back.shH5.shpc.sh 放置与dzq-dev 文件同级目录下,并分别执行:

  1. sh back.sh
  2. sh H5.sh
  3. sh pc.sh

构建并组合好所有的代码后,需使用git clone git@gitee.com:Discuz/Discuz-Q-Update.git 下载命令执行文件。

TIP

若无权限,则需要从官方提供的安装包中,安装包/app/Console/Commands/Upgrades/ 目录下复制所有的文件到项目目录/app/Console/Commands/Upgrades/下。

此处就已完成全部代码整合,配置好 Nginx 服务后访问https://域名/install 即可安装站点。

WARNING

首次安装后,再次升级时,只需要执行back.shpc.shH5.sh即可。数据迁移查看每个版本的命令,详情参见:手动升级方式