Tp6.0.2版本前后端多应用配置
Tp6.0.2版本前后端多应用配置
之前记录过6.0.0的前后端分离部署操作,最近升级到了Tp6.0.2版本,折腾了下多应用配置,貌似还是有点差异,记录下。
NO1:下载TP6.0.2版本,可直接在指定目录下执行命令如下:
composer create-project topthink/think=6.0.x-dev tp
当前稳定版本是6.0.2,后续应该会更新,下载完成后为单应用模式,开启多应用需自行配置了
NO2:首先是参照官方文档操作了,安装多应用扩展,执行命令如下:
composer require topthink/think-multi-app
在6.0.0配置时貌似木有这个,可能是优化处理了
NO3:参照官方文档删减无用的应用目录,折腾好后的目录结构一般如下
├─app 应用目录
│ ├─home 主应用
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ ├─config 配置目录
│ │ ├─route 路由目录
│ │ └─ ... 更多类库目录
│ │
│ ├─admin 后台应用
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ ├─config 配置目录
│ │ ├─route 路由目录
│ │ └─ ... 更多类库目录
│
├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件 (此处我用的同一入口文件,方便.htaccess隐藏index.php)
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写
│
├─config 全局应用配置目录
├─runtime 运行时目录
│ ├─home home应用运行时目录
│ └─admin admin应用运行时目录
可以看到路由编写文件都放入到了各自的应用下,互不干扰
NO4:此处注意,需要解析两个子域名来访问前后端,如 前端:home.xxx.com,后端:admin.xxx.com,两个域名都是指向项目的public下。找了一圈多应用模式的开启设置项 auto_multi_app,木有看到,应该是优化了
NO5:之后按官方文档处理域名绑定,在conf/app.php内的域名绑定内添加如下:
// 域名绑定(自动多应用模式有效)
'domain_bind' => [
'home.xx.com' => 'home',
'admin.xx.com' => 'admin',
],
这样访问home.xx.com与admin.xx.com即分别指向项目home与admin了
NO6:其他与TP6.0一样,在app下也新建自定义应用目录及相关的控制器、模型、视图,也可加当前应用配置等
app\home\controller\Index.php
app\admin\controller\Index.php
注意,各个Index.php头部引用的命名空间是不同的,
home引用的是 namespace app\home\controller;
admin引用的是 namespace app\admin\controller;
NO7:配置项目文件我的开启了强制路由,文件为 conf/route.php
// 是否强制使用路由
'url_route_must' => true,
NO8:最后重要的一点是修改.htaccess如下:
将最后这句:
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
替换为:
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
之后就可以正常访问前后端了