Найти в Дзене
Beget

Установка PHP-фреймворков

Любому веб-мастеру рано или поздно может понадобиться выполнить задачу, под которую может не подходить уже готовая CMS. При этом не секрет, что написание проекта полностью с нуля - это достаточно длительное и трудозатратное занятие, которое обычно не оправдано. В этих случаях имеет смысл использовать какой-нибудь фреймворк - программную платформу, предоставляющую набор библиотек и уже содержащую определённую структуру приложения, что снижает затраты на проектирование. Одними из наиболее популярных фреймворков для PHP являются Yii, Laravel и Symfony. Именно их установку мы и рассмотрим в этой статье. Вне зависимости от выбранного фреймоворка потребуется Composer - менеджер зависимостей для PHP. Если на аккаунте его ещё нет - установить его Вы можете по нашей инструкции. Yii имеет два варианта установки – Basic и Advanced. Они существенно различаются, поэтому разберем каждый вариант по отдельности. Начнем с наиболее простого варианта веб-приложения – Yii Basic. Сначала создайте сайт, на
Оглавление

Любому веб-мастеру рано или поздно может понадобиться выполнить задачу, под которую может не подходить уже готовая CMS. При этом не секрет, что написание проекта полностью с нуля - это достаточно длительное и трудозатратное занятие, которое обычно не оправдано.

В этих случаях имеет смысл использовать какой-нибудь фреймворк - программную платформу, предоставляющую набор библиотек и уже содержащую определённую структуру приложения, что снижает затраты на проектирование.

Одними из наиболее популярных фреймворков для PHP являются Yii, Laravel и Symfony. Именно их установку мы и рассмотрим в этой статье.

Подготовка

Вне зависимости от выбранного фреймоворка потребуется Composer - менеджер зависимостей для PHP. Если на аккаунте его ещё нет - установить его Вы можете по нашей инструкции.

Установка Yii

Yii имеет два варианта установки – Basic и Advanced. Они существенно различаются, поэтому разберем каждый вариант по отдельности.

Установка Yii Basic

Начнем с наиболее простого варианта веб-приложения – Yii Basic. Сначала создайте сайт, на который будет произведена установка. Для этого откройте раздел «Сайты» в панели управления и задайте имя каталога, где будет размещен сайт.

После этого в меню настроек сайта (три точки справа от его названия) выберите «Прикрепить домен».

-2

В выпадающем меню выберите нужный вам домен и нажмите «Прикрепить».

-3

Если своего домена у вас еще нет, вы можете зарегистрировать его в разделе «Домены и поддомены» в панели управления или воспользоваться предоставляемым нами техническим доменом.

Для примера будет использоваться технический домен, добавив к нему поддомен yii-basic. Для этого откройте раздел «Домены и поддомены» и введите полное имя домена в форму добавления. Прикрепите домен к созданному ранее сайту. Также сайт можно создать при добавлении поддомена – выбирайте удобный вам вариант.

-4

После проделанных действий в разделе «Сайты» вы должны увидеть примерно такую структуру:

-5

Далее подключитесь к учетной записи по SSH и установите фреймворк. Подробно процесс подключения к аккаунту по SSH описан в нашей статье. В рамках данной статьи фреймворк будет устанавливаться в директорию yii-basic. Перейдите в нее для установки.

cd ~/yii-basic/

Директория public_html создается автоматически, ее нужно удалить.

rm -r public_html/

Загрузите архив с готовым шаблоном приложения, распакуйте его и удалите архив. Ссылку на актуальную версию фреймворка вы можете найти тут: https://www.yiiframework.com/download

wget -q 'https://github.com/yiisoft/yii2/releases/download/2.0.49/yii-basic-app-2.0.49.tgz'
tar xzf yii-basic-app-2.0.49.tgz --strip 1
rm yii-basic-app-2.0.49.tgz

Обновите зависимости, выполнив команду:

php8.2 $(which composer-phar) update

Loading composer repositories with package information
Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/
Updating dependencies (including require-dev)
Package operations: 0 installs, 47 updates, 0 removals
- Updating ezyang/htmlpurifier (v4.16.0 => v4.17.0): Loading from cache
- Updating bower-asset/jquery (3.7.0 => 3.7.1): Loading from cache
- Updating yiisoft/yii2 (2.0.49 => 2.0.49.3): Loading from cache
- Updating yiisoft/yii2-debug (2.1.24 => 2.1.25): Loading from cache
- Updating symfony/polyfill-mbstring (v1.28.0 => v1.29.0): Loading from cache
- Updating symfony/polyfill-ctype (v1.28.0 => v1.29.0): Loading from cache
- Updating masterminds/html5 (2.8.1 => 2.9.0): Downloading (100%)
- Updating symfony/dom-crawler (v6.3.4 => v6.4.4): Downloading (100%)
- Updating symfony/deprecation-contracts (v3.3.0 => v3.4.0): Downloading (100%)
- Updating symfony/browser-kit (v6.3.2 => v6.4.3): Downloading (100%)
- Updating sebastian/resource-operations (3.0.3 => 3.0.4): Loading from cache
- Updating sebastian/global-state (5.0.6 => 5.0.7): Loading from cache
- Updating sebastian/exporter (4.0.5 => 4.0.6): Loading from cache
- Updating sebastian/diff (4.0.5 => 4.0.6): Loading from cache
- Updating sebastian/cli-parser (1.0.1 => 1.0.2): Loading from cache
- Updating theseer/tokenizer (1.2.1 => 1.2.3): Loading from cache
- Updating nikic/php-parser (v4.17.1 => v5.0.2): Loading from cache
- Updating sebastian/lines-of-code (1.0.3 => 1.0.4): Loading from cache
- Updating sebastian/complexity (2.0.2 => 2.0.3): Loading from cache
- Updating phpunit/php-code-coverage (9.2.27 => 9.2.31): Loading from cache
- Updating phar-io/manifest (2.0.3 => 2.0.4): Loading from cache
- Updating guzzlehttp/psr7 (2.6.1 => 2.6.2): Loading from cache
- Updating symfony/css-selector (v6.3.2 => v7.0.3): Downloading (100%)
- Updating codeception/lib-web (1.0.2 => 1.0.6): Loading from cache
- Updating symfony/polyfill-php72 (v1.28.0 => v1.29.0): Loading from cache
- Updating symfony/event-dispatcher-contracts (v3.3.0 => v3.4.2): Downloading (100%)
- Updating symfony/polyfill-intl-normalizer (v1.28.0 => v1.29.0): Loading from cache
- Updating symfony/polyfill-intl-grapheme (v1.28.0 => v1.29.0): Loading from cache
- Updating symfony/service-contracts (v3.3.0 => v3.4.2): Downloading (100%)
- Updating symfony/string (v6.3.2 => v7.0.4): Downloading (100%)
- Updating codeception/stub (4.1.1 => 4.1.3): Loading from cache
- Updating symfony/yaml (v6.3.3 => v7.0.3): Downloading (100%)
- Updating symfony/var-dumper (v6.3.4 => v7.0.6): Downloading (100%)
- Updating symfony/finder (v6.3.3 => v7.0.0): Downloading (100%)
- Updating symfony/event-dispatcher (v6.3.2 => v7.0.3): Downloading (100%)
- Updating symfony/console (v6.3.4 => v7.0.6): Downloading (100%)
- Updating psy/psysh (v0.11.20 => v0.12.3): Loading from cache
- Updating codeception/codeception (5.0.11 => 5.1.2): Loading from cache
- Updating codeception/module-yii2 (1.1.9 => 1.1.10): Loading from cache
- Updating codeception/module-filesystem (3.0.0 => 3.0.1): Loading from cache
- Updating bower-asset/bootstrap (v5.3.1 => v5.3.3): Loading from cache
- Updating fakerphp/faker (v1.23.0 => v1.23.1): Loading from cache
- Updating symfony/polyfill-intl-idn (v1.28.0 => v1.29.0): Loading from cache
- Updating symfony/mime (v6.3.3 => v7.0.6): Downloading (100%)
- Updating doctrine/lexer (3.0.0 => 3.0.1): Downloading (100%)
- Updating egulias/email-validator (4.0.1 => 4.0.2): Downloading (100%)
- Updating symfony/mailer (v6.3.0 => v7.0.6): Downloading (100%)
Writing lock file
Generating autoload files
57 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Обратите внимание!

