Статьи

Как супермасштабировать Magento в облаке

Это руководство поможет вам подготовить установку Magento для высокого трафика, лучшего времени загрузки и более простого текущего управления сайтом. Готов?


Вы можете загрузить готовый код для этого учебного руководства или запустить «magento-basic» Quickstart из своей учетной записи Pagoda Box, чтобы протестировать работающий сайт.

  • Аккаунт Pagoda Box (бесплатно)
  • Функциональный локальный Magento Install
  • Программное обеспечение для локальной разработки ( MAMP или WAMP )
  • Git установлен (можно использовать SFTP)
  • Терминальный клиент Pagoda установлен

Справедливое предупреждение: этот урок может изменить вашу жизнь. Pagoda Box — это не традиционный хостинг. Учения в этой статье не только помогут масштабировать Magento, но и закладывают основу для прогрессивного процесса от разработки к производству.


Примечание: если вы уже используете Git, вы можете пропустить этот раздел. Если нет, то руководство по настройке Git содержит конкретные инструкции по созданию ключа SSH, а также ссылки для загрузки и установки Git (также ниже).

Хотя в Pagoda Box можно использовать только SFTP , официально рекомендуемый (и наиболее эффективный) рабочий процесс интегрирует Git в вашу повседневную разработку. Git обеспечивает такие функции, как совместная работа, равномерное распределение кода, развертывание, история развертывания и откат кода. Хотя большинство этих функций доступно для пользователей FTP, использование Git обеспечивает полную интеграцию.

Если вы хотите в полной мере воспользоваться преимуществами Pagoda Box, загрузите Git и изучите основы . В зависимости от вашей операционной системы, настройки могут незначительно отличаться. Независимо от вашей ОС, команды идентичны после установки Git.

Использование Git для управления совместной работой и контролем версий может включать краткую кривую обучения. Однако, как правило, есть только три команды, которые мы будем использовать на постоянной основе, чтобы зафиксировать изменения локально, а затем развернуть их в Pagoda Box:

  • git add . — Добавляет локальные файлы в ваш репозиторий
  • git commit -m "some message about what you've done" — фиксирует ваши изменения
  • git push pagoda --all — отправляет изменения в репозиторий Pagoda Box (по умолчанию автоматически разворачивается)

Мы будем использовать их позже.


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
                         *
                       / \
                     / \
                 +_/ / / |
                     ||*|||*||
                     |+||*||+|
                     / \
                 +_/ / / |
                     ||*|||*||
                     |+||*||+|
 ____ _ ____ ___ ____ _ ____ _____ __
|
|
|
|_|
 
   Welcome To Your Pagoda Box Terminal Client.
  ————————————————
      ——————————————
         ———————————
                      Enjoy.

Pagoda Box предоставляет Terminal Client, который позволяет вам клонировать, создавать, развертывать, уничтожать, переименовывать и откатывать приложения из командной строки. Позже в этом руководстве мы будем использовать клиент для создания безопасного туннеля к действующей базе данных Magento с помощью Sequel Pro (этот процесс аналогичен для других инструментов управления базами данных, таких как HeidiSQL).

Pagoda Box Terminal Client — это рубин, поэтому установка довольно проста. Прежде всего, Ruby должен быть установлен. Установка отличается для каждой операционной системы.

  • Mac — Ruby и RubyGems предустановлены на Mac OSX. Пока вы работаете с версией 10.5 или более поздней, вы должны быть в порядке.
  • Windows — есть несколько различных способов установить Ruby в Windows. Мы рекомендуем этот автоинсталлятор . Если это не работает для вашей настройки, поиск Google даст вам довольно хороший список пошаговых инструкций по установке.
  • Linux — используйте предпочитаемый менеджер пакетов для загрузки пакета Ruby. Для пользователей Ubuntu гем доступен через getdeb.net.

После установки Ruby просто запустите следующую команду для установки Pagoda RubyGem:

На Mac или Linux:

1
$ sudo gem install pagoda

В Windows:

1
$ gem install pagoda

Затем, чтобы проверить, правильно ли установлен Pagoda Gem, выполните:

1
$ pagoda list

Если вы впервые используете Gem, он запросит у вас имя пользователя и пароль Pagoda Box. После того, как вы их введете, ожидайте увидеть список ваших приложений Pagoda Box. Если вы не создали никаких приложений, список будет пустым.

Если вы получили ошибку, скорее всего, это неверные учетные данные. Вы можете проверить или изменить учетные данные, используемые ~/.pagodarc отредактировав файл, расположенный на вашем локальном компьютере в ~/.pagodarc . Убедитесь, что вы точно соответствуете учетным данным, которые вы используете в своей учетной записи Pagoda Box. (Примечание: это скрытый файл, поэтому вам нужно включить скрытые файлы или открыть его через терминал. Также обратите внимание, что файл хранит ваши учетные данные дважды, поэтому отредактируйте оба при необходимости.)


