二次开发部署
#概述
本文将针对 Discuz! Q 二次开发的开发环境及代码部署进行说明。
#环境配置
开发环境使用 Nginx 1.18.0 、PHP 7.3.23 、CentOS 7.6 版本为例。详情参见:基于手动配置的 Nginx 环境。
#代码部署
Discuz! Q 开源主仓库共有4个,若要 fork 仓库进行手动部署,则需要组合四个仓库的代码。详情如下:
Discuz-Q: git@gitee.com:Discuz/Discuz-Q.git #Discuz! Q 后端主程序Discuz-Q-Framework: git@gitee.com:Discuz/Discuz-Q-Framework.git #Discuz! Q后端抽象类程序Discuz-Q-uniapp: git@gitee.com:Discuz/Discuz-Q-uniapp.git #Discuz! Q H5及小程序代码Discuz-Q-Web: git@gitee.com:Discuz/Discuz-Q-Web.git #Discuz! Q PC端代码
首次部署执行以下命令:
git clone git@gitee.com:Discuz/Discuz-Q.git dzq-devcd dzq-devgit clone git@gitee.com:Discuz/Discuz-Q-Framework.gitframework
在dzq-dev 目录中新增public_1 与public_2两个文件夹,并在设置如下值:
public_1中新增skin.conf文件并写入1值到文件中。public_2中新增skin.conf文件并写入2值到文件中。
TIP
安装项目依赖前必须安装 composer ,您可以使用命令composer install 进行安装。
使用cd ../ 回到dzq-dev 同级目录,使用clone 命令拉取前端代码。
git clone git@gitee.com:Discuz/Discuz-Q-uniapp discuz-uniappgit clone git@gitee.com:Discuz/Discuz-Q-Web.git discuz-web
TIP
以下的脚本执行需要安装 npm 环境。
把以下脚本内容复制到 back.sh 文件中。
#!/bin/bashexport PATH=$PATH:/usr/local/binBASE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"cd $BASE/dzq-devgit pull origin mastercd $BASE/dzq-dev/frameworkgit pull origin mastercd $BASE/dzq-dev/resources/framenpm installnpm run build-adminnpm run build-admin:payrm -rf $BASE/dzq-dev/public_2/static-admincp -r $BASE/dzq-dev/public_pay/* $BASE/dzq-dev/public_2/rm -rf $BASE/dzq-dev/public_1/static-admincp -r $BASE/dzq-dev/public/static-admin $BASE/dzq-dev/public_1/cp $BASE/dzq-dev/public/admin.html $BASE/dzq-dev/public_1/
把以下脚本内容复制到 H5.sh 文件中。
#!/bin/bashexport PATH=$PATH:/usr/local/binBASE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"cd $BASE/discuz-uniappgit pull origin masternpm installecho ============build h5====================npm run build:h5echo ============build h5 play===============npm run build:h5-playecho =============delete static====================rm -rf $BASE/dzq-dev/public/staticrm -rf $BASE/dzq-dev/public_1/staticrm -rf $BASE/dzq-dev/public_2/staticecho ============copy dist to public===============cp -r $BASE/discuz-uniapp/dist/build/h5/* $BASE/dzq-dev/public/cp -r $BASE/discuz-uniapp/dist/build/h5/* $BASE/dzq-dev/public_1/cp -r $BASE/discuz-uniapp/dist/build/h5-play/* $BASE/dzq-dev/public_2/
把以下脚本内容复制到 pc.sh 文件中。
#!/bin/bashexport PATH=$PATH:/usr/local/binBASE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"cd $BASE/discuz-web/git pull origin masternpm installnpm run build:sparm -rf $BASE/dzq-dev/public/inviterm -rf $BASE/dzq-dev/public/managerm -rf $BASE/dzq-dev/public/modifyrm -rf $BASE/dzq-dev/public/myrm -rf $BASE/dzq-dev/public/_nuxtrm -rf $BASE/dzq-dev/public/siterm -rf $BASE/dzq-dev/public/threadrm -rf $BASE/dzq-dev/public/topicrm -rf $BASE/dzq-dev/public/usermv dist/index.html dist/pc.htmlcp -r $BASE/discuz-web/dist/* $BASE/dzq-dev/public/rm -rf $BASE/dzq-dev/public_1/inviterm -rf $BASE/dzq-dev/public_1/managerm -rf $BASE/dzq-dev/public_1/modifyrm -rf $BASE/dzq-dev/public_1/myrm -rf $BASE/dzq-dev/public_1/_nuxtrm -rf $BASE/dzq-dev/public_1/siterm -rf $BASE/dzq-dev/public_1/threadrm -rf $BASE/dzq-dev/public_1/topicrm -rf $BASE/dzq-dev/public_1/usercp -r $BASE/discuz-web/dist/* $BASE/dzq-dev/public_1/rm -rf $BASE/discuz-web/distcd $BASE/discuz-web/npm run build:pay-sparm -rf $BASE/dzq-dev/public_2/inviterm -rf $BASE/dzq-dev/public_2/managerm -rf $BASE/dzq-dev/public_2/modifyrm -rf $BASE/dzq-dev/public_2/myrm -rf $BASE/dzq-dev/public_2/_nuxtrm -rf $BASE/dzq-dev/public_2/siterm -rf $BASE/dzq-dev/public_2/threadrm -rf $BASE/dzq-dev/public_2/topicrm -rf $BASE/dzq-dev/public_2/usermv dist/index.html dist/pc.htmlcp -r $BASE/discuz-web/dist/* $BASE/dzq-dev/public_2/rm -rf $BASE/discuz-web/dist
把以上三个脚本文件back.sh、H5.sh、pc.sh 放置与dzq-dev 文件同级目录下,并分别执行:
sh back.shsh H5.shsh 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.sh、pc.sh、H5.sh即可。数据迁移查看每个版本的命令,详情参见:手动升级方式。
