宝塔面板Docker部署(旧版本)
提示
此文档只适合v3.3.0之前版本部署。
知识库系统涉及的运行环境比较复杂,建议使用Docker部署,Docker的使用在宝塔面板上操作非常简便。
运行环境
注意
如果找不到Docker菜单,可能是由于宝塔面板版本太低,请及时升级。
步骤1:
登录宝塔面板后,单击左侧菜单最底部的【自定义菜单】,开启【Docker】菜单。单击左侧菜单【Docker】,出现提示安装Docker,单击【安装】。步骤2:
单击【软件商店】,安装好【Nginx】和【进程守护管理器】。
添加站点
⚠️ 警告
PHP版本一定要设置为纯静态,否则后续步骤会出现问题。
- 步骤1:
单击【网站】->【PHP项目】->【添加站点】,填写好【域名】,【根目录】保持默认值即可,无需要创建数据库,PHP版设置为【纯静态】,单击【提交】。 - 步骤2:
单击网站列表该站点的【设置】,单击【SSL】->【Let's Encrypt】,选择【文件验证】,勾选上域名,单击【申请】,等待完成SSL证书申请。 - 步骤3:
单击网站列表该站点【根目录】进入文件夹,单击【上传】->【上传文件】,选择官网下载的源码包,单击【开始上传】。 - 步骤4:
上传完毕以后,右键单击源码包,单击【解压】。
Docker部署
- 步骤1:
打开站点目录下的【docker】目录,右键单击【docker-compose.example.yml】文件,单击【复制】,在空白处单击右键,单击【粘贴】,将新文件命名为【docker-compose.yml】。 - 步骤2:
Docker知识科普
一般情况下,docker端口挂载的格式都是"端口1:端口2","端口1"为挂载主机端口,"端口2"为容器内部端口。所以我们在主机访问端口时,要访问"127.0.0.1:端口1"。 如果进入本容器内部或者容器之间的通讯,访问的"端口2"。容器之间的访问,使用“容器名:端口"。本项目除了使用主机 Nginx代理nginx容器,其他都是nginx容器与其他容器他们之间通讯。
打开【docker-compose.yml】文件,按文件注释的内容③和⑦自定义修改相关容器密码,并在本地电脑记录要求记录的信息,操作完保存文件。一般情况下,默认的容器名和挂载端口不会有冲突,如果熟悉docker并发现容器名或挂载端口有冲突,可以修改①~⑨的其它选项。
- 步骤3:
注意
id为纯数字,请勿按图片的id填写,按自己实际情况填写。
浏览器打开新的窗口访问宝塔面板,单击【菜单】->【终端】,登录系统管理员账号,在终端输入id www
并按回车键,可以看到终端返回的信息,信息为 www用户的用户id和用户组id,分别将uid的id和gid的id复制到【docker-compose.yml】文件中"user:"后面,格式如"uid的id:gid的id",修改后【保存】文件,这样PHP容器就可以以www的权限进行运行。
id www
# uid=1001(www) gid=1002(www) groups=1002(www)
- 步骤4:
单击【Docker】->【项目模块】->【搜索本地模块】->【📂(文件夹小图标)】,选择站点目录下的/docker目录,单击【搜索】,模板名选择【docker】,单击【添加】。
- 步骤5:
单击【Docker】->【项目】->【添加Composer项目】,在【Composer模块】选择【docker】,填写名称,单击【添加】。添加成功以后,如图所示。
- 步骤6:
提示
该反向代理为主机Nginx代理到Ngxin容器,代理的端口为Nginx容器挂载主机的端口。
单击【网站】,找到前面步骤添加的站点,点击【设置】->【反向代理】->【添加反向代理】,填写127.0.0.1:180
,其中180为Docker的Nginx容器挂载主机的端口,按实际挂载的端口填写。
- 步骤7: 单击【反向代理】->【配置文件】,在 Nginx 配置上添加一行配置。
proxy_set_header X-Forwarded-Proto $scheme;
程序安装
注意
如果访问页面出现"No input file specified",是因为站点目录设置为server/pulibc,宝塔面板生成.user.ini文件影响到容器运行。请将目录设置为项目根目录,并删除掉server/public/.user.ini文件,单击【Docker】->【容器】,选择所有容器,单击【批量操作】->【重启容器】。重新访问即可。
步骤1:
在浏览器访问站点,进入程序安装界面,单击【我已阅读并同意】->【继续】。步骤2:
进入安装信息填写页面,以下信息非常重要,填写错误无法通过安装,填写信息大部分都站点目录的docker/docker-compose.yml文件中。
【Mysql配置项】的【数据库主机】填写 Mysql容器名称,【端口号】填写Mysql容器内部端口号,【数据库用户】填写root,【密码】和【数据库名称】填写与docker-compose.yml设置一样。
【Redis配置项】的【数据库主机】填写Redis容器名称,【端口号】填写Redis容器内部端口号。
【PostgreSQL配置项】数据主机填写PostgreSQL容器名称,【端口号】填写PostgreSQL容器内部端口号,【数据库用户】和【数据密码】和【数据库名称】都填写与docker-compose.yml设置一样。
然后填写后台超级管理员账号和名称即可,单击【继续】进行安装。
访问地址
安装成功好,打开一下链接可以访问相应页面。 管理后台地址:http://域名/admin 用户前台地址:http://域名/pc
定时任务
⚠️ 警告
定时任务不设置,会导致一些业务无法正常使用。
点击【计划任务】,设置任务类型为 【Shell脚本】、填写任务名称、执行周期设置为【N分钟】【1分钟】,URL地址为docker exec mddai-php-8.0 php think crontab
,“mddai-php-8.0”为PHP的容器名,请以项目实际容器名为准,然后【添加任务】。
守护进程设置
注意
按文档添加多个守护进程。
QA拆分守护进程
添加第一个守护进程。 单击【软件商店】,找到软件【进程守护管理器】,单击【设置】->【守护进程管理】->【添加守护进程】。
【名称】自定义填写,【启动用户】设置为 root,运行目录选择站点目录。启动命令填写
docker exec mddai-php-8.0 php think queue:listen --timeout 300 --queue qaJob
其中的"mddai-php-8.0"为PHP容器名称,根据实际修改。单击【确定】即可填写完成。
向量化守护进程
单击【软件商店】,找到软件【进程守护管理器】,单击【设置】->【守护进程管理】->【添加守护进程】。
【名称】自定义填写,【启动用户】设置为 root,运行目录选择站点目录。启动命令填写
docker exec mddai-php-8.0 php think queue:listen --timeout 120 --queue emJob
其中的"mddai-php-8.0"为PHP容器名称,根据实际修改。单击【确定】即可填写完成。
SD守护进程
单击【软件商店】,找到软件【进程守护管理器】,单击【设置】->【守护进程管理】->【添加守护进程】。
【名称】自定义填写,【启动用户】设置为 root,运行目录选择站点目录。启动命令填写
docker exec mddai-php-8.0 php think queue:listen --timeout 3000 --queue ChatMoneySdJob
其中的"mddai-php-8.0"为PHP容器名称,根据实际修改。单击【确定】即可填写完成。
授权
注意
1.授权文件与产品一一对应,如果不是同一产品,将无法使用。
2.授权文件与项目域名也是一一对应,不然无法使用。
- 步骤1:
购买后源码,登录官网,下载授权文件。 - 步骤2:
添加授权文件到server/license目录,并命名为:my.license ,如果仍无法使用,请联系客服。
特别注意(使用必看)
⚠️ 警告
docker/data目录及其下文件不能修改权限,修改权限会导致异常,甚至无法恢复数据!!!