Для запуска платформы необходимо установить инструмент для управления зависимостями в PHP - Composer. При использовании терминала ConEmu, который включен в локальный веб-сервер OpenServer под Windows, это шаг можно пропустить.
composer -V
. Ожидаемый ответ: Composer version x.x.xsudo mv composer.phar /usr/local/bin/composer
;php composer.phar update
;composer update
.common/config/main-local.php
. Данный файл создается на предыдущем шаге в момент инициализации приложения и уже содержит некоторые локальные настройки в зависимости от выбранного окружения. Доступы к базе данных необходимо указать в следующем блоке:
'components' => [
...
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=databaseName',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
]
...
]
php yii migrate
из корня проекта.Все вышеизложенное можно описать более кратко:
composer update
;php init
;common/config/main-local.php
;php yii migrate
.Следующим шагом установки является настройка Доменов для приложения.
После установки платформы следует выполнить консольную команду php requirements.php
. После выполнения команды будет отображен отчет о проверке установленных расширений.
Данный check релизован на основе решения Requirements.
Для того, чтобы гарантировать верную настройку сервера, необходимо удостовериться не только в конфигурациях PHP CLI, но и в конфигурациях PHP вызываемого Apache, так как их php.ini могут отличаться друг от друга.
Для проверки настройки сервера на PHP CLI необходимо запустить из корня проекта следующую консольную команду: php requirements.php
.
Для проверки настройки сервера на уровне Apache нужно на время перенести файл requirements.php
в папку frontend/web и backend/web. А также подкорректировать путь до директории Yii2 фреймворка в файле index.php:
// you may need to adjust this path to the correct Yii framework path
$frameworkPath = dirname(__FILE__) . '/../../vendor/yiisoft/yii2';
Таким образом файл будет доступен для Apache. В зависимости от доменных настроек платформы файл будет доступен по следующим ссылкам:
Обращаем ваше внимание, что в целях безопасности после проверки необходимо удалить файл requirements.php из открытых папок frontend/web и backend/web.
Приложение и его панель управления (Личный кабинет) в целях безопасности настраиваются на разных поддоменах. Обычно Панель управления размещается на субдомене admin.site.com, а сайт на основном домене site.com. Также не стоит забывать об отдельном поддомене для “статики” (загрузки файлов) http://static.site.com
.
Домены должны быть настроены следующим образом:
Домен | Описание | Папка |
---|---|---|
site.com | Frontend. Внешний сайт. “Морда” | /frontend/web |
admin.site.com | Backend. Панель управления | /backend/web |
static.site.com | Static. Папка для загружаемых файлов с приложений. | /static |
Для правильной генерации ссылок в системе необходимо задать домены в конфигурации системы common/config/params.php
:
return [
'adminDomain' => 'admin.cmstaskon.loc',
'publicDomain' => 'cmstaskon.loc',
'staticDomain' => 'static.cmstaskon.loc'
];
Для локальной настройки рекомендуется вносить изменения в файл common/config/params-local.php
, так как он находится в .gitignore и изменения не попадут в систему контроля версий Git.
Расшифровка ключей конфигурации:
adminDomain - панель управления (backend);
publicDomain - внешний сайт (frontend);
staticDomain - загружаемые файлы системы (static).
В ходе разработки в некоторых случаях необходимо сгенерировать ссылку с одного приложения на другое, для таких целей в системе присутствуют алиасы (aliases):
@admin - панель управления (backend);
@public - внешний сайт (frontend);
@static - загружаемые файлы системы (static);
@staticPath - путь до папки для загружаемых файлов системы (static).
Пример генерации ссылки на backend из другого приложения:
<?= Html::a(Yii::t('app', 'sign_in'), '@admin/login', [
'class' => 'nav-link'
]); ?>
В некоторых случаях необходимо развернуть проект на одном домене. Для начала необходимо настроить домен в корень проекта и произвести следующие изменения в файлах системы:
Заменить содержимое .htaccess в корне проекта на следующее:
AddDefaultCharset UTF-8
Options +FollowSymLinks
DirectoryIndex index.php index.html
RewriteEngine on
RewriteRule /\. - [L,F]
# define the app environment variable
RewriteCond %{REQUEST_URI} !^/((frontend|backend)/web|admin|static)
RewriteRule ^ - [E=APP:frontend]
RewriteCond %{REQUEST_URI} (?!^/backend/web)^/admin
RewriteRule ^ - [E=APP:backend]
RewriteCond %{REQUEST_URI} (?!^/static)^/static
RewriteRule ^ - [E=APP:static]
# rewrite the URI of the frontend app
RewriteCond %{ENV:APP} =frontend
RewriteRule ^ frontend/web%{REQUEST_URI}
# if a directory or a file exists, use the request directly
RewriteCond %{ENV:APP} =frontend
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward the request to index.php
RewriteRule ^ frontend/web/index.php [L]
# redirect to the URL without a trailing slash (uncomment if necessary)
RewriteRule ^admin/$ /admin [L,R=301]
# rewrite the URI of the backend app
RewriteCond %{ENV:APP} =backend
RewriteRule ^admin/?(.*)$ backend/web/$1
# if a directory or a file exists, use the request directly
RewriteCond %{ENV:APP} =backend
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward the request to index.php
RewriteRule ^ backend/web/index.php [L]
# handle a directory trailing slash, redirect to the initial URI instead the rewritten one
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [L,R=301]
# rewrite the URI of the static folder
RewriteCond %{ENV:APP} =static
RewriteRule ^static/?(.*)$ static/$1
# if a directory or a file exists, use the request directly
RewriteCond %{ENV:APP} =static
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# handle a directory trailing slash, redirect to the initial URI instead the rewritten one
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [L,R=301]
Путь admin можно заменить на необходимое.
common/config/params.php
на следующие:
return [
'adminDomain' => 'cmstaskon.loc/admin',
'publicDomain' => 'cmstaskon.loc',
'staticDomain' => 'cmstaskon.loc/static'
];
frontend/config/main.php
.
'request' => [
//'csrfCookie' => [
//'domain' => ".{$params['publicDomain']}"
//],
'csrfParam' => '_csrf'
]
'session' => [
'class' => 'common\components\Session',
//'cookieParams' => [
//'domain' => ".{$params['publicDomain']}"
//]
]
'container' => [
'definitions' => [
//'yii\web\Cookie' => ['domain' => ".{$params['publicDomain']}"]
],
]
backend/config/main.php
.'baseUrl' => '/admin'
в секцию components.request и убрать csrfCookie.domain из данной секции.
'request' => [
'baseUrl' => '/admin'
//'csrfCookie' => [
//'domain' => ".{$params['publicDomain']}"
//],
'csrfParam' => '_csrf'
]
'session' => [
'class' => 'common\components\Session',
//'cookieParams' => [
//'domain' => ".{$params['publicDomain']}"
//]
]
'container' => [
'definitions' => [
//'yii\web\Cookie' => ['domain' => ".{$params['publicDomain']}"],
'yii\data\Pagination' => ['pageSize' => 50]
],
]
common/modules/language/config/backend.php
и common/modules/language/config/frontend.php
.
'urlManager' => [
'class' => 'h0rseduck\multilingual\components\UrlManager',
'languageCookieOptions' => [
//'domain' => ".{$commonParams['publicDomain']}"
],
]
Для того, чтобы мы смогли Вам предоставить доступ расскажите немного о себе
Опишите в форме ниже задачу, которую требуется реализовать.