Примечание: пропустите этот шаг, если у вас уже есть работающая локальная установка Magento.

Если у вас его еще нет, убедитесь, что вы используете локальный веб-сервер и программное обеспечение для управления базами данных. В зависимости от вашей операционной системы доступно несколько вариантов. Обычным вариантом для Mac является MAMP или WAMP для Windows. Оба бесплатны и легко настраиваются.

Как только ваша локальная среда разработки настроена, загрузите Magento, а затем следуйте официальному руководству, чтобы установить Magento локально.

Не стесняйтесь использовать скрипт автоматической установки Magento для настройки приложения в вашей локальной среде. Однако из-за распределенной облачной архитектуры Pagoda Box скрипт не установит Magento напрямую в вашу производственную среду. Рабочий процесс и архитектура Pagoda Box требуют, чтобы вы вносили изменения кода локально, фиксировали, а затем развертывали в рабочей среде. Этот рабочий процесс включает в себя совместную работу и разработку> постановка> лучшие практики производства.


Примечание: на Pagoda Box YAML Boxfile может быть включен в корень вашего хранилища кода. Хотя Boxfile не является обязательным, он предоставляет расширенные функции, такие как управление размещенной средой при каждом развертывании. В этом учебном пособии мы будем широко использовать Boxfile, чтобы упростить задачи и обеспечить повторное использование репозитория в Pagoda Box.

Создайте файл с именем «Boxfile» в корневом каталоге локальной установки Magento, затем скопируйте в свой Boxfile следующее (пояснение ниже):

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
web1:
  name: mag-app
  shared_writable_dirs:
    — media
    — var
  php_version: 5.3.8
  php_extensions:
    — pdo_mysql
    — mysql
    — simplexml
    — mcrypt
    — hash
    — gd
    — dom
    — iconv
    — curl
    — soap

Этот Boxfile служит нескольким целям. Сначала он создает компонент web1 , затем называет его mag-app .

Во-вторых, Boxfile идентифицирует media и var как общие каталоги, доступные для записи. Это позволяет пользователям загружать изображения, видео и другие медиафайлы на распределенный облачный сайт Magento без единовременной записи.

Когда каталог помечается как доступный для записи, его содержимое больше не развертывается в Pagoda Box из локального репозитория. Каждый раз, когда в эти каталоги необходимо развертывать локальные файлы, их необходимо копировать вручную через SSH или SFTP. Вы также можете использовать SSH / SFTP для передачи файлов из Pagoda Box на ваш локальный компьютер по мере необходимости.

Boxfile также объявляет, какая версия PHP и расширения будут включены в ваши веб-экземпляры при их развертывании. Таким образом, и среда, и приложение работают вместе, поэтому откат к предыдущему развертыванию включает правильную версию PHP и расширения. Список расширений PHP в этом Boxfile взят из официальных системных требований Magento.

Совет: После того, как Git установлен в вашей локальной среде, используйте файл .gitignore чтобы игнорировать доступные для записи каталоги, указанные в вашем Boxfile. Идентификация этих каталогов в файле .gitignore помогает уменьшить размер вашего репозитория и время развертывания. Помимо доступных для записи каталогов, вы также можете добавить каталог .gitignore файл .gitignore , поскольку он используется локально, а не в Pagoda Box.

После того, как вы установили Git и Terminal Client, настроили Boxfile и доработали свой локальный исходный код, вы готовы к запуску на Pagoda Box.


Если у вас его еще нет, создайте бесплатную учетную запись Pagoda Box. Вам не нужно будет вводить кредитную карту для установки Magento для тестирования.

Если вы этого еще не сделали, следуйте этому руководству, чтобы добавить ключ SSH на панели администратора Pagoda Box. Руководство предоставит конкретные инструкции по настройке ключа SSH на Mac или Windows.


Создав учетную запись Pagoda Box и настроив ключ SSH, перейдите на домашнюю страницу новой учетной записи и нажмите кнопку «Новое приложение», чтобы создать новое приложение.

Примечание. В этом руководстве наш пример приложения называется «magento». Имя приложения также используется для репозитория Pagoda Box, субдомена для только что развернутого приложения (magento.pagodabox.com) и имени пользователя в режиме SFTP. Замените «magento» на «your-app-name-here», где это уместно, в оставшейся части этого урока.

Затем выберите один из трех вариантов запуска сайта Magento. Поскольку у вас уже есть настроенная версия Magento локально, выберите «Очистить репо» для развертывания с использованием SFTP или Git, назовите свое приложение и нажмите «Запустить приложение».

