Black Friday! Отримайте до 9 місяців Хостингу в подарунок!

Детальніше

Як встановити CMS Magento 2 на сервер з Linux Ubuntu?

post thumbnail

Magento – одна з найбільш надійних, гнучких та масштабованих систем керування контентом з відкритим вихідним кодом, що пропонує великий набір потужних інструментів для створення e-commerce-сайтів та управління ними. Сьогодні ми крок за кроком розглянемо, як встановити CMS Magento 2 на сервер з ОС Linux Ubuntu 20.04 (Nginx+PHP-FPM+MySQL+Redis+Elasticsearch).

Встановлення було здійснено на сервері від компанії HostPro на тарифному плані “Жвавий+”  Linux VPS. З характеристиками тарифу ви можете ознайомитись на сторінці продукту. Зверніть увагу, даний тариф є архівним. Актуальні тарифи на потужних NVMe-дисках можна переглянути тут.

Сумісність програмного забезпечення за версіями можна переглянути на офіційному сайті.

Крок 1 – Встановлюємо веб-сервер Nginx

Щоб встановити веб-сервер Nginx, вводимо:

apt install nginx

Для того, щоб виконати базову конфігурацію веб-сервера, відкриваємо в текстовому редакторі основний файл конфігурації nano /etc/nginx/nginx.conf.

Після цього потрібно розкоментувати рядки у файлі конфігурації та додати такі значення: 

worker_processes auto;
events {
        use epoll;
        worker_connections 1024;
        multi_accept on;
}
access_log off;
error_log /var/log/nginx/error.log crit
sendfile on; 
tcp_nopush on;
tcp_nodelay on;
server_tokens off;
keepalive_timeout 65;
client_max_body_size 4m;
client_body_timeout 10;
types_hash_max_size 2048;
reset_timedout_connection on;
server_names_hash_bucket_size 64; 

Крок 2 – Встановлюємо MySQL

Розпочнемо встановлення системи управління базами даних MySQL:

apt install mysql-server

mysql_secure_installation

Answer Y for yes .

Створюємо користувача та БД Magento 2:

mysql

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

CREATE DATABASE db_magento;

GRANT ALL PRIVILEGES ON db_magento.* TO 'user'@'localhost';

flush privileges;

quit

Крок 3 – Встановлюємо PHP та PHP-FPM

Наступним кроком необхідно встановити PHP, PHP-FPM та всі необхідні залежності в нашому випадку версії 7.4.

Додаємо до репозиторію:

add-apt-repository ppa:ondrej/php

Після чого оновлюємо:

apt update

І встановлюємо:

apt install php7.4-fpm php7.4-mysql php7.4-bcmath php7.4-intl php7.4-soap php7.4-curl php-xml php7.4-gd php7.4-zip

apt install php7.4-bcmath php7.4-common php7.4-curl php7.4-fpm php7.4-gd php7.4-intl php7.4-mbstring php7.4-mysql php7.4-soap php7.4-xml php7.4-xsl 

Активуємо: 

phpenmod mbstring

Редагуємо конфігураційні файли php, як зазначено на офіційному сайті.  

Також необхідно перезавантажити nginx та php-fpm:

systemctl reload nginx

systemctl start php7.4-fpm

systemctl enable php7.4-fpm

systemctl status php7.4-fpm

Крок 4 – Встановлюємо Elasticsearch

Детальну інформацію про встановлення Elasticsearch можна переглянути тут. Для початку нам потрібно встановити Java:

apt install openjdk-11-jdk

Потім вводимо:

curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Оновлюємо репозиторій:

apt update

І встановлюємо Elasticsearch:

apt install elasticsearch

systemctl start elasticsearch

systemctl enable elasticsearch

Крок 5 – Встановлюємо Redis та Composer

Щоб встановити Redis, вводимо:

apt install redis-server

Встановлюємо Composer. Composer – менеджер залежностей для PHP, за допомогою якого можна встановлювати пакети, потрібні для проекту бібліотеки та залежності:

cd ~

curl -sS https://getcomposer.org/installer -o composer-setup.php

php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=1.10.16

Перевіряємо Сomposer:

composer

Переходимо до директорії, де буде розміщуватися наш проект:

cd /var/www/html/

Даємо права на володіння директорією поточному користувачеві:

chown -R $USER:$USER /var/www/html/

Далі вам потрібно буде зареєструватися на сайті Magento, щоб отримати Public Key та Private Key. Нам потрібні будуть ці дані під час авторизації.