Если вы устанавливали composer локально по нашей статье, вместо $(which composer-phar) можно подставить путь до локально установленного composer – обычно это ~/.local/bin/composer. Если для вашего проекта требуется другая версия PHP, измените ее в команде на нужную вам.

Для корректной работы веб-сервера необходимо создать ссылку c именем public_html, указывающую на каталог web.

ln -s web public_html

Теперь необходимо дополнить базовую конфигурацию. Создайте резервную копию файла конфигурации config/web.php, затем сгенерируйте ключ, который будет использоваться для валидации cookies. Сохраните его во временную переменную и добавьте его в файл как значение ключа cookieValidationKey.

cp config/web.php config/web.php_backup
export cookieKey=$(openssl rand -base64 12 | md5sum | awk '{ print $1 }')
sed -i "s+'cookieValidationKey' => ''+'cookieValidationKey' => '$cookieKey'+g" config/web.php

Проверьте, что ключ успешно подставился, выполнив команду:

rg cookieValid config/web.php

Пример вывода:

17: 'cookieValidationKey' => '627cbbaaaff3843116c3f75f70871e58',

Значение cookieValidationKey не должно быть пустым. Само значение при этом может отличаться от примера выше, поскольку строка генерируется случайным образом. Если изменение не применилось, сгенерируйте ключ вручную командой:

openssl rand -base64 12 | md5sum | awk '{ print $1 }'

Скопируйте полученную строку и вставьте в файл config/web.php вручную, например, через файловый менеджер.

Если на сайте предполагается использование базы данных - понадобится также отредактировать файл config/db.php. В этом файле нужно изменить dsn, указав в параметре dbname имя Вашей базы, а также ключи username и password. Значение параметра dsn в результате должно быть примерно таким: mysql:host=localhost;dbname=account_yii2

Обратите внимание!

На нашем хостинге имя пользователя MySQL всегда соответствует имени базы данных. Создать базу данных при необходимости вы можете в разделе MySQL. Процесс описан более подробно в руководстве по панели управления.

На этом настройка базовой версии Yii завершена – приложение полностью готово к дальнейшему использованию.

Установка Yii Advanced

Версия Advanced имеет более сложную структуру и собственную админ-панель, которую обычно размещают на отдельном домене. Изменяется и сам порядок установки. Подготовительный этап с установкой Composer (при необходимости) и созданием сайта аналогичен процессу установки Yii Basic. Единственное отличие – к сайту нужно прикрепить два домена, а не один. У нас будут поддомены yii-advanced и backend.yii-advanced, прикрепленные к сайту yii-advanced.

В панели управления эта структура будет выглядеть так:

-6

Удалите содержимое созданного сайта, загрузите и распакуйте архив с приложением, обновите зависимости.

cd ~/yii-advanced/
rm -r public_html
wget -q 'https://github.com/yiisoft/yii2/releases/download/2.0.49/yii-advanced-app-2.0.49.tgz'
tar xzf yii-advanced-app-2.0.49.tgz --strip 1
rm yii-advanced-app-2.0.49.tgz
php8.2 $(which composer-phar) update

