Akeneo 5.0 CE: Ошибки при установке
Сегодня для собственных экспериментов устанавливал Akeneo 5.0 CE версию и во время установки столкнулся с ошибками, о решении которых и будет данный пост..
Небольшое вступление
Я решил установить систему не из докер образа, а в ручном режиме.
Для этого я использовал PHP 7.4, Nginx, Elasticsearch и MariaDB. Последняя заявлена как не поддерживаемая, но у меня она уже была установлена и менять ее я не собирался.
Для установки идем вот сюда: https://www.akeneo.com/download/
Заполняем форму рандомными данными и получаем ссылку на скачиваем архива.
Архив, разархивируем в папку и настраиваем php-fpm и nginx.
Конфиг php-fpm у меня был стандартный, конфиг nginx-а минимальный
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
server { listen 80; server_name akeneo.sv; root /var/www/akeneo.sv/public_html/public; error_log /var/www/akeneo.sv/logs/error.log; client_max_body_size 128m; location / { index index.php; try_files $uri $uri/ /index.php?$args; } location ~ .php$ { include fastcgi.conf; fastcgi_pass unix:/run/php/akeneo.sv-php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } |
Далее, заходим в папку с кодом и выполняем следующее
1 2 3 4 5 6 7 |
php7.4 /usr/local/bin/composer install --optimize-autoloader --prefer-dist npm install --force php7.4 bin/console cache:clear --no-warmup --env=prod php7.4 bin/console pim:installer:assets --symlink --clean --env=prod php7.4 bin/console assets:install --symlink public |
Далее, все должно было начать работать. Но не заработало, на фронте была ошибка 500 и сообщение про старт сессий после отправки сообщений
Ошибки можно смотреть в логе, вот тут: var/logs/prod.log
Ошибки совместимости
Ошибки совместимости, я увидел когда пытался запустить установку вот так
1 2 3 |
php7.4 bin/console pim:install --force --symlink --clean --env=prod |
Результат
Ошибка: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed
Полный текст ошибки
[2021-07-21 15:29:43] request.CRITICAL: Uncaught PHP Exception PDOException: "SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution" at vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php line 438 {"exception":"[object] (PDOException(code: 2002): SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution at vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php:438, PDOException(code: 0): PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution at vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php:438)"} []
Это ошибка о том, что не настроен коннект к базе
Добавляем нужные настройки базы в файл "/.env", в переменные APP_DATABASE_*. Заодно там же меняем хост эластика в APP_INDEX_HOSTS на localhost и прописываем локальный хост в переменную AKENEO_PIM_URL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
APP_ENV=prod APP_DEBUG=0 APP_DATABASE_HOST=localhost APP_DATABASE_PORT=null APP_DATABASE_NAME=akeneo APP_DATABASE_USER=mysql APP_DATABASE_PASSWORD=mysql APP_DEFAULT_LOCALE=en APP_SECRET=ThisTokenIsNotSoSecretChangeIt APP_INDEX_HOSTS=localhost:9200 APP_PRODUCT_AND_PRODUCT_MODEL_INDEX_NAME=akeneo_pim_product_and_product_model APP_CONNECTION_ERROR_INDEX_NAME=akeneo_connectivity_connection_error MAILER_URL=null://localhost?encryption=tls&auth_mode=login&username=foo&password=bar&sender_address=no-reply@example.com AKENEO_PIM_URL=http://akeneo.sv APP_ELASTICSEARCH_TOTAL_FIELDS_LIMIT=10000 FLAG_QUANTIFIED_ASSOCIATION_ENABLED=1 COMM_PANEL_API_URL=https://pim-comm-panel.akeneo.com FLAG_DATA_QUALITY_INSIGHTS_ENABLED=1 SRNT_GOOGLE_APPLICATION_CREDENTIALS= GOOGLE_CLOUD_PROJECT=emulator-project PUBSUB_EMULATOR_HOST= PUBSUB_AUTO_SETUP=false PUBSUB_TOPIC_BUSINESS_EVENT= PUBSUB_TOPIC_JOB_QUEUE= PUBSUB_SUBSCRIPTION_WEBHOOK= PUBSUB_SUBSCRIPTION_JOB_QUEUE= XDEBUG_MODE=off |
После этого проблема с базой исчезает
Ошибка: SQLSTATE[42S02]: Base table or view not found
ПОлный текст ошибки
1 2 3 |
[2021-07-21 15:31:00] request.CRITICAL: Uncaught PHP Exception PDOException: "SQLSTATE[42S02]: Base table or view not found: 1146 Table 'akeneo.pim_session' doesn't exist" at vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php line 625 {"exception":"[object] (PDOException(code: 42S02): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'akeneo.pim_session' doesn't exist at vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php:625, PDOException(code: 42S02): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'akeneo.pim_session' doesn't exist at vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php:625)"} [] |
Эта ошибка возникает, т.к. база пустая и не содержит таблиц. Эти таблицы нужно создать вот так
1 2 3 |
php7.4 bin/console pim:installer:db |
В конце правда получим ошибку на этапе загрузки фикстур
1 2 3 4 5 6 7 8 9 10 11 12 |
Reset elasticsearch indexes Create session table Create configuration table Create messenger table Load jobs for fixtures. (data set: src/Akeneo/Platform/Bundle/InstallerBundle/Resources/fixtures/minimal) In FixturePathProvider.php line 39: Installer data directory cannot be found. |
Но, таблицы создаются, поэтому пока просто игнорируем её и идем дальше
Ошибка: Старница логина загрузилась, но не загружаются стили
Возникает она т.к. нет файла стилей ~/public/css/pim.css
Я попробовал исправить это запустив yarn
1 2 3 |
yarn run less |
Но получил ошибку: Error: Cannot find module 'less'
yarn run v1.22.5
$ node $npm_package_config_styles
internal/modules/cjs/loader.js:638
throw err;
^
Error: Cannot find module 'less'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object. (/vendor/akeneo/pim-community-dev/frontend/build/compile-less.js:6:15)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Чтобы ее исправить я установил less и less-loader
1 2 3 |
npm install less less-loader --save-dev |
После повторного запуска, предыдущие ошибки ушли, но появилась новая: Error compiling less: Error evaluating function percentage
: argument must be a number
1 2 3 |
yarn run less |
yarn run v1.22.5
$ node $npm_package_config_styles
Starting LESS compilation
‣ vendor/akeneo/pim-community-dev/src/Akeneo/Pim/Structure/Bundle/Resources/public/less/index.less
‣ vendor/akeneo/pim-community-dev/src/Oro/Bundle/PimDataGridBundle/Resources/public/less/index.less
‣ vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/UIBundle/Resources/public/less/index.less
‣ vendor/akeneo/pim-community-dev/src/Akeneo/Connectivity/Connection/back/Infrastructure/Symfony/Resources/public/less/index.less
‣ vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/CommunicationChannelBundle/back/Infrastructure/Framework/Symfony/Resources/public/less/index.less
‣ vendor/akeneo/pim-community-dev/src/Akeneo/Pim/Automation/DataQualityInsights/back/Infrastructure/Symfony/Resources/public/less/index.less
Error compiling less: Error evaluating functionpercentage
: argument must be a number
public/bundles/pimui/lib/bootstrap/less/bootstrap_variables.less:278:26
>// -------------------------
>@fluidGridColumnWidth: percentage(@gridColumnWidth/@gridRowWidth);
>@fluidGridGutterWidth: percentage(@gridGutterWidth/@gridRowWidth);
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Для ее исправления, я открыл файл public/bundles/pimui/lib/bootstrap/less/bootstrap_variables.less в редакторе, нашел указанные строки и обернул их в еще одни скобки, т.е. стало вот так
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Fluid grid // ------------------------- @fluidGridColumnWidth: percentage((@gridColumnWidth/@gridRowWidth)); @fluidGridGutterWidth: percentage((@gridGutterWidth/@gridRowWidth)); // 1200px min @fluidGridColumnWidth1200: percentage((@gridColumnWidth1200/@gridRowWidth1200)); @fluidGridGutterWidth1200: percentage((@gridGutterWidth1200/@gridRowWidth1200)); // 768px-979px @fluidGridColumnWidth768: percentage((@gridColumnWidth768/@gridRowWidth768)); @fluidGridGutterWidth768: percentage((@gridGutterWidth768/@gridRowWidth768)); |
Это решило проблему в этом месте, но появилась новая: Error compiling less: Operation on an invalid type
1 2 3 |
yarn run less |
yarn run v1.22.5
$ node $npm_package_config_styles
Starting LESS compilation
‣ vendor/akeneo/pim-community-dev/src/Akeneo/Pim/Structure/Bundle/Resources/public/less/index.less
‣ vendor/akeneo/pim-community-dev/src/Oro/Bundle/PimDataGridBundle/Resources/public/less/index.less
‣ vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/UIBundle/Resources/public/less/index.less
‣ vendor/akeneo/pim-community-dev/src/Akeneo/Connectivity/Connection/back/Infrastructure/Symfony/Resources/public/less/index.less
‣ vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/CommunicationChannelBundle/back/Infrastructure/Framework/Symfony/Resources/public/less/index.less
‣ vendor/akeneo/pim-community-dev/src/Akeneo/Pim/Automation/DataQualityInsights/back/Infrastructure/Symfony/Resources/public/less/index.less
Error compiling less: Operation on an invalid type
./public/bundles/pimui/less/components/Column.less:179:4
> margin-top: 10px;
> left: @AknMainMenuWidth + (@littleWidth - @AknDefaultButtonSize) / 2;
> opacity: 0;
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
По той же схеме, просто обернул в скобки, получилось так
1 2 3 4 5 6 7 8 9 10 |
&-navigation { position: fixed; margin-top: 10px; left: (@AknMainMenuWidth + (@littleWidth - @AknDefaultButtonSize) / 2); opacity: 0; transition: opacity @AknColumnTiming @AknColumnTransition; z-index: 850; } |
После этого CSS файл наконец-то успешно сгенерировался
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$ yarn run less yarn run v1.22.5 $ node $npm_package_config_styles Starting LESS compilation ‣ vendor/akeneo/pim-community-dev/src/Akeneo/Pim/Structure/Bundle/Resources/public/less/index.less ‣ vendor/akeneo/pim-community-dev/src/Oro/Bundle/PimDataGridBundle/Resources/public/less/index.less ‣ vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/UIBundle/Resources/public/less/index.less ‣ vendor/akeneo/pim-community-dev/src/Akeneo/Connectivity/Connection/back/Infrastructure/Symfony/Resources/public/less/index.less ‣ vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/CommunicationChannelBundle/back/Infrastructure/Framework/Symfony/Resources/public/less/index.less ‣ vendor/akeneo/pim-community-dev/src/Akeneo/Pim/Automation/DataQualityInsights/back/Infrastructure/Symfony/Resources/public/less/index.less ✓ Saved CSS to public/css/pim.css Done in 2.55s. |
После этого все начало выглядеть правильно
Ошибка: Не загруженные фикстуры
Выше, я уже писал что фикстуры (подготовленные данные) не были загружены. И теперь настало время к ним вернуться, т.к. форма логина работает, но учетка админа не создана.
Ошибка у нас была вот такая
1 2 3 4 5 6 7 8 9 10 |
$ php7.4 bin/console pim:installer:db --env=prod ... Load jobs for fixtures. (data set: src/Akeneo/Platform/Bundle/InstallerBundle/Resources/fixtures/minimal) In FixturePathProvider.php line 39: Installer data directory cannot be found. |
Немного погуглив, я наткнулся на информацию что их переместили
- Были тут:
- src/Akeneo/Platform/Bundle/InstallerBundle/Resources/fixtures/minimal/*
- Теперь тут:
- vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/InstallerBundle/Resources/fixtures/minimal/*
Пробуем, просто создать символическую ссылку, чтобы не заморачиваться. Однако, т.к. нам нужны тестовые данные копируем не "minimal" фикстуры, а те, что называются "icecat_demo_dev" и проверяем
1 2 3 4 5 6 7 8 9 10 11 |
$ mkdir -p src/Akeneo/Platform/Bundle/InstallerBundle/Resources/fixtures $ ln -s `pwd`/vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/InstallerBundle/Resources/fixtures/icecat_demo_dev `pwd`/src/Akeneo/Platform/Bundle/InstallerBundle/Resources/fixtures/minimal $ ls src/Akeneo/Platform/Bundle/InstallerBundle/Resources/fixtures/minimal association_types.csv attribute_options.csv categories.csv currencies.csv family_variants.csv groups.csv jobs.yml product_models.csv user_groups.csv users.csv attribute_groups.csv attributes.csv channels.csv families.csv files group_types.csv locales.csv products.csv user_roles.csv |
Запускаем вновь
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
$ php7.4 bin/console pim:installer:db --env=prod ... Load jobs for fixtures. (data set: src/Akeneo/Platform/Bundle/InstallerBundle/Resources/fixtures/minimal) Fixtures fixtures_currency_csv has been successfully executed. Fixtures fixtures_locale_csv has been successfully executed. Fixtures fixtures_user_group_csv has been successfully executed. Fixtures fixtures_category_csv has been successfully executed. Fixtures fixtures_attribute_group_csv has been successfully executed. Fixtures fixtures_group_type_csv has been successfully executed. Fixtures fixtures_attribute_csv has been successfully executed. Fixtures fixtures_channel_csv has been successfully executed. Fixtures fixtures_association_type_csv has been successfully executed. Fixtures fixtures_attribute_options_csv has been successfully executed. Fixtures fixtures_family_csv has been successfully executed. Fixtures fixtures_job_yml has been successfully executed. Fixtures fixtures_family_variant_csv has been successfully executed. Fixtures fixtures_group_csv has been successfully executed. Fixtures fixtures_user_role_csv has been successfully executed. Fixtures fixtures_user_csv has been successfully executed. Fixtures fixtures_product_model_csv has been successfully executed. Fixtures fixtures_product_csv has been successfully executed. Delete jobs for fixtures. Versioning is already up to date. |
фикстуры загрузились, но вылезает новая ошибка: Impossible to get the latest migration Composer detected issues in your platform
На этом этапе может появиться еще одна ошибка: SQLSTATE[42000]: Syntax error or access violation: 1305 FUNCTION akeneo.JSON_ARRAYAGG does not exist. Она говорит о том, что в ваша версия MySQL/Mariadb устаревшая. Чтобы ее убрать, необходимо обновиться на более новую. Для MariaDB это версия 10.5.0, детали по этим ссылкам
- https://mariadb.com/kb/en/json_arrayagg/
- https://mariadb.com/docs/deploy/upgrade-community-server-cs105-ubuntu18/
Ошибка: Impossible to get the latest migration Composer detected issues in your platform
Полный текст ошибки
Delete jobs for fixtures.
Versioning is already up to date.
In DatabaseCommand.php line 360:
[RuntimeException]
Impossible to get the latest migration Composer detected issues in your platform:
Your Composer dependencies require a PHP version ">= 7.4.1". You are running 7.2.34-22+ubuntu20.04.1+deb.sury.org+1.
PHP Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.4.1". You are running 7.2.34-22+ubuntu20.04.1+deb.sury.org
+1. in vendor/composer/platform_check.php on line 24
Exception trace:
at vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/InstallerBundle/Command/DatabaseCommand.php:360
Akeneo\Platform\Bundle\InstallerBundle\Command\DatabaseCommand->getLatestMigration() at vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/InstallerBundle/Command/DatabaseCommand.php:333
Akeneo\Platform\Bundle\InstallerBundle\Command\DatabaseCommand->setLatestKnownMigration() at vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/InstallerBundle/Command/DatabaseCommand.php:206
Akeneo\Platform\Bundle\InstallerBundle\Command\DatabaseCommand->execute() at vendor/symfony/console/Command/Command.php:255
Symfony\Component\Console\Command\Command->run() at vendor/symfony/console/Application.php:1027
Symfony\Component\Console\Application->doRunCommand() at vendor/symfony/framework-bundle/Console/Application.php:97
Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand() at vendor/symfony/console/Application.php:273
Symfony\Component\Console\Application->doRun() at vendor/symfony/framework-bundle/Console/Application.php:83
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at vendor/symfony/console/Application.php:149
Symfony\Component\Console\Application->run() at bin/console:36
Появляется, т.к. у меня стоит по-умолчанию в системе php7.2 и хотя я запускаю консольную команду от php7.4 внутренние процессы не могут этого понять и тригерят php установленный по-умолчанию
1 2 3 |
php7.4 bin/console pim:installer:db --env=prod |
Чтобы исправить это на время инсталяции я поменял дефолтную версию php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ sudo update-alternatives --config php here are 7 choices for the alternative php (providing /usr/bin/php). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/bin/php.default 100 auto mode 1 /usr/bin/php.default 100 manual mode 2 /usr/bin/php5.6 56 manual mode 3 /usr/bin/php7.0 70 manual mode * 4 /usr/bin/php7.2 72 manual mode 5 /usr/bin/php7.3 73 manual mode 6 /usr/bin/php7.4 74 manual mode // выбрал эту 7 /usr/bin/php8.0 80 manual mode $ php -v PHP 7.4.20 (cli) (built: Jun 4 2021 21:24:55) ( NTS ) |
На этот раз все прошло успешно. Т.к. мне нужен PHP 7.2 для других дел, то я вернулся тем же способом к этой версии.
Заключение
Ручная установка Akeneo 5 CE оказалась довольно не простой штукой, особенно когда у тебя несколько версий PHP и не совсем подходящая версия базы. Поэтому, думаю, намнеого проще использовать докер, где не придется бороться с зависимостями версий.
Ах да, данные для авторизации admin/admin, другие учетки можно посмотреть в фикстуре users.csv
Author: | Tags: /
| Rating:
Leave a Reply