Установка PrestaShop в LEMP (Linux, Nginx, MariaDB, PHP 7) для CentOS 7, Debian 9 Stretch, Ubuntu 18.04 Bionic

После чтения этой статьи, вы научитесь самостоятельно настраивать минималистичный сервер для для сайта PrestaShop eCommerce. Ваш сайт будет доступен по защищенному протоколу HTTPS с поддержкой бесплатного сертификата Let’s Encrypt.

PrestaShop — популярная платформа для eCommerce, которая используется 9% электронных магазинов по всему миру. Эта система является открытой, а значит доступной для изменений любым желающим разработчиком. Популярность можно легко проверить по количеству звезд на GithHub:

Для установки PrestaShop на выделенном сервере или VPS нам понадобится установить сервер LEMP (Linux, Nginx, MySQL, PHP 7), а затем скачать и настроить сам PrestaShop.

Зачем использовать минимальный сервер LEMP для хостинга сайта PrestaShop?

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

  • значительно более высокая защищенность от вредоносной активности других приложений пользователей, размещенных на разделяемом хостинге;
  • гарантированная производительность и доступность вычислительных ресурсов;
  • низкий риск человеческих ошибок;
  • отдельный IP-адрес, что позволяет эффективно защищать сайт от DDoS с помощью CDN;
  • возможность тонкой настройки PHP, Nginx и MySQL и других приложений для оптимальной производительности;
  • максимальная простота сервера без лишних точек отказа.

Установка сервера LEMP

Установка LEMP в CentOS 7 с использованием внешнего репозитория Remi’s Repository для установки PHP 7.2.

Стандартная установка LEMP в Debian 9 Stretch с использованием PHP 7.0

Стандартная установка LEMP в Ubuntu 18.04 Bionic с использованием PHP 7.2

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

Установим дополнительные пакеты, которые необходимы PrestaShop:

# Ubuntu 18.04
sudo apt install -y php7.2-intl

# Debian 9
sudo apt install -y php7.0-intl

# CentOS 7
sudo yum install -y php72-php-intl

Скачаем и распакуем архив сайта. На момент написания статьи стабильным считается PrestaShop 1.7.5.1:

cd /var/www/$WEBSITE_NAME

sudo wget https://download.prestashop.com/download/releases/prestashop_1.7.5.1.zip

sudo unzip prestashop_1.7.5.1.zip

Установим права, чтобы пользователь, под которым выполняется Nginx мог вносить в файлы изменения:

# для Ubuntu / Debian
sudo chown www-data: -R /var/www/$WEBSITE_NAME

# для CentOS
sudo chown nginx: -R /var/www/$WEBSITE_NAME

Теперь открываем скрипт установки https://$WEBSITE_NAME/ в браузере и продолжаем установку:

До того, как вы что-то сделаете дальше!!!

Выполните два нижеописанных действия, которые необходимы для нормальной работы свежеустановленного движка.

Имя админки. Распечатайте и сохраните данные установки. PrestaShop генерирует случайное имя для админ-зоны, которое вы не запомните, например, admin743en8mal.

Принудительное включение SSL. Поскольку настроенный нами сервер LEMP работает только поверх HTTPS, это является неожиданностью для PrestaShop. Движок все время пытается отправить пользователя на обычный HTTP, откуда мы делаем перенаправление на HTTPS. Это продолжается бесконечно. Сейчас мы это исправим. Для исправления необходимо поправить настройки PrestaShop в БД:

export DB_NAME=website
export DB_USER=siteuser
export DB_PASSWORD=secret 

mysql -u$DB_USER -p$DB_PASSWORD $DB_NAME -e "UPDATE ps_configuration SET value=1 WHERE name LIKE '%SSL_ENABLED%';"

mysql -u$DB_USER -p$DB_PASSWORD $DB_NAME -e "SELECT * FROM ps_configuration WHERE name LIKE '%SSL_ENABLED%'\G"
*************************** 1. row ***************************
id_configuration: 30
   id_shop_group: NULL
         id_shop: NULL
            name: PS_SSL_ENABLED
           value: 1
        date_add: 0000-00-00 00:00:00
        date_upd: 0000-00-00 00:00:00
*************************** 2. row ***************************
id_configuration: 282
   id_shop_group: NULL
         id_shop: NULL
            name: PS_SSL_ENABLED_EVERYWHERE
           value: 1
        date_add: 2019-04-03 23:25:21
        date_upd: 2019-04-03 23:25:21

На этом установка PrestaShop завершена и можно приступать к работе над своим электронным магазином.

Что еще сделать после установки?

После установки мы рекомендуем выполнить следующие действия:

  • повысить безопасность сервера с помощью тонкой настройки файрвола:
  • установить сайт под защиту CloudFlare;
  • настроить почтовый сервер, если вы планируете осуществлять отправку почты локально с сервера, а не по SMTP: