Magento 2.4.0 с PHP 7.3 на CentOS 7

Magento 2.4.0 с PHP 7.3 на CentOS 7

Всем хороша 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

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