Loading composer repositories with package information
Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/
Updating dependencies (including require-dev)
Package operations: 0 installs, 47 updates, 0 removals
- Updating ezyang/htmlpurifier (v4.16.0 => v4.17.0): Loading from cache
- Updating bower-asset/jquery (3.7.0 => 3.7.1): Loading from cache
- Updating yiisoft/yii2 (2.0.49 => 2.0.49.3): Loading from cache
- Updating yiisoft/yii2-debug (2.1.24 => 2.1.25): Loading from cache
- Updating symfony/polyfill-mbstring (v1.28.0 => v1.29.0): Loading from cache
- Updating symfony/polyfill-ctype (v1.28.0 => v1.29.0): Loading from cache
- Updating masterminds/html5 (2.8.1 => 2.9.0): Loading from cache
- Updating symfony/dom-crawler (v6.3.4 => v6.4.4): Loading from cache
- Updating symfony/deprecation-contracts (v3.3.0 => v3.4.0): Loading from cache
- Updating symfony/browser-kit (v6.3.2 => v6.4.3): Loading from cache
- Updating sebastian/resource-operations (3.0.3 => 3.0.4): Loading from cache
- Updating sebastian/global-state (5.0.6 => 5.0.7): Loading from cache
- Updating sebastian/exporter (4.0.5 => 4.0.6): Loading from cache
- Updating sebastian/diff (4.0.5 => 4.0.6): Loading from cache
- Updating sebastian/cli-parser (1.0.1 => 1.0.2): Loading from cache
- Updating theseer/tokenizer (1.2.1 => 1.2.3): Loading from cache
- Updating nikic/php-parser (v4.17.1 => v5.0.2): Loading from cache
- Updating sebastian/lines-of-code (1.0.3 => 1.0.4): Loading from cache
- Updating sebastian/complexity (2.0.2 => 2.0.3): Loading from cache
- Updating phpunit/php-code-coverage (9.2.27 => 9.2.31): Loading from cache
- Updating phar-io/manifest (2.0.3 => 2.0.4): Loading from cache
- Updating guzzlehttp/psr7 (2.6.1 => 2.6.2): Loading from cache
- Updating symfony/css-selector (v6.3.2 => v7.0.3): Loading from cache
- Updating codeception/lib-web (1.0.2 => 1.0.6): Loading from cache
- Updating symfony/polyfill-php72 (v1.28.0 => v1.29.0): Loading from cache
- Updating symfony/event-dispatcher-contracts (v3.3.0 => v3.4.2): Loading from cache
- Updating symfony/polyfill-intl-normalizer (v1.28.0 => v1.29.0): Loading from cache
- Updating symfony/polyfill-intl-grapheme (v1.28.0 => v1.29.0): Loading from cache
- Updating symfony/service-contracts (v3.3.0 => v3.4.2): Loading from cache
- Updating symfony/string (v6.3.2 => v7.0.4): Loading from cache
- Updating codeception/stub (4.1.1 => 4.1.3): Loading from cache
- Updating symfony/yaml (v6.3.3 => v7.0.3): Loading from cache
- Updating symfony/var-dumper (v6.3.4 => v7.0.6): Loading from cache
- Updating symfony/finder (v6.3.3 => v7.0.0): Loading from cache
- Updating symfony/event-dispatcher (v6.3.2 => v7.0.3): Loading from cache
- Updating symfony/console (v6.3.4 => v7.0.6): Loading from cache
- Updating psy/psysh (v0.11.20 => v0.12.3): Loading from cache
- Updating codeception/codeception (5.0.11 => 5.1.2): Loading from cache
- Updating codeception/module-yii2 (1.1.9 => 1.1.10): Loading from cache
- Updating codeception/module-filesystem (3.0.0 => 3.0.1): Loading from cache
- Updating bower-asset/bootstrap (v5.3.1 => v5.3.3): Loading from cache
- Updating fakerphp/faker (v1.23.0 => v1.23.1): Loading from cache
- Updating symfony/polyfill-intl-idn (v1.28.0 => v1.29.0): Loading from cache
- Updating symfony/mime (v6.3.3 => v7.0.6): Loading from cache
- Updating doctrine/lexer (3.0.0 => 3.0.1): Loading from cache
- Updating egulias/email-validator (4.0.1 => 4.0.2): Loading from cache
- Updating symfony/mailer (v6.3.0 => v7.0.6): Loading from cache
Writing lock file
Generating autoload files
57 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Обратите внимание!

Если вы устанавливали composer локально по нашей статье, вместо $(which composer-phar) можно подставить путь до локально установленного composer – обычно это ~/.local/bin/composer. Если для вашего проекта требуется другая версия PHP, измените ее в команде на нужную вам.

Также потребуется создать символьную ссылку с именем public_html, но в этом случае она уже будет указывать на каталог frontend/web.

ln -s frontend/web public_html

Выполните инициализацию приложения:

php8.2 init

Yii Application Initialization Tool v1.0

Which environment do you want the application to be initialized in?

[0] Development
[1] Production

Your choice [0-1, or "q" to quit] 0

Initialize the application under 'Development' environment? [yes|no] yes

Start initialization ...

generate common/config/params-local.php
generate common/config/main-local.php
generate common/config/test-local.php
generate common/config/codeception-local.php
generate frontend/web/index.php
generate frontend/web/index-test.php
generate frontend/web/robots.txt
generate frontend/config/params-local.php
generate frontend/config/main-local.php
generate frontend/config/test-local.php
generate frontend/config/codeception-local.php
generate yii_test
generate backend/web/index.php
generate backend/web/index-test.php
generate backend/web/robots.txt
generate backend/config/params-local.php
generate backend/config/main-local.php
generate backend/config/test-local.php
generate backend/config/codeception-local.php
generate console/config/params-local.php
generate console/config/main-local.php
generate console/config/test-local.php
generate yii_test.bat
generate yii
generate cookie validation key in backend/config/main-local.php
generate cookie validation key in common/config/codeception-local.php
generate cookie validation key in frontend/config/main-local.php
chmod 0777 backend/runtime
chmod 0777 backend/web/assets
chmod 0777 console/runtime
chmod 0777 frontend/runtime
chmod 0777 frontend/web/assets
chmod 0755 yii
chmod 0755 yii_test

... initialization completed.

Теперь создайте в корневом каталоге публичной части ссылку на каталог административной части сайта:

cd frontend/web/
ln -s ../../backend/web backend

После этого необходимо внести правила в файл .htaccess в директории frontend/web, чтобы при переходе по поддомену backend.domain.ru срабатывало перенаправление на созданную нами ссылку. Пример файла .htaccess:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?backend.domain.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/backend
RewriteRule ^(.*)$ backend/$1 [L]

Обратите внимание!

Домен в примере выше необходимо скорректировать на прикрепленный к сайту домен бэкенда.

Ключи валидации cookies указываются в следующих файлах (пути от корневого каталога проекта):

  • environments/prod/backend/config/main-local.php
  • environments/prod/frontend/config/main-local.php
  • environments/dev/backend/config/main-local.php
  • environments/dev/frontend/config/main-local.php

