Как установить Magento 2 на Ubuntu 18.04

Magento — ведущая платформа электронной коммерции корпоративного класса, построенная на технологии с открытым исходным кодом, сочетающая мощные функции с гибкостью и удобным интерфейсом.

Magento — это платформа, которую предпочитают большинство онлайн-продавцов, благодаря таким функциям, как «Увлекательный шоппинг», гибкая модульная архитектура, масштабируемость и производительность корпоративного уровня.

В этом руководстве мы покажем вам, как установить Magento 2.3 на машину с Ubuntu 18.04. Мы будем использовать Nginx в качестве веб-сервера, последнюю версию PHP 7.2 и MySQL / MariaDB в качестве сервера базы данных.

Подготовка

Прежде чем продолжить изучение этого руководства, убедитесь, что вы выполнили следующие предварительные требования:

  • Иметь доменное имя, указывающее на IP-адрес вашего публичного сервера. Мы будем использовать example.com .
  • Nginx устанавливается на ваш сервер Ubuntu, следуя этим инструкциям .
  • Сертификат SSL, установленный для вашего домена для шифрования информации пользователя. Вы можете установить бесплатный SSL-сертификат Let's Encrypt, следуя этим инструкциям .

Чтобы получить доступ к репозиторию кода Magento 2, вам необходимо сгенерировать ключи аутентификации. Если у вас нет учетной записи Magento Marketplace, вы можете создать ее здесь . После создания учетной записи ознакомьтесь с этими инструкциями по созданию нового набора ключей аутентификации.

Обновите системные пакеты до последних версий и установите утилиту unzip :

sudo apt update && sudo apt upgradesudo apt install unzip

Создание базы данных MySQL

Если на вашем сервере установлен MySQL или MariaDB, вы можете пропустить этот шаг, в противном случае вы можете установить серверный пакет MySQL 5.7 из репозиториев Ubuntu по умолчанию, набрав:

sudo apt install mysql-server mysql-client
Для новых установок MySQL рекомендуется запустить команду mysql_secure_installation чтобы повысить безопасность вашего сервера MySQL.

Войдите в оболочку MySQL, используя следующую команду:

sudo mysql

Из оболочки MySQL запустите следующий оператор SQL, чтобы создать новую базу данных с именем magento :

CREATE DATABASE magento;

Затем создайте учетную запись пользователя MySQL с именем magento и предоставьте пользователю необходимые разрешения , выполнив следующую команду:

GRANT ALL ON magento.* TO 'magento'@'localhost' IDENTIFIED BY 'change-with-strong-password';
Убедитесь, что вы сменили change-with-strong-password с надежным паролем.

После этого выйдите из консоли MySQL, набрав:

EXIT;

Создание системного пользователя

Создайте нового пользователя и группу, которые будут владельцем файловой системы Magento, для простоты назовем пользователя magento :

sudo useradd -m -U -r -d /opt/magento magento

Добавьте пользователя www-data в группу magento и измените права доступа к каталогу /opt/magento чтобы Nginx мог получить доступ к установке Magento:

sudo usermod -a -G magento www-datasudo chmod 750 /opt/magento

Установка и настройка PHP

PHP 7.2, который является версией PHP по умолчанию в Ubuntu 18.04, полностью поддерживается и рекомендуется для Magento 2.3. Поскольку мы будем использовать Nginx в качестве веб-сервера, мы также установим пакет PHP-FPM.

Выполните следующую команду, чтобы установить PHP и все необходимые модули PHP:

sudo apt install php7.2-common php7.2-cli php7.2-fpm php7.2-opcache php7.2-gd php7.2-mysql php7.2-curl php7.2-intl php7.2-xsl php7.2-mbstring php7.2-zip php7.2-bcmath php7.2-soap

Служба PHP-FPM автоматически запустится после завершения процесса установки, вы можете проверить это, распечатав статус службы:

sudo systemctl status php7.2-fpm

В выводе должно быть указано, что служба fpm активна и работает.

● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-12-12 15:47:16 UTC; 5s ago
     Docs: man:php-fpm7.2(8)
 Main PID: 16814 (php-fpm7.2)
   Status: "Ready to handle connections"
    Tasks: 3 (limit: 505)
   CGroup: /system.slice/php7.2-fpm.service

Установите необходимые и рекомендуемые параметры PHP, отредактировав файл php.ini с помощью sed ::

sudo sed -i "s/memory_limit = .*/memory_limit = 1024M/" /etc/php/7.2/fpm/php.inisudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 256M/" /etc/php/7.2/fpm/php.inisudo sed -i "s/zlib.output_compression = .*/zlib.output_compression = on/" /etc/php/7.2/fpm/php.inisudo sed -i "s/max_execution_time = .*/max_execution_time = 18000/" /etc/php/7.2/fpm/php.inisudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.2/fpm/php.inisudo sed -i "s/;opcache.save_comments.*/opcache.save_comments = 1/" /etc/php/7.2/fpm/php.ini

Затем нам нужно создать пул FPM для пользователя magento .

Откройте текстовый редактор и создайте следующий файл:

sudo nano /etc/php/7.2/fpm/pool.d/magento.conf
/etc/php/7.2/fpm/pool.d/magento.conf
[magento]
user = magento
group = www-data
listen.owner = magento
listen.group = www-data
listen = /var/run/php/php7.2-fpm-magento.sock
pm = ondemand
pm.max_children =  50
pm.process_idle_timeout = 10s
pm.max_requests = 500
chdir = /

Перезапустите службу PHP-FPM, чтобы изменения вступили в силу:

systemctl restart php7.2-fpm

Убедитесь, что сокет PHP был успешно создан, выполнив следующую команду ls :

ls -al /var/run/php/php7.2-fpm-magento.sock

Результат должен выглядеть примерно так:

srw-rw---- 1 magento www-data 0 Dec 12 16:07 /var/run/php/php7.2-fpm-magento.sock=

Установка Composer

Composer — это менеджер зависимостей для PHP, и мы будем использовать его для загрузки ядра Magento и установки всех необходимых компонентов Magento.

Чтобы установить composer глобально, загрузите установщик Composer с помощью curl и переместите файл в каталог /usr/local/bin :

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

Проверьте установку, распечатав версию композитора:

composer --version

Результат должен выглядеть примерно так:

Composer version 1.8.0 2018-12-03 10:31:16

Установка Magento

Есть несколько способов установить Magento 2. Не устанавливайте Magento из репозитория Github, потому что эта версия предназначена для разработки, а не для производственных установок.

На момент написания этой статьи последней стабильной версией Magento была версия 2.3.0 . В этом уроке мы установим Magento из их репозиториев с помощью composer.

Переключитесь на пользовательский magento , набрав:

sudo su - magento

Начните установку, загрузив файлы magento в каталог / opt / magento / public_html:

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

Вам будет предложено ввести ключи доступа, скопировать ключи из вашей учетной записи Magento Marketplace и сохранить их в файле auth.json , чтобы позже, при обновлении вашей установки, вам не нужно было снова добавлять те же ключи.

    Authentication required (repo.magento.com):
      Username: e758ec1745d190320ca246e4e832e12c
      Password: 
Do you want to store credentials for repo.magento.com in /opt/magento/.config/composer/auth.json ? [Yn] Y

Приведенная выше команда получит все необходимые пакеты PHP. Этот процесс может занять несколько минут, и в случае успеха конец вывода должен выглядеть следующим образом:

Writing lock file
Generating autoload files

Как только проект будет создан, мы можем начать установку Magento. Мы можем установить Magento либо из командной строки, либо с помощью мастера настройки в Интернете. В этом руководстве мы установим Magento с помощью командной строки.

Мы будем использовать следующие варианты для установки магазина Magento:

  • Базовый и базовый безопасные URL-адреса установлены на https://example.com , измените его на свой домен.
  • Администратор Magento:
    • John Doe качестве имени и фамилии.
    • [email protected] по электронной почте.
    • john качестве имени пользователя и j0hnP4ssvv0rD качестве пароля.
  • Имя базы данных magento , имя пользователя magento , change-with-strong-password пароля change-with-strong-password и сервер базы данных находятся на том же хосте, что и веб-сервер.
  • en_US , английский (США) в качестве языка по умолчанию.
  • USD США в качестве валюты по умолчанию.
  • America/Chicago как часовой пояс.
