В статье описан процесс установки и настройки advanced приложения Yii2 на хостинг. Установка приложения будет осуществляться с использованием инструмента composer.
В первую очередь необходимо подключиться к хостингу по ssh и скачать composer. Чтобы скачать и установить composer необходимо выполнить следующие команды в консоли:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
!!! Следует обратить внимание на вторую строку, где осуществляется проверка хэша. Если вышла новая версия composer, то хэш может не совпадать и Вы получите сообщение 'Installer corrupt'. Чтобы исправить эту проблему, зайдите на сайт composer, и используйте новый код из раздела Command-line installation.
При скачивании и установке composer необходимо проверить, какой командой вызывается интерпретатор php, так, например, если на хостинге php вызывается командой php5.6, то в вышеуказанном примере команд необходимо вместо php писать php5.6, в дальнейшем будет использоваться команда php5.6.
После выполнения вышеуказанных команд в директории появится файл composer.phar.
Для установки Yii2 advanced с использованием composer необходимо выполнить следующую команду:
composer create-project --prefer-dist yiisoft/yii2-app-advanced my-advanced-yii-app
Если хостинг не предоставляет возможности использования команды composer, то установить Yii2 можно следующей командой:
php5.6 composer.phar create-project --prefer-dist yiisoft/yii2-app-advanced my-advanced-yii-app
Зачастую, при установке на виртуальном хостинге у меня возникает следующая проблема:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- yiisoft/yii2 2.0.3 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
- yiisoft/yii2 2.0.2 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
- yiisoft/yii2 2.0.1 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
- yiisoft/yii2 2.0.0 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
- Installation request for yiisoft/yii2 * -> satisfiable by yiisoft/yii2[2.0.0, 2.0.1, 2.0.2, 2.0.3].
Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
Я решаю данную проблему следующей командой:
php5.6 composer.phar global require "fxp/composer-asset-plugin:^1.0"
после чего запускаю установку yii2 advanced повторно.
В процессе установки yii2 программа попросит вас ввести токен, который можно сгенерировать на github.com (нужно быть зарегистрированным пользователем).
Чтобы сгенерировать токен для yii2 нужно:
- Войти на гитхаб;
- Перейти в раздел настроек - нажать на иконку пользователя и выбрать пункт Settings;
- В левом меню раздела настроек найти пункт "Personal access tokens" и нажать на него;
- Нажать кнопку "Generate new token";
- В открывшейся странице заполнить поле описания токена "Token description" и выполнить необходимые настройки;
- Нажать кнопку "Generate token", после чего можно скопировать созданный токен.
Далее токен необходимо ввести в консоль. После выполнения команды начнется процесс загрузки и установки yii2 advanced. После окончания процесса в текущей директория появится новая директория: my-advanced-yii-app.
Далее необходимо перейти в директорию с приложением, в данном случае my-advanced-yii-app и выполнить команду
php5.6 init
и ответить на задаваемые программой вопросы. После выполненных действий сайт будет доступен по адресу http://sitename.ru/frontend/web/
Для того, чтобы исключить из пути сайта frontend, необходимо создать символьную ссылку следующей командой:
ln -s frontend/web web
после чего сайт будет доступен по пути http://sitename.ru/web/
Далее настроим доступ к бэкенду, создаем символьную ссылку:
cd frontend/web
ln -s ../../backend/web admin
Теперь наш бэкенд доступен по ссылке http://sitename.ru/web/admin
Теперь настроим красивые url. Создадим файл .htaccess по пути frontend/web со следующим содержимым:
Options +FollowSymlinks
IndexIgnore */*
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
Затем создадим файл .htaccess в корне сайта со следующим содержимым:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/.*
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteRule ^(.*)$ web/$1 [L]
RewriteCond %{REQUEST_URI} !^/web/
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ web/index.php
</IfModule>
<Limit GET POST PUT DELETE>
Order allow,deny
Allow from all
</Limit>
В секции 'request' файла frontend/config/main.php впишем следующее значение
'baseUrl' => '',
В том же файле настраиваем urlManager:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'' => 'site/index',
'index' => 'site/index',
'about' => 'site/about',
'contact' => 'site/contact',
'signup' => 'site/signup',
'login' => 'site/login',
],
],
Теперь страницы сайта доступны по таким адресам, как например http://sitename.ru/about
На этом установка и настройка advanced шаблона Yii2 закончена, приложение готово к работе.