Каждое более-менее сложное приложение используется как минимум в двух режимах: live (production, «боевой») — основной, «производственный» режим и work (development) — режим разработки приложения. Под катом — сравнение особенностей развертывания Magento-приложений для этих двух режимов.



Введение



Есть разные способы развернуть php-приложение (в общем) и Magento-приложение (в менее общем). В нашей компании для развертывания приложений используется PHP Composer и shell-скрипты. Все нижесказанное в полной мере относится именно к данному способу развертывания, к другим способам относится в менее полной мере или вовсе не относится.

Примеры модулей:


Сравнение целей



Режим разработки

  • Приоритетом является удобство разработки и тестирования;
  • Код разрабатываемых модулей должен находиться под контролем версий;
  • Необходимо время от времени запускать тесты;
  • Иногда возникает потребность в клонировании данных с live-версии (для анализа возникших проблем, например);


Производственный режим


  • Приоритетом является производительность приложения и безопасность его использования;
  • Отсутствие лишнего кода (вспомогательные библиотеки, например phpunit);
  • Использование стабильных/определенных версий внешних библиотек;


composer.json


Дескриптор развертывания Composer-приложения (./live/composer.json и ./work/composer.json):

live work
Секция require-dev отсутствует.

Секция require-dev содержит модули, необходимые для разработки (тестирование и т.п.).
  "require-dev": {
    "phpunit/phpunit": "3.7.*",
    "phpunit/php-code-coverage": "~2.0"
  },


Стратегия развертывания в секция extra предусматривает копирование для всех модулей приложения без исключений.
  "extra": {
    "magento-deploystrategy": "copy"
  }


Стратегия развертывания в секция extra предусматривает встраивание в приложение разрабатываемых модулей при помощи символических ссылок.
  "extra": {
    "magento-deploystrategy": "copy",
    "magento-deploystrategy-overwrite": {
      "flancer32/sample_magelib_demo": "symlink",
      "flancer32/sample_mage1_module": "symlink"
    }
  }




post_install.sh


Shell-скрипты для развертывания Magento-приложения (live/cfg/bin/deploy/post_install.sh и work/cfg/bin/deploy/post_install.sh):

live work
Отсутствуют настройки, относящиеся к развертыванию приложения в среде Travis CI.


Настройки, относящиеся к развертыванию приложения в среде Travis CI:
# type of the deployment (skip some steps when app is deployed in TRAVIS CI, $DEPLOYMENT_TYPE='travis')
DEPLOYMENT_TYPE=${DEPLOYMENT_TYPE}


Не допускается пустой пароль для доступа к базе данных.

Возможен пустой пароль для доступа к базе данных (например, для Travis CI); в данном случае в файле конфигурации переменных развертывания (work/templates.json) указывается ключевое значение «skip_password»:
# use 'skip_password' to connect to server w/o password.
DB_PASS=${CFG_DB_PASS}
if [ "$DB_PASS" = "skip_password" ]; then
    MYSQL_PASS=""
    MAGE_DBPASS=""
else
    MYSQL_PASS="--password=$DB_PASS"
    MAGE_DBPASS="--db_pass ""$DB_PASS"""
fi


Инсталляционный скрипт не должен выполняться, если уже есть развернутый экземпляр приложения:
# Check 'local.xml' to prevent repeated installation
FILE_LOCAL_XML=$MAGE_ROOT/app/etc/local.xml
if [ -f "$FILE_LOCAL_XML" ]
then
    echo "There is '$FILE_LOCAL_XML' file. Do nothing."
else
    echo "There is no '$FILE_LOCAL_XML' file."
    ...
fi


##
echo "Post installation setup is done."
##


Возможен пустой пароль…


Комментарии (0)