Настройка подключения к базе данных производится в нескольких файлах (пути от корневого каталога проекта):

  • environments/dev/common/config/main-local.php
  • environments/prod/common/config/main-local.php
  • environments/dev/common/config/test-local.php

Настройка параметров аналогична basic-версии. На этом настройка завершена, приложение полностью готово к работе.

Установка Yii через Composer

Кроме загрузки архивом имеется также возможность установки через Composer.

Структура команды для установки Yii следующая:

php8.2 $(which composer-phar) create-project --prefer-dist yiisoft/yii2-вариант_установки каталог_проекта

Обратите внимание!

Если вы устанавливали composer локально по нашей статье, вместо $(which composer-phar) можно подставить путь до локально установленного composer – обычно это ~/.local/bin/composer. Если для вашего проекта требуется другая версия PHP, измените ее в команде на нужную вам.

По умолчанию будет установлена новейшая версия Yii. Если вы хотите установить определенную версию, укажите ее в конце команды, например:

php8.2 $(which composer-phar) create-project --prefer-dist yiisoft/yii2-вариант_установки каталог_проекта 2.0.45

Для установки Yii Basic выполните следующую команду (каталог проекта должен быть пуст!):

php8.2 $(which composer-phar) create-project --prefer-dist yiisoft/yii2-app-basic yii-basic

Creating a "yiisoft/yii2-app-basic" project at "./yii-basic"
Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/
Installing yiisoft/yii2-app-basic (2.0.45)
- Installing yiisoft/yii2-app-basic (2.0.45): Loading from cache
Created project in /home/a/account/yii-basic
Loading composer repositories with package information
Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/
Updating dependencies (including require-dev)
Package operations: 67 installs, 0 updates, 0 removals
- Installing yiisoft/yii2-composer (2.0.10): Loading from cache
- Installing myclabs/deep-copy (1.7.0): Loading from cache
- Installing codeception/specify (0.4.6): Downloading (100%)
- Installing sebastian/diff (1.4.3): Loading from cache
- Installing sebastian/recursion-context (2.0.0): Loading from cache
- Installing sebastian/exporter (2.0.0): Loading from cache
- Installing sebastian/comparator (1.2.4): Loading from cache
- Installing sebastian/version (2.0.1): Loading from cache
- Installing sebastian/code-unit-reverse-lookup (1.0.3): Loading from cache
- Installing phpunit/php-text-template (1.2.1): Loading from cache
- Installing phpunit/php-file-iterator (1.4.5): Loading from cache
- Installing phpunit/php-token-stream (1.4.12): Loading from cache
- Installing sebastian/environment (2.0.0): Loading from cache
- Installing phpunit/php-code-coverage (4.0.8): Loading from cache
- Installing sebastian/resource-operations (1.0.0): Loading from cache
- Installing doctrine/instantiator (1.0.5): Loading from cache
- Installing phpunit/php-timer (1.0.9): Loading from cache
- Installing symfony/polyfill-ctype (v1.19.0): Loading from cache
- Installing webmozart/assert (1.9.1): Loading from cache
- Installing phpdocumentor/reflection-common (1.0.1): Loading from cache
- Installing phpdocumentor/type-resolver (0.4.0): Loading from cache
- Installing phpdocumentor/reflection-docblock (3.3.2): Loading from cache
- Installing phpspec/prophecy (v1.10.3): Loading from cache
- Installing sebastian/global-state (1.1.1): Loading from cache
- Installing sebastian/object-enumerator (2.0.1): Loading from cache
- Installing symfony/yaml (v3.4.47): Loading from cache
- Installing phpunit/phpunit-mock-objects (3.4.4): Loading from cache
- Installing phpunit/phpunit (5.7.27): Loading from cache
- Installing codeception/phpunit-wrapper (6.0.22): Loading from cache
- Installing codeception/verify (0.5.0): Loading from cache
- Installing npm-asset/bootstrap (4.6.2): Loading from cache
- Installing paragonie/random_compat (v2.0.21): Loading from cache
- Installing bower-asset/jquery (3.7.1): Loading from cache
- Installing bower-asset/yii2-pjax (2.0.8): Loading from cache
- Installing bower-asset/punycode (v1.3.2): Loading from cache
- Installing bower-asset/inputmask (3.3.11): Loading from cache
- Installing cebe/markdown (1.2.1): Loading from cache
- Installing ezyang/htmlpurifier (v4.17.0): Loading from cache
- Installing yiisoft/yii2 (2.0.49.3): Loading from cache
- Installing yiisoft/yii2-bootstrap4 (2.0.11): Loading from cache
- Installing swiftmailer/swiftmailer (v5.4.12): Loading from cache
- Installing yiisoft/yii2-swiftmailer (2.0.7): Loading from cache
- Installing yiisoft/yii2-debug (2.1.25): Loading from cache
- Installing phpspec/php-diff (v1.1.3): Loading from cache
- Installing yiisoft/yii2-gii (2.2.6): Loading from cache
- Installing fakerphp/faker (v1.9.2): Loading from cache
- Installing yiisoft/yii2-faker (2.0.5): Loading from cache
- Installing symfony/finder (v3.4.47): Loading from cache
- Installing symfony/event-dispatcher (v3.4.47): Loading from cache
- Installing symfony/css-selector (v3.4.47): Loading from cache
- Installing symfony/polyfill-mbstring (v1.19.0): Loading from cache
- Installing psr/log (1.1.4): Loading from cache
- Installing symfony/debug (v3.4.47): Loading from cache
- Installing symfony/console (v3.4.47): Loading from cache
- Installing ralouphie/getallheaders (3.0.3): Loading from cache
- Installing psr/http-message (1.0.1): Loading from cache
- Installing guzzlehttp/psr7 (1.9.1): Loading from cache
- Installing codeception/stub (2.1.0): Loading from cache
- Installing codeception/lib-asserts (1.13.2): Loading from cache
- Installing behat/gherkin (v4.7.3): Loading from cache
- Installing codeception/codeception (4.2.2): Loading from cache
- Installing codeception/module-filesystem (1.0.3): Loading from cache
- Installing symfony/dom-crawler (v3.4.47): Loading from cache
- Installing symfony/browser-kit (v3.4.47): Loading from cache
- Installing codeception/lib-innerbrowser (1.5.1): Loading from cache
- Installing codeception/module-yii2 (1.1.5): Loading from cache
- Installing codeception/module-asserts (1.3.1): Loading from cache
phpunit/php-code-coverage suggests installing ext-xdebug (^2.5.1)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
phpunit/phpunit suggests installing ext-xdebug (*)
paragonie/random_compat suggests installing ext-libsodium (Provides a modern crypto API that can be used to generate random bytes.)
ezyang/htmlpurifier suggests installing cerdic/css-tidy (If you want to use the filter 'Filter.ExtractStyleBlocks'.)
symfony/event-dispatcher suggests installing symfony/dependency-injection
symfony/event-dispatcher suggests installing symfony/http-kernel
symfony/console suggests installing symfony/lock
symfony/console suggests installing symfony/process
guzzlehttp/psr7 suggests installing laminas/laminas-httphandlerrunner (Emit PSR-7 responses)
codeception/codeception suggests installing hoa/console (For interactive console functionality)
codeception/codeception suggests installing symfony/phpunit-bridge (For phpunit-bridge support)
codeception/codeception suggests installing stecman/symfony-console-completion (For BASH autocompletion)
symfony/browser-kit suggests installing symfony/process
Package phpunit/php-token-stream is abandoned, you should avoid using it. No replacement was suggested.
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
Package symfony/debug is abandoned, you should avoid using it. Use symfony/error-handler instead.
Writing lock file
Generating autoload files
20 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> yii\composer\Installer::postCreateProject
chmod('runtime', 0777)...done.
chmod('web/assets', 0777)...done.
chmod('yii', 0755)...done.
> yii\composer\Installer::postInstall