Вам будет предложено выбрать предпочитаемый метод развертывания (Git или SFTP). Нажмите на ваши предпочтения и следуйте инструкциям на экране.

Вы можете скопировать и вставить экранные инструкции с панели инструментов Pagoda Box на свой терминал после того, как с помощью Terminal переключите каталог (cd) в корневой каталог вашего проекта.

Вставленные команды делают следующее:

  • git init — инициализируйте ваш Magento-проект как Git-репозиторий
  • git add . — Добавить все файлы из проекта в репо
  • git commit -m 'your commit message' — Зафиксируйте файлы с сообщением, которое позволит вам быстро сканировать историю развертывания в будущем, если вам нужно отменить или изменить изменения
  • git remote add pagoda [email protected]:magento.git Добавить Pagoda
  • git push pagoda --all — Вставить локальный код в удаленный репозиторий Pagoda Box. Пока вы находитесь в «основной» ветке (которая используется по умолчанию), Pagoda Box будет автоматически развертывать ваш код и выполнять инструкции, которые мы установили в Boxfile. Автоматическое развертывание можно отключить на панели администратора или настроить для автоматического развертывания из ветви Git, отличной от Master.

Если вы выбрали SFTP, Pagoda Box поможет вам установить учетные данные и пароль. Подключитесь через SFTP к Pagoda Box и загрузите исходный код Magento в каталог code .


Существует два способа создания базы данных на Pagoda Box. У каждого есть преимущества, объясненные ниже:

Boxfile автоматически создаст компонент базы данных при развертывании, если этот компонент ( db1 , db2 и т. Д.) Еще не существует. Объявление базы данных в Boxfile теперь экономит немного времени и значительно упрощает развертывание нескольких сайтов Magento из стандартизированной базы кода в будущем. (Примечание. Из Boxfile можно развертывать только облачные БД. Если вам нужна большая, выделенная или избыточная база данных, см. Параметр «Панель мониторинга» далее в этом шаге.) Добавьте следующее в свой Boxfile:

1
2
3
db1:
  name: mag-db
  type: mysql

Ваш обновленный Boxfile должен выглядеть так:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
web1:
  name: mag-app
  shared_writable_dirs:
    — media
    — var
  php_version: 5.3.8
  php_extensions:
    — pdo_mysql
    — mysql
    — simplexml
    — mcrypt
    — hash
    — gd
    — dom
    — iconv
    — curl
    — soap
db1:
  name: mag-db
  type: mysql

Затем внесите изменения в обновленный файл и отправьте изменения в Pagoda Box:

1
2
$ git commit -m «pagoda config»
$ git push pagoda —all

Вы также можете создать базу данных из панели инструментов Pagoda Box. Здесь вы добавляете большую, выделенную или избыточную базу данных.

Сначала нажмите «Добавить базу данных» на панели инструментов.

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

Облачные базы данных обычно развертываются за считанные минуты. Если вы выбрали Dedicated, не теряйте терпение. Вы можете подождать до 90 минут, пока большой сервер будет настроен в соответствии с вашими требованиями.


Ваша база данных автоматически генерирует учетные данные, когда она создается на Pagoda Box. Мы будем использовать эти учетные данные для настройки Magento в производстве.

Однако, поскольку Magento будет использоваться как в локальной среде, так и на производстве, нам нужно предоставить разные учетные данные для каждой базы данных. Мы будем использовать Deploy Hooks в Boxfile, чтобы упростить этот процесс, выполняя сценарии или команды во время развертывания.

В случае Magento мы будем менять файл local.xml при развертывании. Таким образом, без ручного переключения учетных данных файл app/etc/local.xml автоматически будет иметь учетные данные локальной базы данных в процессе разработки, но учетные данные app/etc/local.xml базы данных на Pagoda Box.

Сначала создайте каталог с именем pagoda в корневом каталоге, затем скопируйте app/etc/local.xml в app/etc/local.xml в новый каталог.

Затем отредактируйте local.xml чтобы включить учетные данные базы данных Pagoda Box с панели управления вашей учетной записи. Обратите внимание, что Pagoda Box использует 3 уровня аутентификации, поэтому даже если ваши учетные данные будут скомпрометированы, другие пользователи не смогут получить доступ к вашей базе данных.

Добавьте следующее в свой Boxfile, в разделе web1 чтобы создать Deploy Hook.

1
2
after_build:
  «mv pagoda/local.xml app/etc/local.xml»

Ваш обновленный Boxfile должен выглядеть так:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
web1:
  name: mag-app
  shared_writable_dirs:
    — media
    — var
  php_version: 5.3.8
  php_extensions:
    — pdo_mysql
    — mysql
    — simplexml
    — mcrypt
    — hash
    — gd
    — dom
    — iconv
    — curl
    — soap
  after_build:
  — «mv pagoda/local.xml app/etc/local.xml»
