Категория «Разработка»

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

Всем хороша Ubuntu для Magento-разработки, но не всегда на ней есть возможность быстро и без танцев с бубнами установить php нужной версии. Иногда это усложняет работу и приводит к непроизводным потерям рабочего времени. Поэтому давайте "поднимем" Magento версии 2.4.0 для headless-проекта с использованием панели VestaCP и LAMP-сервером с такими параметрами:

  • PHP: 7.3.22
  • MariaDB: 10.4.13
  • Apache: 2.4.6

Шаг 1. Сначала обновим систему, чтобы она обладала актуальными версиями установленных пакетов

sudo yum update
sudo yum upgrade

Шаг 2. Теперь установим необходимые нам "рабочие" утилиты. Даже если некоторые из них уже есть у нас в системе, то ничего страшного.

sudo yum install wget curl nano mc zip unzip git

Шаг 3. Если вы пользуетесь Yandex Cloud и создавали виртуальную машину с использованием ssh-ключа, то нам необходимо включить удаленный доступ по паролю. Откроем файл "sshd_config" и выставим значение "PasswordAuthentication" в "yes" и перезагрузим "sshd".

sudo nano /etc/ssh/sshd_config
PasswordAuthentication yes
sudo systemctl restart sshd

Шаг 4. Что нам обязательно надо сделать, так это отключить SELinux и обязательно ребутнуть свой сервер после этого.

sestatus

sudo nano /etc/selinux/config
SELINUX=disabled

reboot

Шаг 5. Теперь нам необходимо подключить необходимые репозитории и установить дополнительные утилиты

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum -y install yum-utils

Шаг 6. Теперь начинается самая главная магия: мы отключим установку на наш сервер дефолтной версии php и включим активацию нужной версии

sudo yum-config-manager --disable remi-php54
sudo yum-config-manager --enable remi-php73

Шаг 7. Для проектов на Magento 2.4 рекомендуется использование MariaDB версией не ниже 10.4. Поэтому сделаем так, чтобы при установке панели Vesta нами была получена необходимая нам версия сервера базы данных. Для этого создадим файл "mariadb.repo" где выставим использование 10.4.13.

sudo nano /etc/yum.repos.d/mariadb.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4.13/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Шаг 8. Теперь установим собственно саму панель Vesta CP. Для чего скачаем shell-скрипт и запустим его обязательно с параметром "force".

sudo curl -O http://vestacp.com/pub/vst-install.sh

sudo bash vst-install.sh --nginx no --apache yes \
--phpfpm no --named yes --remi yes \
--vsftpd no --proftpd yes --iptables yes \
--fail2ban no --quota no --exim yes \
--dovecot no --spamassassin no --clamav no \
--softaculous no --mysql yes --postgresql no \
--force

Шаг 9. Проверим для порядка версии php, mysql и httpd.

php -v
mysql -V
httpd -v

Шаг 10. Сделаем небольшой тюнинг для пользователя "admin", который появился в нашей системе после установки панели VestaCP. А именно: сменим ему пароль и выставим права для выполнения команд из-под "sudo".

sudo passwd admin
sudo usermod -aG wheel admin

Шаг 11. Обязательно необходимо повысить настройки php и mysql, чтобы наша Magento устанавливалась и работала без сбоев. Достаточно будет выставить вот такие настройки и, после этого, перезагрузить два сервера.

- для php

sudo nano /etc/php.ini

max_execution_time = 18000
memory_limit = -1
error_reporting = E_ALL
display_errors = On
display_startup_errors = On

- для mysql

sudo find /etc -name my.cnf
sudo nano /etc/my.cnf

bind-address=0.0.0.0
wait_timeout=1000
max_allowed_packet=2G

sudo systemctl restart httpd.service
sudo systemctl restart mariadb.service

Шаг 12. Давайте теперь установим composer

curl -sS https://getcomposer.org/installer -o composer-setup.php
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Шаг 13. И, на всякий случай, создадим файл аутентификации composer для текущего (root) пользователя

mkdir -p /root/.config/composer/
nano /root/.config/composer/auth.json

{
"http-basic": {
"repo.magento.com": {
"username": "111111111df3db7e340bbd1999999999",
"password": "11111111128c21b455e06a7999999999"
}
},
"github-oauth": {
"github.com": "111111111e16f1a0613b3518418bf3b999999999"
}
}

Шаг 14. Теперь в панели VestaCP создадим нужный нам домен "our.magento.site" и базу данных "admin_magento" перейдя в браузере по адресу с портом 8083

http://ip-address:8083

Шаг 15. Немного настроим Apache-конфигурацию нашего сайта. Для этого войдем на наш сервер по SSH под пользователем "admin", выставим для значения "php_admin_value open_basedir" значение "none" и перезагрузим Апач.

sudo nano /home/admin/conf/web/our.magento.site.httpd.conf
php_admin_value open_basedir none
sudo systemctl restart httpd.service

