Главная | Документаци для разраотчиков | Установка платформы TaskOn

Установка платформы TaskOn

Для запуска платформы необходимо установить инструмент для управления зависимостями в PHP - Composer. При использовании терминала ConEmu, который включен в локальный веб-сервер OpenServer под Windows, это шаг можно пропустить.

Установка Composer

Локальная установка Composer

  1. Перейти по ссылке https://getcomposer.org/download/;
  2. Выполнить команды из блока.

Глобальная установка Composer

  1. Windows
    1. Необходимо скачать Composer-Setup.exe со страницы https://getcomposer.org/doc/00-intro.md#installation-windows;
    2. После окончания процесса установки, открыть командную строку. Для этого нажмите сочетание клавиш CTRL + R, впишите cmd и нажмите кнопку OK;
    3. Выполнить следующую команду для проверки установки:
      composer -V. Ожидаемый ответ: Composer version x.x.x
  2. Linux/MacOS
    1. Выполнить действия из пункта “Локальная установка”;
    2. Выполнить команду sudo mv composer.phar /usr/local/bin/composer;
    3. Теперь можно запускать Composer независимо от текущего расположения в терминале.

Процесс установки

  1. Для установки платформы необходимо обновить зависимости с помощью Composer, выполнив команду в корне проекта:
    1. Если композер был установлен локально,
      php composer.phar update;
    2. Если композер был установлен глобально,
      composer update.
  2. Далее выполнить команду php init для инициализации проекта. В момент инициализации выбрать одно из окружений (Development или Production).
  3. Создать базу данных для проекта, если она не была создана ранее и указать доступы в конфигурационном файле common/config/main-local.php. Данный файл создается на предыдущем шаге в момент инициализации приложения и уже содержит некоторые локальные настройки в зависимости от выбранного окружения. Доступы к базе данных необходимо указать в следующем блоке:
    1. 'components' => [
    2. ...
    3. 'db' => [
    4. 'class' => 'yii\db\Connection',
    5. 'dsn' => 'mysql:host=localhost;dbname=databaseName',
    6. 'username' => 'username',
    7. 'password' => 'password',
    8. 'charset' => 'utf8',
    9. ]
    10. ...
    11. ]
  4. Далее необходимо применить миграции, выполнив команду 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:

  1. // you may need to adjust this path to the correct Yii framework path
  2. $frameworkPath = dirname(__FILE__) . '/../../vendor/yiisoft/yii2';

Таким образом файл будет доступен для Apache. В зависимости от доменных настроек платформы файл будет доступен по следующим ссылкам:

  • site.ru/requirements.php (frontend);
  • admin.site.ru/requirements.php или site.ru/admin/requirements.php (backend).

Обращаем ваше внимание, что в целях безопасности после проверки необходимо удалить файл 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:

  1. return [
  2. 'adminDomain' => 'admin.cmstaskon.loc',
  3. 'publicDomain' => 'cmstaskon.loc',
  4. 'staticDomain' => 'static.cmstaskon.loc'
  5. ];

Для локальной настройки рекомендуется вносить изменения в файл common/config/params-local.php, так как он находится в .gitignore и изменения не попадут в систему контроля версий Git.

Расшифровка ключей конфигурации:
adminDomain - панель управления (backend);
publicDomain - внешний сайт (frontend);
staticDomain - загружаемые файлы системы (static).

В ходе разработки в некоторых случаях необходимо сгенерировать ссылку с одного приложения на другое, для таких целей в системе присутствуют алиасы (aliases):
@admin - панель управления (backend);
@public - внешний сайт (frontend);
@static - загружаемые файлы системы (static);
@staticPath - путь до папки для загружаемых файлов системы (static).
Пример генерации ссылки на backend из другого приложения:

  1. <?= Html::a(Yii::t('app', 'sign_in'), '@admin/login', [
  2. 'class' => 'nav-link'
  3. ]); ?>

Установка системы на один домен для серверов Apache