Після цього нам необхідно створити новий проект Composer для Magento 2:

composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition magento2

Створюємо віртуальний хост для нашого сайту:

cp /etc/nginx/sites-available/default /etc/nginx/sites-available/your_domain

nano /etc/nginx/sites-available/your_domain

upstream fastcgi_backend {
  server  unix:/run/php/php7.4-fpm.sock;
}

server {
        listen 80;
        listen [::]:80;
        set $MAGE_ROOT /var/www/html/magento2;
        include /var/www/html/magento2/nginx.conf.sample;
        server_name your_domain www.your_domain;
}

Робимо посилання:

ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Перевіряємо конфігурацію помилки nginx -t, якщо syntax is ok, перезавантажуємо nginx:

systemctl restart nginx

Надаємо необхідні права поточному користувачеві:

cd /var/www/html/magento2

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 {} +

find . -type f -exec chmod 664 {} \;  -print && find . -type d -exec chmod 775 {} \;  -print

chown -R :www-data .

chmod u+x bin/magento

Тепер все готове до встановлення Magento 2. Переходимо до директорії з дистрибутивом cd /var/www/html/magento2 та запускаємо команду встановлення. Значення потрібно встановлювати відповідно до ваших даних.

php bin/magento setup:install --base-url=http://yourdomain \ --db-host=127.0.0.1 --db-name=db_mag2 --db-user=usermag2 --db-password=Password \ --admin-firstname=Magento --admin-lastname=User --admin-email=[email protected] \ --admin-user=admin --admin-password=admin123 --language=en_US \ --currency=USD --timezone=America/Chicago --use-rewrites=1 \ --search-engine=elasticsearch7 --elasticsearch-host=127.0.0.1 \ --elasticsearch-port=9200

По закінченню встановлення генерується індивідуальне посилання в адмін-панель Magento 2.

Виконуємо команду crontab, щоб створити cronjob:

crontab -u www-data -e

І додаємо наступний рядок:

* * * * * /usr/bin/php /var/www/html/myMagento/bin/magento cron:run | grep -v "Запуск задачі за розкладом" >> /var/www/html/myMagento/var/log/magento.cron.log

Крок 6 – Конфігуруємо Redis

Далі конфігуруємо Redis, як зазначено в інструкції.

Крок 7 – Встановлюємо SSL-сертифікат

Для захисту клієнтських даних встановлюємо SSL-сертифікат. Придбати SSL за доступними цінами та дізнатися, як його встановити, ви можете на цій сторінці.

Приклад конфігураційного файлу віртуального хоста після встановлення SSL-сертифіката:

nano /etc/nginx/sites-available/your_domain

upstream fastcgi_backend {
        server  unix:/run/php/php7.4-fpm.sock;
}

server {
    listen 80;
    listen [::]:80;
    server_name your_domain www.your_domain;
    return 301 https://$your_domain$request_uri;
}

server {

        listen 443 ssl;
        server_name your_domain www.your_domain;

        ssl on;
        ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;

        set $MAGE_ROOT /var/www/magento2;
        set $MAGE_MODE developer;
        include /var/www/magento2/nginx.conf.sample;
}     

Вітаємо! Базове встановлення Magento 2 завершено.

Telegram Hostpro

Наш телеграм

з важливими анонсами, розіграшами й мемами

Приєднатися

Можливо, вас зацікавить

Інтеграція OpenCart в CDN

Інтеграція OpenCart в CDN

З 1 березня 2020 року послуга CDN хостингу підтримується в більш сучасному і вигідному...

Viktoriya Mazur | Оновлено: 07.10.2020

Як перенести сайт на Бітрікс на інший хостинг

Як перенести сайт на Бітрікс на інший хостинг

Оскільки 1C-Bitrix CMS – російська система, ми зобов’язані припинити співпрацю з нею. Продовження використання...

Diana Honcharenko | Оновлено: 03.10.2020

Інтеграція WordPress в CDN

Інтеграція WordPress в CDN

З 1 березня 2020 року послуга CDN хостингу підтримується в більш сучасному і вигідному...

Viktoriya Mazur | Оновлено: 02.10.2020

CMS хостинг: можливості та переваги

CMS хостинг: можливості та переваги

Для чого потрібна CMS і що таке система управління сайтом CMS (Content Management System) –...

Diana Baranovska | Оновлено: 17.07.2020