Теперь перейдите в каталог с проектом и создайте ссылку public_html, указывающую на каталог public:

cd yii-basic
ln -s web public_html

Настройка подключения к базе данных описана выше, в разделе Yii Basic.

Установка Yii Advanced происходит следующей командой:

php8.2 $(which composer-phar) create-project --prefer-dist yiisoft/yii2-app-advanced yii-advanced

Creating a "yiisoft/yii2-app-advanced" project at "./yii-advanced"
Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/
Installing yiisoft/yii2-app-advanced (2.0.45)
- Installing yiisoft/yii2-app-advanced (2.0.45): Loading from cache
Created project in /home/a/account/yii-advanced
Loading composer repositories with package information
Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/
Updating dependencies (including require-dev)
Package operations: 66 installs, 0 updates, 0 removals
- Installing yiisoft/yii2-composer (2.0.10): Loading from cache
- Installing sebastian/diff (1.4.3): Loading from cache
- Installing sebastian/recursion-context (2.0.0): Loading from cache
- Installing sebastian/exporter (2.0.0): Loading from cache
- Installing sebastian/comparator (1.2.4): Loading from cache
- Installing sebastian/version (2.0.1): Loading from cache
- Installing sebastian/code-unit-reverse-lookup (1.0.3): Loading from cache
- Installing phpunit/php-text-template (1.2.1): Loading from cache
- Installing phpunit/php-file-iterator (1.4.5): Loading from cache
- Installing phpunit/php-token-stream (1.4.12): Loading from cache
- Installing sebastian/environment (2.0.0): Loading from cache
- Installing phpunit/php-code-coverage (4.0.8): Loading from cache
- Installing sebastian/resource-operations (1.0.0): Loading from cache
- Installing doctrine/instantiator (1.0.5): Loading from cache
- Installing phpunit/php-timer (1.0.9): Loading from cache
- Installing symfony/polyfill-ctype (v1.19.0): Loading from cache
- Installing webmozart/assert (1.9.1): Loading from cache
- Installing phpdocumentor/reflection-common (1.0.1): Loading from cache
- Installing phpdocumentor/type-resolver (0.4.0): Loading from cache
- Installing phpdocumentor/reflection-docblock (3.3.2): Loading from cache
- Installing phpspec/prophecy (v1.10.3): Loading from cache
- Installing myclabs/deep-copy (1.7.0): Loading from cache
- Installing sebastian/global-state (1.1.1): Loading from cache
- Installing sebastian/object-enumerator (2.0.1): Loading from cache
- Installing symfony/yaml (v3.4.47): Loading from cache
- Installing phpunit/phpunit-mock-objects (3.4.4): Loading from cache
- Installing phpunit/phpunit (5.7.27): Loading from cache
- Installing codeception/phpunit-wrapper (6.0.22): Loading from cache
- Installing codeception/verify (0.5.0): Loading from cache
- Installing npm-asset/bootstrap (4.6.2): Loading from cache
- Installing paragonie/random_compat (v2.0.21): Loading from cache
- Installing bower-asset/jquery (3.7.1): Loading from cache
- Installing bower-asset/yii2-pjax (2.0.8): Loading from cache
- Installing bower-asset/punycode (v1.3.2): Loading from cache
- Installing bower-asset/inputmask (3.3.11): Loading from cache
- Installing cebe/markdown (1.2.1): Loading from cache
- Installing ezyang/htmlpurifier (v4.17.0): Loading from cache
- Installing yiisoft/yii2 (2.0.49.3): Loading from cache
- Installing yiisoft/yii2-bootstrap4 (2.0.11): Loading from cache
- Installing swiftmailer/swiftmailer (v5.4.12): Loading from cache
- Installing yiisoft/yii2-swiftmailer (2.0.7): Loading from cache
- Installing yiisoft/yii2-debug (2.1.25): Loading from cache
- Installing phpspec/php-diff (v1.1.3): Loading from cache
- Installing yiisoft/yii2-gii (2.2.6): Loading from cache
- Installing fakerphp/faker (v1.9.2): Loading from cache
- Installing yiisoft/yii2-faker (2.0.5): Loading from cache
- Installing symfony/finder (v3.4.47): Loading from cache
- Installing symfony/event-dispatcher (v3.4.47): Loading from cache
- Installing symfony/css-selector (v3.4.47): Loading from cache
- Installing symfony/polyfill-mbstring (v1.19.0): Loading from cache
- Installing psr/log (1.1.4): Loading from cache
- Installing symfony/debug (v3.4.47): Loading from cache
- Installing symfony/console (v3.4.47): Loading from cache
- Installing ralouphie/getallheaders (3.0.3): Loading from cache
- Installing psr/http-message (1.0.1): Loading from cache
- Installing guzzlehttp/psr7 (1.9.1): Loading from cache
- Installing codeception/stub (2.1.0): Loading from cache
- Installing codeception/lib-asserts (1.13.2): Loading from cache
- Installing behat/gherkin (v4.7.3): Loading from cache
- Installing codeception/codeception (4.2.2): Loading from cache
- Installing codeception/module-asserts (1.3.1): Loading from cache
- Installing symfony/dom-crawler (v3.4.47): Loading from cache
- Installing symfony/browser-kit (v3.4.47): Loading from cache
- Installing codeception/lib-innerbrowser (1.5.1): Loading from cache
- Installing codeception/module-yii2 (1.1.5): Loading from cache
- Installing codeception/module-filesystem (1.0.3): Loading from cache
phpunit/php-code-coverage suggests installing ext-xdebug (^2.5.1)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
phpunit/phpunit suggests installing ext-xdebug (*)
paragonie/random_compat suggests installing ext-libsodium (Provides a modern crypto API that can be used to generate random bytes.)
ezyang/htmlpurifier suggests installing cerdic/css-tidy (If you want to use the filter 'Filter.ExtractStyleBlocks'.)
symfony/event-dispatcher suggests installing symfony/dependency-injection
symfony/event-dispatcher suggests installing symfony/http-kernel
symfony/console suggests installing symfony/lock
symfony/console suggests installing symfony/process
guzzlehttp/psr7 suggests installing laminas/laminas-httphandlerrunner (Emit PSR-7 responses)
codeception/codeception suggests installing hoa/console (For interactive console functionality)
codeception/codeception suggests installing codeception/specify (BDD-style code blocks)
codeception/codeception suggests installing symfony/phpunit-bridge (For phpunit-bridge support)
codeception/codeception suggests installing stecman/symfony-console-completion (For BASH autocompletion)
symfony/browser-kit suggests installing symfony/process
Package phpunit/php-token-stream is abandoned, you should avoid using it. No replacement was suggested.
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
Package symfony/debug is abandoned, you should avoid using it. Use symfony/error-handler instead.
Writing lock file
Generating autoload files
20 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