Шаг 16. Обязательно создадим файл аутентификации для пользователя "admin" как мы ранее делали для "root".

mkdir -p /home/admin/.config/composer/
nano /home/admin/.config/composer/auth.json

{
"http-basic": {
"repo.magento.com": {
"username": "111111111df3db7e340bbd1999999999",
"password": "11111111128c21b455e06a7999999999"
}
},
"github-oauth": {
"github.com": "111111111e16f1a0613b3518418bf3b999999999"
}
}

Шаг 17. Входим в нужную нам директорию, удаляем дефолтные файлы и загружаем файлы Magento версии 2.4.0

cd /home/admin/conf/web/our.magento.site/public_html/
rm -f *
composer create-project --repository=https://repo.magento.com/ \
magento/project-community-edition:2.4.0 .

Шаг 18. Выставим необходимые права на загруженные файлы и сделаем "bin/magento" исполняемым

find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
sudo chown -R :apache .
chmod u+x bin/magento

Шаг 19. Производим установку проекта обязательно указав IP-адрес сервера с Elasticsearch

bin/magento setup:install \
--base-url=http://our.magento.site \
--db-host=localhost \
--db-name=admin_magento \
--db-user=admin_magento \
--db-password=admin_magento \
--backend-frontname=admin \
--admin-firstname=Name \
--admin-lastname=Surname \
--admin-email=name.surname@gmai.com \
--admin-user=admin \
--admin-password=admin123 \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1 \
--elasticsearch-host=111.222.33.444

Шаг 20. После установки Magento еще раз рекурсивно сменим права на файлы и директории, а также выставим особенные на 3 папки

sudo chown -R :apache .
sudo chmod -R 755 var pub generated

Шаг 21. Отключаем 2-х факторную авторизацию и выставляем наш проект в режим "developer"

bin/magento deploy:mode:set developer
bin/magento module:disable Magento_TwoFactorAuth
bin/magento setup:di:compile

Шаг 22. Сделаем небольшой тюнинг базы данных: удалим версионирование статических файлов, увеличим время хранения сессий админа и сделаем дамп на всякий случай.

mysql -uadmin_magento -padmin_magento -hlocalhost admin_magento

insert core_config_data values (null, 'default', 0, 'dev/static/sign', 0, now());
select * from core_config_data where path like "%dev/static/sign%";

insert into core_config_data values(null, 'default', 0, 'admin/security/session_lifetime', 31536000, now());
select * from core_config_data where path = 'admin/security/session_lifetime';

quit
mysqldump -uadmin_magento -padmin_magento -hlocalhost admin_magento > _dump_01_start.sql

Все готово. Можно работать.

Это очень удобно, запускать модульные тесты в узком диапазоне тестирования: для отдельного модуля или для отдельного вендора. Таким образом вы сможете резко увеличить скорость прохождения разрабатываемого вами unit-теста. Настройки для "натравливания" тестов на определенное место в вашем проекте крайне просты: отредактировать надо буквально два файла. В одном из них мы определим место где будут выполнятся файлы тестов, а в другом - какие модульные тесты будут выполнятся: unit, unit-static или unit-integration. Итак, приступим.

Модульные тесты или Юнит тесты или Unit tests предназначены для тестирования отдельных методов класса изолированно, перебирая все возможные комбинации и заботясь о наименьшей тестируемой части приложения. Magento 2 использует инфраструктуру тестирования PHPUnit для своих модульных тестов. Будучи сфокусированными на очень небольшом куске кода класса, модульные тесты позволяют легко определить причину проблем в случае сбоя определенного теста. Мы можем специально запустить только юнит-тесты из корня установки Magento, используя следующую команду:

Magento Open Source 2.3.3 предлагает значительные обновления платформы, существенные изменения безопасности и Payment Services Directive (PSD2) -совместимые основные способы оплаты. Этот релиз содержит в себе более 170 функциональных изменений и более 75 улучшений безопасности. Он включает в себя более 200 исправлений от участников сообщества разработчиков Magento. Эти правки варьируются от незначительной очистки основного кода до значительных улучшений в Inventory Management и GraphQL. Если вы уже выполнили обновление до предварительной версии этого патча (2.3.2-p1), настоятельно рекомендуется обновится до 2.3.2-p2 как можно скорее.

При разработке проектов на Magento 1, которые используют для кеширования модуль от Mirasvit, часто бывает необходимо исключить часть страницы из кеша. Сделать “дырку”, внутри которой ваш код на php будет отрабатывать при каждом обновлении страницы. Это достаточно несложно, для достижения нужного результата достаточно поправить код в 3-х файлах и создать один новый файл. В качестве примера, давайте сделаем не кешируемым кусок кода из файла page/html/header.phtml, а точнее - количество товаров в wish-листе пользователя.

всего статей: 27