yii2部署:共享托管环境
yii2高级模板是前后台分离的,在本地测试的时候通常是绑定两个域名到前后台目录下,从而通过不同的域名访问前后,如:www.frontend.com访问前台,www.backend.com访问后台。
但是有时候我们的线上环境不支持绑定二级域名,这样我们就得通过同一个域名访问我们的前后台了。Yii2通过如下方式实现:
1、在服务器上的web根目录下创建一个admin目录,用于存放后台相关文件
2、将后台backend目录下web目录里的文件放入到admin目录下
3、将前台frontend目录下的web目录里的文件放入到服务器上的web根目录下
变更后目录结构如下:
对于每种情况下,你需要调整`index.php 和
index-test.php` 里面引用的目录结构。
分离 Session 和 Cookie
通常情况下,backend 和 frontend 运行在不同的域下,当我们将其都移到同一个域时, frontend 和 backend 将会共享相同的 cookie,这样会造成冲突。为了修复这个问题,如下调整 backend 的应用程序配置文件 backend/config/main.php
:
'components' => [ 'request' => [ 'csrfParam' => '_backendCSRF', 'csrfCookie' => [ 'httpOnly' => true, 'path' => '/admin', ], ], 'user' => [ 'identityCookie' => [ 'name' => '_backendIdentity', 'path' => '/admin', 'httpOnly' => true, ], ], 'session' => [ 'name' => 'BACKENDSESSID', 'cookieParams' => [ 'path' => '/admin', ], ], ],
到这里你就可以通过你的域名访问前后台了,如通过www.example.com访问前台,www.example.com/admin 访问后台
A PHPer and a Linuxer