db1:
  name: mag-db
  type: mysql

Затем внесите изменения и нажмите на Pagoda Box:

1
2
3
$ git add .
$ git commit -m «pagoda config»
$ git push pagoda —all

С помощью тех же инструментов, которые вы используете для управления локальной базой данных, вы можете безопасно управлять действующей базой данных на Pagoda Box. Мы будем использовать Sequel Pro для этого примера, но процесс похож на такие инструменты, как HeidiSQL.

Когда скрипт установки Magento выполнялся локально, он создал несколько таблиц в локальной базе данных. Эти таблицы необходимо перенести в производство.

Сначала экспортируйте вашу локальную базу данных, используя менеджер баз данных: Файл> Экспорт.

Теперь выберите местоположение и сохраните экспорт.

Теперь установите туннель базы данных. Используя клиент терминала Pagoda Box, укажите приложение, к базе данных которого вы пытаетесь получить доступ, и идентификатор компонента базы данных (например, db1), как в этом примере:

1
2
3
$ pagoda -a magento tunnel -c db1
—OR—
$ pagoda —app=magento tunnel —component=db1

Как только туннель установлен, используйте Sequel Pro (или аналогичный) для подключения к базе данных, используя хост и порт, предоставляемые клиентом терминала Pagoda …

И имя пользователя и пароль в ваших учетных данных базы данных Pagoda. Они были автоматически созданы с вашей базой данных и могут быть найдены на панели инструментов Pagoda Box под компонентом базы данных (см. Пример в шаге 8).

Затем, импортируйте вашу базу данных в производство, используя Sequel Pro (или аналогичный): Файл> Импорт. Теперь выберите файл экспорта базы данных и откройте.

Наконец, поскольку мы запустили скрипт установки локально, необходимо настроить базовый URL-адрес непосредственно в базе данных перед просмотром сайта. Пока вы все еще подключены к базе данных Pagoda Box в Sequel Pro, перейдите к таблице core_config_data / отфильтруйте core_config_data и отредактируйте значение для следующих путей:

1
2
web/unsecure/base_url
web/secure/base_url

Значения для каждого должны выглядеть примерно так:


Чтобы защитить ваши IP-адреса от спама, Pagoda Box использует почтовый протокол SMTP для отправки электронной почты через учетные данные SMTP стороннего почтового провайдера. В английском это означает, что вам нужна компания (например, Gmail), которая предоставляет почтовые услуги.

Независимо от того, какого почтового провайдера вы выберете, введите учетные данные этого провайдера на своей панели инструментов Pagoda Box. Это должно выглядеть примерно так:


Несколько повторяющихся задач в Magento (например, рассылка новостей, очистка журналов, уведомления клиентов и т. Д.) Должны выполняться периодически. Файл cron.php расположенный в корне Magento, запустит эти задачи. Мы cron.php Cron Job в административной панели Pagoda Box, чтобы запускать cron.php каждые 15 минут. (Примечание. Для настройки конкретных задач Magento см. Их Официальное руководство. )

Задания Cron могут быть добавлены или обновлены через Boxfile, а затем развернуты в Pagoda Box. Чтобы запланировать задачу с 15-минутными интервалами, добавьте следующее в свой Boxfile в компоненте web1: (измените «magento», чтобы указать на собственное имя приложения / поддомен):

1
2
cron:
  — «*/15 * * * *»: «curl -s -o /dev/null http://magento.pagodabox.com/cron.php»

Ваш обновленный Boxfile должен выглядеть так:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
web1:
  name: mag-app
  shared_writable_dirs:
    — media
    — var
  php_version: 5.3.8
  php_extensions:
    — pdo_mysql
    — mysql
    — simplexml
    — mcrypt
    — hash
    — gd
    — dom
    — iconv
    — curl
    — soap
  after_build:
  — «mv pagoda/local.xml app/etc/local.xml»
cron:
    — «*/15 * * * *»: «curl -s -o /dev/null http://magento.pagodabox.com/cron.php»
db1:
  name: mag-db
  type: mysql

В панели администрирования Pagoda Box на вкладке Cron добавьте следующее (измените «magento», чтобы оно указывало на имя вашего собственного приложения):

Команда: curl -s -o /dev/null http://magento.pagodabox.com/cron.php

Расписание: */15 * * * *

Это должно выглядеть так:


Вы уже получили тяжелую работу с дороги. Ваше приложение Magento является масштабируемым, и изменения легко внедряются во всех экземплярах с помощью $ git push pagoda --all .

В следующей статье мы оптимизируем Magento, добавим кэш Redis, псевдонимы SSL и домен, а затем масштабируем приложение для тестирования и производства. До скорого!