Всем хороша 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=disabledreboot
Шаг 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.cnfbind-address=0.0.0.0
wait_timeout=1000
max_allowed_packet=2Gsudo 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
Все готово. Можно работать.