Intereting Posts

Точка папки окружения Yii2

Я пытаюсь работать, что точка в папке окружения.

Первоначально у меня возникла идея, что вы можете указать веб-сервер на разные папки dev и prod в папке с environment но после небольшого чтения я понимаю, что это не так.

В Yii 1 вы решили бы это, просто имея несколько index.php , то есть:

  • index.php
  • index-local.php

Итак, вопрос в том, какая польза от этой новой структуры окружающей среды дает мне по-старому?

Я нашел среды очень полезными, позволяя мне поддерживать общую базу кода для нескольких клиентских проектов (на основе Yii App Advanced) и настраивать другую среду для каждого конкретного клиента, сохраняя свой собственный код частным и отдельным.

Для этого я сохраняю папку окружения в отдельном репозитории git из остальной части кода и вытаскиваю соответствующую папку на основе клиент / проект.

Это позволяет мне использовать базовый общий код для всех проектов и добавлять / переопределять любой файл для конкретного клиента или проекта, сохраняя при этом отдельные настройки конфигурации dev / prod. Если клиент использует и других разработчиков, они также удовлетворяются. Таким образом, только общий код, который я выбираю, будет использоваться совместно с клиентами, а пользовательский код будет оставаться конфиденциальным.

Я также переместил файл composer.json в папку окружения, чтобы я мог использовать разные расширения для каждого клиента / проекта, сохраняя эти частные.

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

Если вам не нужны среды, то не используйте их, но я заверяю вас, что некоторые люди посчитают это очень полезным.

Документация Yii2 в WIP, но вы должны прочитать следующее:

https://github.com/yiisoft/yii2/blob/master/docs/guide/apps-advanced.md#configuration-and-environments

Для переключения между этими средами вам необходимо использовать команду yii init .

EDIT :

Эта новая функция среды больше, чем просто использование другого конфигурационного файла. Вы можете использовать другую структуру папок, другой скрипт ввода … и т. Д.

Personnaly Я не буду использовать эту функцию, мне она не нужна (я буду использовать другой скрипт ввода, как в Yii 1), но я думаю, что это не бесполезно.

Я думаю, что вы не получили реальной цели среды, представленной в Yii2.

Я попытаюсь объяснить, какова была основная цель добавления среды в yii с точки зрения разработчиков на примере и надеюсь, что вы действительно оцените ее полезность.

Предположим на мгновение, что вы – команда разработчиков (например, 5-7 человек), работающая над средним проектом, реализованным в Yii. Чтобы эффективно работать над этим проектом, ваша команда решает использовать некоторые CVS или SVN (например, GIT) и хранить все файлы проекта в хранилище в облаке для всей команды. Это де-факто стандарт при работе над средними проектами в командах, и никто не будет сопротивляться тому, что это единственный удобный и простой способ.

Итак, давайте предположим, что вы используете Yii 1.x или Yii2 с подходом к различным сценариям входа, чтобы различать локальные (разработки) и производственные среды для подключения к db или устанавливать некоторые другие конфигурации, специфичные для среды. Все в порядке и работает. Но предположим, что члены вашей команды внедрили что-то новое в проект, и вы проверяете, что репозиторий работает над обновленной версией, и вы вдруг обнаруживаете, что ваш локальный файл конфигурации (в этом случае скрипт ввода с конфигурацией) перезаписывается другим файлом члена команды, который изменения в репозитории (потому что каждый из вас использует локальную машину db с другим именем базы данных или ОС или конфигурацией или просто потому, что ваша команда использует один локальный сервер разработки db, но вы находитесь в отпуске и не можете использовать ничего, кроме своего локального машина).

Таким образом, среда Yii2 добавляет больше гибкости для использования различных сред, каждая из которых имеет свои собственные конфигурации, а также использует общие (общие) конфигурации при работе в командах по проектам средней и большой точки зрения, поэтому пример в руководстве приведен в расширенном проекте приложения.

Конечно, вы можете преодолеть все вышеизложенное с помощью некоторых решений или .gitignore, который по умолчанию используется для преодоления проблемы, описанной в Yii2, с средами. Но:

  1. Зачем беспокоиться, если все уже сделано?

а также

  1. Это был лишь один пример полезности сред Yii2. Больше зависит от проекта и вашего воображения.

В целом Yii2 – отличный продукт. Он не только добавляет много новых функций в уже отличную фреймворк, но также более надежный и гибкий, чем Yii 1.x (несмотря на то, что Yii 1.x уже был очень надежным).

Что касается Laravel или любой другой фреймворк PHP, это действительно зависит … Каждый найдет свой любимый.

Для тех, кто устал от копирования файлов, я создал полезный скрипт, который вы можете запустить в фоновом режиме, чтобы синхронизировать файлы в вашей среде dev:

Файл sync-env-files.sh

 #!/bin/bash ENVIRONMENT_DIR="/var/www/example.com/environments/dev/" DIR="/var/www/example.com/" while [ true ]; do for envFile in `find $ENVIRONMENT_DIR -type f` do file=${envFile/$ENVIRONMENT_DIR/$DIR} if [ `stat -c "%Y" $file` -gt `stat -c "%Y" $envFile` ]; then #echo "copying modified file $file to $envFile" /bin/cp -f $file $envFile fi done sleep 2 done 

Затем запустите сценарий в фоновом режиме или добавьте в cron со стадом

 nohup server/sync-env-files.sh >/dev/null 2>&1 & 

Я хотел бы упомянуть в дополнение к @AngelCoding, так как этот вопрос все еще замечен, что я сейчас использую папки с папками environments и определенно вижу в этом смысл.

Самые первые вещи, которые я делаю в любом проекте с открытым исходным кодом, – это создать один проект для базы кода на GitHub, а затем другой, частный, один для Bitbucket для конфигурации, другими словами, папку environments .

Наличие этой папки облегчило мне разделить мою конфигурацию на частный репозиторий.

Таким образом, папка environments имеет множество применений и действительно помогает отделить конфигурацию для более удобного использования, даже если она не выглядит первоначально.