В данном случае также потребуется создать ссылку с именем public_html, но в этом случае она уже будет указывать на каталог frontend/web.

cd yii-advanced
ln -s frontend/web public_html

Теперь создайте в корневом каталоге публичной части ссылку на каталог административной части сайта:

cd frontend/web/
ln -s ../../backend/web backend

После этого необходимо внести правила в файл .htaccess в корневом каталоге сайта, чтобы при переходе по поддомену backend.domain.ru срабатывало перенаправление на созданную нами ссылку.

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?backend.domain.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/backend
RewriteRule ^(.*)$ backend/$1 [L]

Обратите внимание!

Домен в примере выше необходимо скорректировать на прикрепленный к сайту домен бэкенда.

Настройка подключения к базе данных описана выше, в разделе Yii Advanced.

Инициализируйте dev-окружение:

php8.2 ~/yii-advanced/yii migrate

Yii Application Initialization Tool v1.0
Which environment do you want the application to be initialized in?
[0] Development
[1] Production
Your choice [0-1, or "q" to quit] 0
Initialize the application under 'Development' environment? [yes|no] yes
Start initialization ...
generate console/config/params-local.php
generate console/config/test-local.php
generate console/config/main-local.php
generate frontend/web/index-test.php
generate frontend/web/index.php
generate frontend/web/robots.txt
generate frontend/config/codeception-local.php
generate frontend/config/params-local.php
generate frontend/config/test-local.php
generate frontend/config/main-local.php
generate common/config/codeception-local.php
generate common/config/params-local.php
generate common/config/test-local.php
generate common/config/main-local.php
generate backend/web/index-test.php
generate backend/web/index.php
generate backend/web/robots.txt
generate backend/config/codeception-local.php
generate backend/config/params-local.php
generate backend/config/test-local.php
generate backend/config/main-local.php
generate yii_test.bat
generate yii_test
generate yii
generate cookie validation key in backend/config/main-local.php
generate cookie validation key in common/config/codeception-local.php
generate cookie validation key in frontend/config/main-local.php
chmod 0777 backend/runtime
chmod 0777 backend/web/assets
chmod 0777 console/runtime
chmod 0777 frontend/runtime
chmod 0777 frontend/web/assets
chmod 0755 yii
chmod 0755 yii_test
... initialization completed.

Выполните миграции:

php8.2 ~/yii-advanced/yii migrate

Yii Migration Tool (based on Yii v2.0.49.3)
Creating migration history table "migration"...Done.
Total 2 new migrations to be applied:
m130524_201442_init
m190124_110200_add_verification_token_column_to_user_table
Apply the above migrations? (yes|no) [no]:y
*** applying m130524_201442_init
> create table {{%user}} ... done (time: 0.007s)
*** applied m130524_201442_init (time: 0.015s)

*** applying m190124_110200_add_verification_token_column_to_user_table
> add column verification_token string NULL DEFAULT NULL to table {{%user}} ... done (time: 0.015s)
*** applied m190124_110200_add_verification_token_column_to_user_table (time: 0.020s)

2 migrations were applied.

Migrated up successfully.

Установка Symfony

Установка данного фреймворка на нашем хостинге возможна с помощью Composer. Перед установкой Symfony потребуется установить Composer версии 2 и выше локально, подробно процесс описан в нашей статье.

Для начала создайте сайт и привяжите к нему домен. Для этого откройте раздел Сайты и создайте сайт с нужным именем по инструкции: Сайты. Если свободный домен, на котором требуется разместить сайт, уже есть, прикрепите его в этом же разделе. Если домена нет - откройте раздел Домены и поддомены и добавьте домен в панель управления либо создайте поддомен на уже существующем.

После чего подключитесь к серверу по ssh, либо откройте веб-терминал, перейдите в директорию созданного сайта и удалите ее содержимое:

cd symfony/
rm -rf * .*

Обратите внимание!

