Files
yii2/docs/guide-ru/tutorial-shared-hosting.md
2015-06-28 17:20:46 +03:00

121 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Окружение виртуального хостинга
==========================
Окружение виртуальных хостингов зачастую весьма ограничено в настройках конфигурации и структуры директорий.
Тем не менее, в большинстве случаев, внеся некоторые корректировки возможно запустить Yii2 на виртуальном хостинге.
Установка Basic приложения.
---------------------------
Поскольку на виртуальном хостинге обычно только один webroot, то лучше использовать Basic приложение. Прочитайте раздел
[Установка Yii](start-installation.md) и установите Basic приложение локально. После того как приложение работает локально,
можно сделать некоторые корректировки, которые помогут разместить приложение на виртуальном хостинге.
### Переименование webroot <span id="renaming-webroot"></span>
Подключитесь к вашему виртуальному хостингу используя 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` и остальные директории, также как у вас локально.
### Добавим настройки для вебсервера <span id="add-extras-for-webserver"></span>
Если ваш сервер 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',
],
],
],
```