В этой статье речь пойдет о том, как установить 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 и все работает