Окружение виртуального хостинга ========================== Окружение виртуальных хостингов зачастую весьма ограничено в настройках конфигурации и структуры директорий. Тем не менее, в большинстве случаев, внеся некоторые корректировки возможно запустить Yii2 на виртуальном хостинге. Установка Basic приложения. --------------------------- Поскольку на виртуальном хостинге обычно только один webroot, то лучше использовать Basic приложение. Прочитайте раздел [Установка Yii](start-installation.md) и установите Basic приложение локально. После того как приложение работает локально, можно сделать некоторые корректировки, которые помогут разместить приложение на виртуальном хостинге. ### Переименование webroot Подключитесь к вашему виртуальному хостингу используя FTP или другой способ. Вероятнее всего вы увидите следующее: ``` config logs www ``` В приведенном выше описании, `www` - это webroot директория вебсервера. Она может называться по-другому. Возможные названия: `www`, `htdocs` или `public_html`. В Basic приложении webroot называется `web`. Перед загрузкой своего приложения на виртуальный хостинг, переименуйте локальный webroot на название webroot виртуального хостинга. Например `web` в `www` или `public_html`, в зависимости от наименования webroot вашего хостинга. ### Корневая директория FTP доступна для записи Если вы можете записать в корневую директорию, так где располагаются `config`, `logs` и `www`, то загрузите сюда же `assets`, `commands` и остальные директории, также как у вас локально. ### Добавим настройки для вебсервера Если ваш сервер Apache, то вы можете добавить в `web`(или `public_html`, или наподобие, там где располагается `index.php` файл) директорию один файл `.htaccess` со следующим содержимым: ``` Options +FollowSymLinks IndexIgnore */* RewriteEngine on # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward it to index.php RewriteRule . index.php ``` В случае использования nginx не требуется каких-либо дополнительных настроек. ### Проверка требований Для того чтобы запустить Yii, ваш веб-сервер должен соответствовать его требованиям. Минимальное требование к PHP - это его версия 5.4. Для того, чтобы проверить требования, скопируйте `requirements.php` из корневого каталога в каталог webroot и запустить его с помощью браузера, используя url `http://example.com/requirements.php`. Не забудьте после проверки требований удалить файл `requirements.php`. Установка Advanced приложения --------------------------------- Установка Advanced приложения немного сложнее, чем установка Basic, из-за того, что в Advanced приложении имеются две директории webroot, работа с которыми на виртуальном хостинге не поддерживается. Нам нужно внести изменения в структуру директорий. ### Перемещение входных скриптов в одну директорию webroot Для начала нам необходимо директория webroot. Создайте новую директорию и назовите её, так же как на виртуальном хостинге, например как описывалось выше в [Переименование webroot](#renaming-webroot) `www` или `public_html`, или наподобие. Затем создайте следующую структуру в `www` директории, которую вы только что создали: ``` www admin backend common console environments frontend ... ``` `www` будет нашей фронтенд директорией, переместите в неё всё из `frontend/web`. Также поступите и для `backend/web`, скопировав всё в `www/admin`. В каждом случае нужно настроить пути внутри файлов `index.php` и `index-test.php`. ### Отдельные сессии и куки Изначально подразумевалось, что приложения бекенд и фронтенд располагаются на разных доменах. Когда мы перенесли всё в один домен, то куки и сессии из бекенда и фронтенда будут пересекаться. Для исправления этого внесите следующие настройки в конфигурацию backend приложения `backend/config/main.php`: ```php 'components' => [ 'request' => [ 'csrfParam' => '_backendCSRF', 'csrfCookie' => [ 'httpOnly' => true, 'path' => '/admin', ], ], 'user' => [ 'identityCookie' => [ 'name' => '_backendIdentity', 'path' => '/admin', 'httpOnly' => true, ], ], 'session' => [ 'name' => 'BACKENDSESSID', 'cookieParams' => [ 'path' => '/admin', ], ], ], ```