Как настроить окружение для CS-Cart

С помощью наших плейбуков (англ. playbook, сценарий) для Ansible можно настроить окружение для CS-Cart всего за несколько команд и правок в файле с настройками. Сценарии сами автоматически настроят для вас веб-сервер.

Примечание

Если вы не хотите использовать Ansible, настройте окружение в соответствии с системными требованиями CS-Cart.

Шаг 1. Устанавливаем Ansible

Важно

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

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

  • На CentOS 7:

    sudo yum -y install epel-release
    sudo yum install -y gcc git openssl-devel libffi-devel libselinux-python python-crypto python-jinja2 python-paramiko sshpass PyYAML python-setuptools
    sudo rpm -ihv https://releases.ansible.com/ansible/rpm/release/epel-7-x86_64/ansible-2.4.6.0-1.el7.ans.noarch.rpm
    
  • На Ubuntu 18.04:

    sudo apt update
    sudo apt install ansible
    

Примечание

CentOS 6, Ubuntu ниже версии 18.04 больше не поддерживаются.

Шаг 2. Настраиваем main.json

После установки Ansible можно скачать и запустить один из наших плейбуков для настройки сервера. Для этого:

  1. Клонируйте репозиторий с плейбуками к себе на сервер:

    mkdir ~/playbooks && git clone https://github.com/cscart/server-ansible-playbooks ~/playbooks
    

    Эта команда создаёт копию репозитория с плейбуками в домашней папке на сервере. Так вы всегда сможете попасть в директорию с плейбуками одной командой cd ~/playbooks command, если понадобится.

  2. Создайте файл main.json; наши плейбуки используют данные оттуда для настройки окружения:

    cp ~/playbooks/config/advanced.json ~/playbooks/config/main.json
    

    Эта команда просто копирует существующий файл advanced.json и вставляет его как main.json в ту же директорию (~/playbooks/config). Пока что в файле находится только пример данных; нам нужно будет заменить их на свои собственные.

  3. Отредактируйте файл ~/playbooks/config/main.json так, как вам нужно. По умолчанию файл выглядит так:

    {
        "stores_dir": "/var/www/html",
        "stores":
        {
            "example.com":
            {
                "cart":
                {
                    "storefronts": ["example.org", "example.ru"]
                },
                "database":
                {
                    "name": "cscart",
                    "user": "cscart",
                    "password": "cscart"
                }
            }
        }
    }
    
    • stores_dir — директория, где будут находиться папки с одной или несколькими установками CS-Cart;

    • stores — массив проектов (т.е. будущих установок CS-Cart);

      • example.com — доменное имя проекта; также это имя папки, где будет находиться проект. В примере выше у нас описана одна установка CS-Cart, которая будет находиться в папке /var/www/html/example.com;

      • storefronts — массив доменных имен дополнительных витрин; если таких не имеется, оставьте поле пустым. Пример: "storefronts": [];

      • database — параметры подключения к базе данных, которую создаст плейбук для этого проекта:

        • name — название базы данных;

        • user — имя пользователя MySQL, который будет работать с этой базой данных;

          Предупреждение

          НЕЛЬЗЯ указывать пользователя root; если укажете, то root сможет пользоваться только базой, созданной плейбуком, и не сможет создавать новые базы данных.

        • password — пароль пользователя MySQL, указанного выше.

    Если вы работаете с сервером по SSH (например, устанавливаете CS-Cart на хостинг DigitalOcean), то вы можете воспользоваться текстовым редактором в командной строке, чтобы отредактировать main.json так, как вам нужно. Мы рекомендуем nano — его использовать проще всего:

    1. На CentOS сначала потребуется установить nano. Выполните команду:

      yum install nano
      
    2. Откройте файл, который вы хотите отредактировать (на Ubuntu выполняйте сразу этот шаг, без установки nano):

      nano ~/playbooks/config/main.json
      
    3. Теперь вы сможете редактировать файл. Перемещайтесь по файлу с помощью стрелок на клавиатуре и редактируйте его, как в обычном редакторе. Ниже представлен main.json, который у нас получился для настройки сервера под одну установку CS-Cart без дополнительных витрин.

      Важно

      Замените имя домена из примера на имя вашего домена; также поменяйте реквизиты доступа к базе данных, которые будут созданы в процессе работы плейбука.

      {
          "stores_dir": "/var/www/html",
          "stores":
          {
              "doctorzoid.tk":
              {
                  "cart":
                  {
                      "storefronts": []
                  },
                  "database":
                  {
                      "name": "doctorzoid_tk",
                      "user": "doctorzoid_tk",
                      "password": "0NkpV5t9VcUYpKtM"
                  }
              }
          }
      }
      
    4. Нажмите Ctrl + X, чтобы выйти из редактора. Появится вопрос, хотите ли вы сохранить изменения. Нажмите кнопку Y на клавиатуре, а затем нажмите Enter, чтобы подтвердить имя изменяемого файла.

Шаг 3. Запускаем плейбук

В зависимости от нужного вам веб-сервера и нужной версии PHP запустите один из плейбуков командой ниже. Если процесс пройдёт успешно, то можно будет устанавливать CS-Cart или Multi-Vendor после этого.

  • lemp7.yml: nginx + mysql + php7.1

    cd ~/playbooks/ && ansible-playbook -e @config/main.json -c local -i inventory_php7 lemp7.yml
    
  • lvemp7.yml: varnish + nginx + mysql + php7.1

    cd ~/playbooks/ && ansible-playbook -e @config/main.json -c local -i inventory_varnish lvemp7.yml
    
  • lemp73.yml: nginx + mysql + php7.3

    cd ~/playbooks/ && ansible-playbook -e @config/main.json -c local -i inventory_php73 lemp73.yml
    
  • lvemp73.yml: varnish + nginx + mysql + php7.3

    cd ~/playbooks/ && ansible-playbook -e @config/main.json -c local -i inventory_varnish73 lvemp73.yml
    
  • lemp74.yml: nginx + mysql + php7.4

    cd ~/playbooks/ && ansible-playbook -e @config/main.json -c local -i inventory_php74 lemp74.yml
    
  • lvemp74.yml: varnish + nginx + mysql + php7.4

    cd ~/playbooks/ && ansible-playbook -e @config/main.json -c local -i inventory_varnish74 lvemp74.yml