X

Установка Magento 2, php-fpm, nginx, mysql

В этой статье речь пойдет о том, как установить Mysql, PHP 7.0, Nginx и Magento 2 для локальной разработки..

Перед установкой, можно сходить вот сюда https://devdocs.magento.com/guides/v2.3/install-gde/system-requirements-tech.html и свериться с требованиями необходимыми под вашу версию Magento.

Mysql

Устанавливаем Mysql

sudo apt install -y mysql-server mysql-client

Конфигурируем, указываем данные для подключения к MySQL

sudo mysql_secure_installation

Далее нужно подключиться к базе данных каким-нибудь клиентом, например я использую DBear и создать пустую базу данных.

PHP-FPM

Устанавливаем PHP-FPM

sudo apt-get -y update
sudo add-apt-repository ppa:ondrej/php
sudo apt-get -y update
sudo apt-get install -y php7.0 php7.0-common php7.0-fpm php7.0-cli \
php7.0-gd php7.0-mysql php7.0-curl php7.0-intl php7.0-xsl php7.0-mbstring \
php7.0-zip php7.0-bcmath php7.0-iconv php7.0-soap

Открываем php.ini для fpm

sudo mcedit vim /etc/php/7.0/fpm/php.ini

и устанавливаем там memory_limit в 2G и max_execution_time в 300 (5 минут)

memory_limit = 2G
max_execution_time = 300

так же сразу включает отображение ошибок

display_errors = On
display_startup_errors = On

Чтобы не париться с правами, меняем пользователя от которого будет работать php-fpm с www-data на себя

Открываем

/etc/php/7.0/fpm/pool.d/www.conf

и меняем там www-data

user = www-data
group = www-data

на своего пользователя, у меня это vitto

user = vitto
group = vitto

запускаем

systemctl start php7.0-fpm

если все ок и это вам нужно, то можно добавить в автозагрузку

systemctl enable php7.0-fpm

Composer

Для инсталляции Magento, нам понадобится composer. Если он еще не установлен, делаем это так

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

Magento 2

Прежде всего создаем папку где будут храниться файлы magento хоста

mkdir -p /progr/sites/magento.local/public_html

Теперь, качаем архив отсюда: https://magento.com/tech-resources/download

Извлекаем его  в папку хоста /progr/sites/magento.local/public_html/

Переходим в папку хоста и выполняем

composer install -v

На этом этапе у вас попросят username и password, получить их можно зарегистрировавшись на сайте marketplace.magento.com. Процесс подробно описан тут: https://devdocs.magento.com/guides/v2.3/install-gde/prereq/connect-auth.html . Так же я его описывал в статье: Magento 2: установка с тестовыми данными . Если вкратце, то регистрируетеся, в разделе Access Keys создаете новую связку и получаете Public Key и Private Key, которые и надо использовать в качестве username и password соответственно.

Далее можно сразу произвести первоначальную конфигурацию вот так

Переходим в папку домена: /progr/sites/magento.local/public_html/ и выполняем

php bin/magento setup:install \
 --base-url=http://magento.local:7070/ \
 --db-host=localhost \
 --db-name=magento \
 --db-user=mysql \
 --db-password=mysql \
 --admin-firstname=admin \
 --admin-lastname=admin \
 --admin-email=admin@admin.com \
 --admin-user=admin \
 --admin-password=admin123 \
 --language=en_US \ 
 --currency=USD \
 --timezone=America/Chicago \
 --use-rewrites=1

Обратите внимание, что вам надо указать свои данные хоста и данные подключения к базе. Разумеется можно пропустить этот пункт, и сделать все тоже самое из веб-браузера

Так же при желании можно сразу включить режим разработчика

php bin/magento deploy:mode:set developer

Nginx

Создаем папку где будет хост nginx-а по-умолчанию

mkdir -p /progr/sites/nginx-default/public_html

Создаем файл конфигурации nginx-а

mcedit /etc/nginx/sites-available/magento.local.conf

с таким содержимым

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

 server {
     listen 7070;
     server_name taf.sv;
     set $MAGE_ROOT /store/sites/magento.local/public_html;
     include /store/sites/magento.local/public_html/nginx.conf.sample;
 }

Тут обратите внимание на порт указанный в listen, если вы планируете использовать только nginx, то вместо 7070 туда надо указать 80. В моем случае на 80 порту уже сидит apache, поэтому я используя другой порт.

Создаем симлинк, в директорию sites-enabled

ln -s \
/etc/nginx/sites-available/magento.local.conf \
/etc/nginx/sites-enabled/

Теперь, я так же меняю порт 80 на порт 7070 в веб-директории по-умолчанию, а так же путь к этой директории на свой

mcedit /etc/nginx/sites-available/default
...
# Default server configuration
#
server {
    listen 7070 default_server;
    listen [::]:7070 default_server;
    ...
    root /store/sites/nginx-default/public_html;
    ...
}

Теперь можно проверять конфиги, сделать это можно так

sudo nginx -t

Если все ок, выведет вот такое сообщение

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

теперь осталось его запустить

systemctl start nginx

и при необходимости добавить в автозагрузку

systemctl enable nginx

Hosts

Чтобы браузер резолвил домен в ip, нам нужна dns запись. Добавляем ее в hosts

sudo mcedit /etc/hosts

и добавляем

127.0.0.1 magento.local www.magento.local

Заключение

Теперь открываем в браузере magento.local или в моем случае magento.local:7070 и все работает

Тэги: magento 2mysqlnginxphp