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 upgrade
sudo apt install unzip
Создание базы данных MySQL
Если на вашем сервере установлен MySQL или MariaDB, вы можете пропустить этот шаг, в противном случае вы можете установить серверный пакет MySQL 5.7 из репозиториев Ubuntu по умолчанию, набрав:
sudo apt install mysql-server mysql-client
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-data
sudo 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.ini
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 256M/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/zlib.output_compression = .*/zlib.output_compression = on/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/max_execution_time = .*/max_execution_time = 18000/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.2/fpm/php.ini
sudo 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
[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
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;
}
Перед перезапуском сервиса 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.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.