Вы можете найти все параметры установки здесь .

Перейдите в каталог Magento ~/public_html :

cd ~/public_html

Выполните следующую команду, чтобы начать установку:

php bin/magento setup:install --base-url=https://example.com/ 
        --base-url-secure=https://example.com/ 
        --admin-firstname="John" 
        --admin-lastname="Doe" 
        --admin-email="[email protected]" 
        --admin-user="john" 
        --admin-password="j0hnP4ssvv0rD" 
        --db-name="magento" 
        --db-host="localhost" 
        --db-user="magento" 
        --currency=USD 
        --timezone=America/Chicago 
        --use-rewrites=1 
        --db-password="change-with-strong-password"
Не забудьте изменить пароль ( j0hnP4ssvv0rD ) на более безопасный.

Процесс может занять несколько минут, и после его завершения вам будет представлено сообщение, содержащее URI для панели администратора Magento.

[Progress: 773 / 773]
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_13nv5k
Nothing to import.

Создание Magento crontab

Magento использует задания cron для планирования таких задач, как повторная индексация, уведомления, карты сайта, электронные письма и многое другое.

Чтобы создать Magento crontab, выполните следующую команду от имени пользователя magento :

php ~/public_html/bin/magento cron:install
Crontab has been generated and saved

Убедитесь, что crontab установлен, набрав:

crontab -l
#~ MAGENTO START adc062915d7b30804a2b340095af072d
* * * * * /usr/bin/php7.2 /opt/magento/public_html/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /opt/magento/public_html/var/log/magento.cron.log
* * * * * /usr/bin/php7.2 /opt/magento/public_html/update/cron.php >> /opt/magento/public_html/var/log/update.cron.log
* * * * * /usr/bin/php7.2 /opt/magento/public_html/bin/magento setup:cron:run >> /opt/magento/public_html/var/log/setup.cron.log
#~ MAGENTO END adc062915d7b30804a2b340095af072d

Настройка Nginx

К настоящему времени у вас уже должен быть установлен Nginx с сертификатом SSL на вашем сервере Ubuntu, если нет, проверьте предварительные условия для этого руководства.

Мы собираемся включить конфигурацию Nginx по умолчанию, поставляемую с Magento.

Переключитесь на своего пользователя sudo, откройте текстовый редактор и создайте следующий файл:

sudo nano /etc/nginx/sites-available/example.com
/etc/nginx/sites-available/example.com
upstream fastcgi_backend {
  server   unix:/var/run/php/php7.2-fpm-magento.sock;
}

server {
    listen 80;
    server_name example.com www.example.com;

    include snippets/letsencrypt.conf;
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    set $MAGE_ROOT /opt/magento/public_html;
    set $MAGE_MODE developer; # or production

    access_log /var/log/nginx/example.com-access.log;
    error_log /var/log/nginx/example.com-error.log;

    include /opt/magento/public_html/nginx.conf.sample;
}
Не забудьте заменить example.com на свой домен Magento и указать правильный путь к файлам сертификатов SSL. Фрагменты, используемые в этой конфигурации, созданы в этом руководстве .

Перед перезапуском сервиса Nginx проверьте, нет ли синтаксических ошибок:

sudo nginx -t

Если ошибок нет, результат должен выглядеть так:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Наконец, перезапустите службу Nginx , набрав:

sudo systemctl restart nginx

Проверка установки

Откройте браузер, введите свой домен и, если установка прошла успешно, появится экран, подобный следующему:

Теперь вы можете перейти к Magento Admin URI, войти в систему как администратор и приступить к настройке новой установки Magento.

Выводы

Поздравляем, вы успешно установили Magento 2.3 на свой сервер Ubuntu 18.04. Теперь вы можете начать настраивать свой магазин.

Документация для разработчиков Magento 2.3 — хорошая отправная точка, чтобы узнать больше о том, как управлять установкой Magento.

Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Оставьте комментарий