В командах, указанных далее, используется версия php 8.2, поскольку это минимальная версия для Symfony 7 на момент написания статьи. Если для вашего проекта требуется другая версия, скорректируйте ее на соответствующую. В качестве пути до локально установленного Composer используется ~/.local/bin/composer, если вы устанавливали Composer в другую директорию, укажите актуальный путь в команде. Также убедитесь, что в разделе Сайты указана корректная версия php в настройках прикрепленного домена.

Создайте проект Symfony с помощью Composer:

php8.2 ~/.local/bin/composer create-project symfony/skeleton:"7.1.*" .

Creating a "symfony/skeleton:7.1.*" project at "./"
Installing symfony/skeleton (v7.1.99)
- Downloading symfony/skeleton (v7.1.99)
- Installing symfony/skeleton (v7.1.99): Extracting archive
Created project in /home/b/betutorial/symfony/.
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
- Locking symfony/flex (v2.4.5)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Downloading symfony/flex (v2.4.5)
- Installing symfony/flex (v2.4.5): Extracting archive
Generating autoload files
1 package you are using is looking for funding.
Use the `composer fund` command to find out more!

Run composer recipes at any time to see the status of your Symfony recipes.

Loading composer repositories with package information
Restricting packages listed in "symfony/symfony" to "7.1.*"
Updating dependencies
Lock file operations: 30 installs, 0 updates, 0 removals
...
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 30 installs, 0 updates, 0 removals
...
Generating autoload files
27 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Symfony operations: 4 recipes (84d44b6bf774ec8b5b8c9013e60d3263)
- Configuring symfony/flex (>=1.0): From github.com/symfony/recipes:main
- Configuring symfony/framework-bundle (>=7.0): From github.com/symfony/recipes:main
- Configuring symfony/console (>=5.3): From github.com/symfony/recipes:main
- Configuring symfony/routing (>=7.0): From github.com/symfony/recipes:main
Executing script cache:clear [OK]
Executing script assets:install public [OK]

What's next?


Some files have been created and/or updated to configure your new packages.
Please review, edit and commit them: these files are yours.

symfony/framework-bundle instructions:

* Run your application:
1. Go to the project directory
2. Create your code repository with the git init command
3. Download the Symfony CLI at https://symfony.com/download to install a development web server

* Read the documentation at https://symfony.com/doc

No security vulnerability advisories found.

No security vulnerability advisories found.

После чего инициализируйте веб-приложение:

php8.2 ~/.local/bin/composer require webapp

Running composer update symfony/webapp-pack
Loading composer repositories with package information
Restricting packages listed in "symfony/symfony" to "7.1.*"
Updating dependencies
Lock file operations: 106 installs, 0 updates, 0 removals
...
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 106 installs, 0 updates, 0 removals
...
Generating autoload files
120 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Symfony operations: 20 recipes (622d56465315f61bbe7e790a0847b0b6)
- Configuring symfony/webapp-pack (>=1.0): From github.com/symfony/recipes:main
- Configuring doctrine/doctrine-bundle (>=2.12): From github.com/symfony/recipes:main
- WARNING doctrine/doctrine-bundle (>=2.12): From github.com/symfony/recipes:main

На вопрос о конфигурации Docker отвечаем n (либо x), поскольку запуск Docker-контейнеров на хостинге невозможен:

The recipe for this package contains some Docker configuration.

This may create/update compose.yaml or update Dockerfile (if it exists).

Do you want to include Docker configuration from recipes?
[y] Yes
[n] No
[p] Yes permanently, never ask again for this project
[x] No permanently, never ask again for this project
(defaults to y): n
- Configuring doctrine/doctrine-migrations-bundle (>=3.1): From github.com/symfony/recipes:main
- Configuring phpunit/phpunit (>=9.6): From github.com/symfony/recipes:main
- Configuring symfony/debug-bundle (>=5.3): From github.com/symfony/recipes:main
- Configuring symfony/messenger (>=6.0): From github.com/symfony/recipes:main
- Configuring symfony/phpunit-bridge (>=6.3): From github.com/symfony/recipes:main
- Configuring symfony/twig-bundle (>=6.4): From github.com/symfony/recipes:main
- Configuring symfony/web-profiler-bundle (>=6.1): From github.com/symfony/recipes:main
- Configuring symfony/validator (>=7.0): From github.com/symfony/recipes:main
- Configuring symfony/stimulus-bundle (>=2.13): From github.com/symfony/recipes:main
- Configuring symfony/ux-turbo (>=v2.18.0): From auto-generated recipe
- Configuring twig/extra-bundle (>=v3.10.0): From auto-generated recipe
- Configuring symfony/translation (>=6.3): From github.com/symfony/recipes:main
- Configuring symfony/security-bundle (>=6.4): From github.com/symfony/recipes:main
- Configuring symfony/notifier (>=5.0): From github.com/symfony/recipes:main
- Configuring symfony/monolog-bundle (>=3.7): From github.com/symfony/recipes:main
- Configuring symfony/maker-bundle (>=1.0): From github.com/symfony/recipes:main
- Configuring symfony/mailer (>=4.3): From github.com/symfony/recipes:main
- Configuring symfony/asset-mapper (>=6.4): From github.com/symfony/recipes:main
Executing script importmap:require [OK]
Executing script importmap:require [OK]
Executing script importmap:require [OK]
Unpacking Symfony packs
- Unpacked symfony/webapp-pack
- Unpacked symfony/orm-pack
- Unpacked symfony/serializer-pack
- Unpacked symfony/twig-pack
- Unpacked symfony/debug-pack
- Unpacked symfony/profiler-pack
- Unpacked symfony/test-pack
The "fxp/composer-asset-plugin" plugin (installed globally) was skipped because it requires a Plugin API version ("^1.0") that does not match your Composer installation ("2.6.0"). You may need to run composer update with the "--no-plugins" option.
Loading composer repositories with package information
Updating dependencies
Nothing to modify in lock file
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 0 updates, 7 removals
- Removing symfony/webapp-pack (v1.3.0)
- Removing symfony/twig-pack (v1.0.1)
- Removing symfony/test-pack (v1.1.0)
- Removing symfony/serializer-pack (v1.3.0)
- Removing symfony/profiler-pack (v1.0.6)
- Removing symfony/orm-pack (v2.4.1)
- Removing symfony/debug-pack (v1.0.10)
Generating autoload files
113 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Symfony operations: 1 recipe (e1e61614c89594bf4c6a120fd5edf037)
- Unconfiguring symfony/webapp-pack (>=1.0): From github.com/symfony/recipes:main
Executing script cache:clear [OK]
Executing script assets:install public [OK]
Executing script importmap:install [OK]