В некоторых случаях необходимо развернуть проект на одном домене. Для начала необходимо настроить домен в корень проекта и произвести следующие изменения в файлах системы:

  1. Заменить содержимое .htaccess в корне проекта на следующее:

    1. AddDefaultCharset UTF-8
    2. Options +FollowSymLinks
    3. DirectoryIndex index.php index.html
    4. RewriteEngine on
    5. RewriteRule /\. - [L,F]
    6. # define the app environment variable
    7. RewriteCond %{REQUEST_URI} !^/((frontend|backend)/web|admin|static)
    8. RewriteRule ^ - [E=APP:frontend]
    9. RewriteCond %{REQUEST_URI} (?!^/backend/web)^/admin
    10. RewriteRule ^ - [E=APP:backend]
    11. RewriteCond %{REQUEST_URI} (?!^/static)^/static
    12. RewriteRule ^ - [E=APP:static]
    13. # rewrite the URI of the frontend app
    14. RewriteCond %{ENV:APP} =frontend
    15. RewriteRule ^ frontend/web%{REQUEST_URI}
    16. # if a directory or a file exists, use the request directly
    17. RewriteCond %{ENV:APP} =frontend
    18. RewriteCond %{REQUEST_FILENAME} !-f
    19. RewriteCond %{REQUEST_FILENAME} !-d
    20. # otherwise forward the request to index.php
    21. RewriteRule ^ frontend/web/index.php [L]
    22. # redirect to the URL without a trailing slash (uncomment if necessary)
    23. RewriteRule ^admin/$ /admin [L,R=301]
    24. # rewrite the URI of the backend app
    25. RewriteCond %{ENV:APP} =backend
    26. RewriteRule ^admin/?(.*)$ backend/web/$1
    27. # if a directory or a file exists, use the request directly
    28. RewriteCond %{ENV:APP} =backend
    29. RewriteCond %{REQUEST_FILENAME} !-f
    30. RewriteCond %{REQUEST_FILENAME} !-d
    31. # otherwise forward the request to index.php
    32. RewriteRule ^ backend/web/index.php [L]
    33. # handle a directory trailing slash, redirect to the initial URI instead the rewritten one
    34. RewriteCond %{REQUEST_FILENAME} -d
    35. RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [L,R=301]
    36. # rewrite the URI of the static folder
    37. RewriteCond %{ENV:APP} =static
    38. RewriteRule ^static/?(.*)$ static/$1
    39. # if a directory or a file exists, use the request directly
    40. RewriteCond %{ENV:APP} =static
    41. RewriteCond %{REQUEST_FILENAME} !-f
    42. RewriteCond %{REQUEST_FILENAME} !-d
    43. # handle a directory trailing slash, redirect to the initial URI instead the rewritten one
    44. RewriteCond %{REQUEST_FILENAME} -d
    45. RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [L,R=301]

    Путь admin можно заменить на необходимое.

  2. Изменить домены в конфигурации системы common/config/params.php на следующие:
    1. return [
    2. 'adminDomain' => 'cmstaskon.loc/admin',
    3. 'publicDomain' => 'cmstaskon.loc',
    4. 'staticDomain' => 'cmstaskon.loc/static'
    5. ];
  3. Внести изменения в конфигурационный файл фронтенда frontend/config/main.php.
    1. Добавить параметр ‘baseUrl’ => ‘’ в секцию components.request и убрать csrfCookie.domain из данной секции.
      1. 'request' => [
      2. //'csrfCookie' => [
      3. //'domain' => ".{$params['publicDomain']}"
      4. //],
      5. 'csrfParam' => '_csrf'
      6. ]
    2. Убрать cookieParams.domain секции components.session
      1. 'session' => [
      2. 'class' => 'common\components\Session',
      3. //'cookieParams' => [
      4. //'domain' => ".{$params['publicDomain']}"
      5. //]
      6. ]
    3. Убрать yii\web\Cookie.domain секции container.definitions
      1. 'container' => [
      2. 'definitions' => [
      3. //'yii\web\Cookie' => ['domain' => ".{$params['publicDomain']}"]
      4. ],
      5. ]
  4. Внести изменения в конфигурационный файл бекенда backend/config/main.php.
    1. Добавить параметр 'baseUrl' => '/admin' в секцию components.request и убрать csrfCookie.domain из данной секции.
      1. 'request' => [
      2. 'baseUrl' => '/admin'
      3. //'csrfCookie' => [
      4. //'domain' => ".{$params['publicDomain']}"
      5. //],
      6. 'csrfParam' => '_csrf'
      7. ]
    2. Убрать cookieParams.domain из секции components.session.
      1. 'session' => [
      2. 'class' => 'common\components\Session',
      3. //'cookieParams' => [
      4. //'domain' => ".{$params['publicDomain']}"
      5. //]
      6. ]
    3. Убрать yii\web\Cookie.domain секции container.definitions
      1. 'container' => [
      2. 'definitions' => [
      3. //'yii\web\Cookie' => ['domain' => ".{$params['publicDomain']}"],
      4. 'yii\data\Pagination' => ['pageSize' => 50]
      5. ],
      6. ]
  5. Внести изменения в конфигурационные файлы модуля language в случае его использования, common/modules/language/config/backend.php и common/modules/language/config/frontend.php.
    1. Убрать languageCookieOptions.domain из секции components.urlManager
      1. 'urlManager' => [
      2. 'class' => 'h0rseduck\multilingual\components\UrlManager',
      3. 'languageCookieOptions' => [
      4. //'domain' => ".{$commonParams['publicDomain']}"
      5. ],
      6. ]