No security vulnerability advisories found.

What's next?


Some files have been created and/or updated to configure your new packages.
Please review, edit and commit them: these files are yours.

doctrine/doctrine-bundle instructions:

* Modify your DATABASE_URL config in .env

* Configure the driver (postgresql) and
server_version (16) in config/packages/doctrine.yaml

symfony/messenger instructions:

* You're ready to use the Messenger component. You can define your own message buses
or start using the default one right now by injecting the message_bus service
or type-hinting Symfony\Component\Messenger\MessageBusInterface in your code.

* To send messages to a transport and handle them asynchronously:

1. Update the MESSENGER_TRANSPORT_DSN env var in .env if needed
and framework.messenger.transports.async in config/packages/messenger.yaml;
2. (if using Doctrine) Generate a Doctrine migration bin/console doctrine:migration:diff
and execute it bin/console doctrine:migration:migrate
3. Route your message classes to the async transport in config/packages/messenger.yaml.

* Read the documentation at https://symfony.com/doc/current/messenger.html

symfony/phpunit-bridge instructions:

* Write test cases in the tests/ folder
* Use MakerBundle's make:test command as a shortcut!
* Run the tests with php bin/phpunit

symfony/mailer instructions:

* You're ready to send emails.

* If you want to send emails via a supported email provider, install
the corresponding bridge.
For instance, composer require mailgun-mailer for Mailgun.

* If you want to send emails asynchronously:

1. Install the messenger component by running composer require messenger;
2. Add 'Symfony\Component\Mailer\Messenger\SendEmailMessage': amqp to the
config/packages/messenger.yaml file under framework.messenger.routing
and replace amqp with your transport name of choice.

* Read the documentation at https://symfony.com/doc/master/mailer.html

No security vulnerability advisories found.

Также требуется создать символьную ссылку на директорию public:

ln -s public public_html

Настройка подключения Symfony к базе данных

Для настройки подключения к БД отредактируйте файл .env в директории проекта. В Symfony для работы с БД используется ORM Doctrine. Подключение к БД задается в URL-формате со следующей структурой:

DATABASE_URL="<driver>://<username>:<password>@<hostname_or_ip>:<port>/<database_name>?serverVersion=<server_version>&charset=<charset>"

Разберем параметры URL:

  • <driver> - используемый драйвер Symfony, доступны sqlite, mysql и postgresql;
  • <username> - имя пользователя БД, на виртуальном хостинге и облачной БД совпадает с названием базы данных;
  • <password> - пароль для указанного ранее пользователя;
  • <hostname_or_ip> - адрес подключения к БД, для локального подключения укажите 127.0.0.1, для облачной БД - указанный на странице БД адрес;
  • <port> - порт для подключения к БД, для mysql на хостинге/облачной БД - 3306, для облачного postgresql - 5432;
  • <database_name> - название базы данных;
  • <server_version> - полная версия сервера базы данных. Узнать можно, выполнив запрос SELECT VERSION(); к базе данных, например, с помощью командной строки, либо из phpmyadmin. Пример команды в терминале:

mysql betutorial_symf -ubetutorial_symf -p'W*Y9bybB' -e 'select version();'
mysql: [Warning] Using a password on the command line interface can be insecure.
+---------------------------------+
| version() |
+---------------------------------+
| 5.7.21-20-beget-5.7.21-20-1-log |
+---------------------------------+

В данном случае версия, которую необходимо указать - 5.7.21-20-beget-5.7.21-20-1-log.

  • <charset> - кодировка БД.

Все значения параметров должны быть закодированы в формате urlencode. Например, для подключение к хостинговой БД mysql с названием betutorial_symf и паролем W*Y9bybB строка конфигурации будет выглядеть следующим образом:

DATABASE_URL="mysql://betutorial_symf:W%2AY9bybB@127.0.0.1:3306/betutorial_symf?serverVersion=5.7.21-20-beget-5.7.21-20-1-log&charset=utf8mb4"

Для проверки подключения можно воспользоваться консолью Symfony, выполнив sql-запрос командой:

php8.2 bin/console doctrine:query:sql 'select version();'

В случае успешной настройки будет выведена версия сервера БД:

---------------------------------
version()
---------------------------------
5.7.21-20-beget-5.7.21-20-1-log
---------------------------------

После завершения настройки откройте ваш сайт в браузере, по умолчанию должна отобразиться стартовая страница Symfony:

-7

Установка Laravel

Установка с помощью Composer

Для установки Laravel потребуется локально установить Composer версии 2. Если на аккаунте его ещё нет - установить его вы можете по нашей инструкции.

Для корректной установки нам нужно создать проект в корневом каталоге учетной записи и только потом создавать сайт в панели управления.

Обратите внимание!

Команды должны выполняться в корневом каталоге учетной записи!

Подключитесь к аккаунту по SSH и выполните следующую команду:

$ export PATH=/usr/local/php/cgi/8.3/bin/:$PATH

До окончания текущей SSH-сессии по умолчанию будет использоваться PHP 8.3

$ php -v
PHP 8.3.13 (cli) (built: Nov 20 2024 08:42:31) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.13, Copyright (c) Zend Technologies

Произведем установку, используя локально установленный Composer:

$ COMPOSER_MEMORY_LIMIT=-1 ~/.local/bin/composer create-project --prefer-dist laravel/laravel

Теперь создадим в панели управления сайт с именем созданного проекта (в данном случае laravel) и привяжем к нему домен.

Создадим символьную ссылку public_html, указывающую на каталог public:

$ cd laravel/
$ rm -r public_html/
$ ln -s public public_html

Параметры подключения к базе данных при необходимости настраиваются в файле config/database.php. Достаточно изменить значения параметров database, username и password в массиве mysql.

Обратите внимание!

Имя пользователя базы данных должно соответствовать её имени.

На этом установка завершена, приложение готово к работе.

-8

Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить эту статью или наши продукты с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.