• Как организовать откат миграций БД при откате к предыдущему релизу?

    @LiguidCool
    По моему откат это далеко не ежедневная операция и при необходимости должна выполняться ручками. Лучше тщательнее тестировать релиз ...
    Ответ написан
    Комментировать
  • CentOS, Debian, Ubuntu что выбрать, если...?

    LenovoId
    @LenovoId
    svg, css,js

    Опыт серверного администрирования: 0 часов 0 минут 0 секунд

    закажите лучше специалистам ... 100% уверенно говорю не черта вы не сделаете
    Ответ написан
    2 комментария
  • Yii2 и deploy на сервер?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    правильно организовывать "выкладку" на сервер

    У каждого свои подходы. В общем случае, выделяют следующее:

    Есть ветка master, в которой находится production код, есть ветка staging, в которой находятся фичи, которые нужно тестить. Есть кучи feature-бренчей, которые можно мерджить только со staging, а после того как код в стэйджинге стабилизировался, можно мерджить ветку в продакшен.

    Подробнее о таком подходе можно почитать у фаулера, feature-branch. Есть еще другие методологии, типа feature-switch, а еще можно вообще не париться. Все от проекта зависит, количества разработчиков и все такое.

    По поводу же выкладки на сервер - самый пожалуй правильный способ, использовать ansible или подобные штуки, и запускать сборку на CI сервере после успешного прогода тестов (что куда лить можно вешать по пушу в соответсвующую ветку).

    Миграции в контексте yii придется делать руками, причем сразу при реализации каких-то фич. Миграции все же создавались для версионизации структуры данных, так что это даже больше для разработчика, нежели для деплоя. Сразу хочу заметить, что лучше писать такие миграции, которые не ломают логику работы более старой версии приложений (то есть стараться не удалять поля у таблиц, а только разрешать ничего туда не писать, или таблицы не удалять). Хотя опять же зависит от проекта и команды. Автоматизировать создание миграций для схемы данных будет проблематично, ибо модели не дают надежной инфы о схеме (то есть из модели не сгенерить таблицу, хотя можно это реализовать).
    Ответ написан
    Комментировать
  • Как создать нормальное dev-окружение для PHP разработки на ОС Windows?

    @E_STRICT
    Главное правило – храните все файлы в гостевой системе.
    Проекты с большим количеством файлов будут тормозить и в Линуксе если эти файлы хранятся на основной системе. Да и логически это более правильно, держать файлы и базы данных в одном месте.

    PHPStorm умеет работать с файлами по SFTP. Если это не подходит, то для windows есть всякие проприетарные решения (платные и бесплатные) для монтирования удаленных файловых систем.

    P.S. Используйте Вагрант даже если перейдете на Линукс или OS X.
    Ответ написан
    1 комментарий
  • Разработка в виртуальной машине? Как разделить задачи на одном PC?

    @WayMax
    1. Да, лицензии нужно отдельно докупать.
    2. Поиграть проблематично будет.
    3. Никакой проблемы у вас нет, вы ее "надумали".
    Ответ написан
    Комментировать
  • Использование виртуальной среды в веб-разработке

    KorP
    @KorP
    Кратко о себе
    Тут конечно фанаты передавать данные через ssh или git меня наверное запинаю, но имхо можно просто поднять samba и подключить как сетевой диск в винде и спокойно файлики открывать и работать.
    Ответ написан
    4 комментария
  • Использование виртуальной среды в веб-разработке

    sad
    @sad
    Мы используем Vagrant с VirtualBox для разработки. Хост: Mac OS, гость: Ubuntu. Удобно по нескольким причинам:
    — все настройки виртуальной машины собраны в один файл в папке проекта;
    — легко обнулить среду разработки, так как эталонный образ всегда нетронут;
    — настройка и установка софта отдана на откуп сценариям (bash, puppet etc.).

    Из минусов:
    — под Windows не заработал NFS;
    — встроненный в VirtualBox механизм синхронизации файлов почему-то игнорирует права доступа к файлам.
    Ответ написан
    1 комментарий
  • Использование виртуальной среды в веб-разработке

    sirko_el
    @sirko_el
    Рекомендую полностью переходить на linux.
    Приимущества:
    1. Вы работаете в таком же окружении что и ваш web сервер.
    2. Средств разработки под linux хватает и они ни чем не уступают windows приложениям.
    3. На удаленном web сервере Вы будете чувствовать себя «как дома».
    4. Установка софта для web проектов занимает минимум времени.

    P.S. Если вы с linux не знакомы — начните с Ubuntu.
    Ответ написан
    1 комментарий
  • В чем преимущество Vagrant (если сравнивать с OpenServer или даже DENWER)?

    MaxDukov
    @MaxDukov
    впишусь в проект как SRE/DevOps.
    плюс докера(и вагранта и т.д. - т.е. контейнеров) в том, что когда Вы создадите свой проект, клиенту можно будет отдать контейнер. в таком виде все однозначно заработает у клиента - т.к. это работало у вас. Заработавшее на OpenServer далеко не факт что заработает на хостинге, на Denwer и т.д. - начиная от путей и прав, и заканчивая версиями библиотек\настроек php. Плюс с контейнерами просто релизовать тестирование Вашего кода в разных версиях php\mysq и т.д.
    т.е. если Вы только начинаете и учитесь PHP - начинать с OpenServer вполне можно. Но освоить линукс в будущем в минимуме придется.
    Ответ написан
    Комментировать
  • В чем преимущества *nix, linux перед windows (для веб разработчика)?

    DevMan
    @DevMan
    1. вы получаете окружение близкое или идентичное к продакшену.
    2. вы получаете внятную консоль/шел из коробки.
    3. вы избавляетесь от массы вопросов типа "на локалке все работает, а залил на сервер и получил жопу" (или наоборот).
    4. у вас появляется более лучшее понимание как на сервере все работает.

    при теперешнем развитие технологий и производительности железа, нет необходимости себя ломать.
    можно попробовать в виртуалке (docker/vagrant)/дуалбуте и самому для себя решить стоит или нет.
    Ответ написан
    17 комментариев
  • Как настроить vagrant + virtualbox на windows 10 для многих сайтов (как это сделано на хостингах)?

    @nfire
    Для начала убедитесь, что в виртуалку проброшены и работают нужные порты.
    Ответ написан
    Комментировать
  • Как делать правильный деплой?

    nonlux
    @nonlux
    накрутить можно много и как угодно.
    1. CI сервер их куча разных на любой вкус и цвет
    для repo1 по хуку на какую-нибудь ветку например master или prodaction делаем обновление кода на сервере
    с бд все зависит от организации работы с ней
    если есть механизм миграций, то проблемы вообще нет
    repo 2 заворачиваем в пакет для любого удобного менеджера пакетов npm bower и т.д
    c обновлением по лицензии, я бы не стал ее делать на рабочем сервере сразу, но это вам решать
    2 для удаленной кофигурации так же есть ansible puppet можно их прикрутить
    3 докер - собираете контейнер с приложением, а на сервере тупо обновляете

    короче вариантов много, пробуйте. как правильно никто не скажет. скажут лишь о том что в тренде.
    Ответ написан
    Комментировать
  • Для чего нужен Docker?

    @spotifi
    Внутри Docker только Linux, и, экспериментально, FreeBSD. Запускается нативно под Linux и, экспериментально, под FreeBSD. Под MacOSX, Windows - через виртуальную машину.

    Докер - это двойная изоляция. Изоляция того, что лежит внутри контейнера Докера от операционной системы и изоляция операционной системы от того, что лежит внутри Докер. Изоляция подразумевает изоляцию всех файлов, портов, приоритетов.

    Это почти виртуальная машина. Почти, да не совсем.


    Есть такое понятие "ад зависимостей". Любое ПО устанавливаемое на компьютер, тянет за собой зависимости (конфигурационные файлы, статические файлы называемые обычно asset, вспомогательные утилиты/сервисы, библиотеки и пр.). Ряд из этих библиотек/утилит/сервисов несовместим друг с другом. А с учетом того, что каждая из этих библиотек/утилит/сервисов имеет и свои зависимости - ситуация еще хуже.

    Например, мы используем Yandex.Cocaine, которая нормально компилируется только на Ubuntu 14.04 (и, вроде, на Debian 7). Но не под CentOS 6, 7, Debian 8, FreeBSD 9, 10, Ubuntu 15, 16 и пр. - скомпилировать его невозможно. Запускаем в этих операционных системах в Докере.

    С другой стороны, и одновременно с этим, вам необходимо установить другое, более современное ПО. И одновременно более старое. Причем речь даже не идет об серьезно отличающихся версиях Linux. Например, одно ПО требует не менее Ubuntu 14.10, а другое не более Linux 14.04.

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

    Таким образом, мы имеем бинарный файл запускаемый как бы в своей операционной системе.

    Вы можете сказать - ба, да это же давно известная виртуальная машина. Но нет, это не так. Это так называемые контейнера. Никакой виртуальной машиной там и не пахнет. За исключением Windows и MacOSX, где работа без виртуальном машины пока экспериментально возможно только, а нормой в этих ОС является использование Докера внутри полноценной виртуальной машины.

    Но виртуальные машины с Докером используются только для разработки. Для запуска в production виртуальные машины с Докер не используются.

    Докер использует контейнеры операционной системы. LXC в Linux, Jails в FreeBSD. Контейнер - это область операционной системы, изолированная от основной части операционной системы. В контейнере свое дерево каталогов (включая системные /dev, /bin, /sbin и пр.), свои сетевые порты и пр. и пр.

    Но при этом не используется полная виртуализация. Что существенно экономит ресурсы. Запустить 100 полноценных виртуальных машин вряд ли получится даже на мощном сервере. А вот запустить 100 контейнеров Docker даже на слабом домашнем компьютере - возможно.

    Правда использование не полной виртуализации ограничивает использование операционных систем внутри контейнеров. Как правило, это специально подготовленные версии Linux или FreeBSD. Именно специально подготовленные. Windows - в принципе в контейнере запустить невозможно.

    Контейнеры существовали и до Docker. Докер, строго говоря, это всего лишь очень удобный набор инструментов, собранных воедино, для управления контейнерной виртуализацией. Но очень удобный.

    Зачем это используется?

    Ребята из всяческих Dropbox, Facebook и и пр. гигантах, запускающие по 1 млн. различных программ в своих сервисах, столкнулись, что невозможно везде гарантировать идентичные настройки операционной системы. А это критично.

    Вплоть до того, что идеально написанная и оттестированная программа на реальном сервере начинает себя вести непредсказуемо.

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

    Более того - изначально разработчик программного обеспечения тестирует программу в контейнере Докер, с определенными настроками. И в этом же (или с такими же настройками) контейнере Докера программа уезжает на сервер.

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

    До этого люди мучались, придумывали хитрые инсталяторы...

    Потом плюнули на попытки упорядочить окружение в ОС - и сейчас концепция такова - устанавливать программы на сервера вместе со своими индивидуально настроенными под них операционными системами - то есть внутри контейнеров. 1 контейнер = 1 настройка ОС = 1 программа внутри.

    Другими словами:
    • Докер-контейнер нужно использовать для отладки.
    • Тот же Докер-контейнер нужно использовать и на сервере.


    Это позволяет не трудиться с настройками "под сервер" локально на машине разработчика. Это позволяет разрабатывать на машине разработчика совершенно разные программы одновременно, которые требует несовместимых настроек операционной системы. Это позволяет давать гораздо больше гарантий, что программа на сервере будет вести себя также как и на машине разработчика. Это позволяет разрабатывать под Windows/MacOSX с удобным "прозрачным" тестированием под Linux.

    Докер применим к созданию/настройке только серверного программного обеспечения под Linux (экспериментально под FreeBSD). Не для смартфонов. А если десктопов - то только программное обеспечение без GUI.

    Посколько Докер позволил одним махом упростить работу разработчикам и админам и повысить качество результата - сейчас бум на Докер. Придумано огромная гора инструментов для управления развертыванием приложений созданных с Докером. Если раньше чтобы запустить 10 000 программ на 1000 серверах нужно было как минимум 3 высококвалифицированнейших девопса, которые писали кучу описаний как это сделать на Puppet, Salt, Chef, Ansible, да и то не было гарантий, это все тестилось месяцами. То сейчас с Докер даже один квалифицированных девопс может рулить миллионами программ на десятках тысяч серверов. С куда как большей гарантией, что все это заведется нормально.

    UPD:

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

    Разработчик отдает весь свой результат в систему CI (обычно через git)
    CI на каждый новый коммит делает с помощью Docker образ для тестирования.
    Если тесты проходят успешно, то этот же самый Docker образ, отправляется на развертывание в production.
    Или, чуть иначе в компилируемых системах, где исходники не нужны в production: в Docker производится развертывание среды для компиляции, а для тестирования разворачивается второй образ с уже откомпилированным добром, который уже отправляется в production.

    То есть при правильной огранизации дела разработчик не может/не должен влиять на то, какой будет образ.
    А вот в тестовой среде (запускаемом на сервер, недоступном разработчику в больших командах) и в production как раз используется один и тот же образ.

    Основная идея - что тестировали, ровно то и запускаем на боевом сервере. Один-в-один, включая те же самые файлы (не такие же, а именно те же самые).
    Ответ написан
    18 комментариев
  • Как синхронизировать git и github?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Обычно начинают с познавательного чтения

    Коротко. Репозиторий живет на вашей машине. Вы привязывете его к github
    git remote add  origin git://github.com/paulboone/ticgit.git

    И при необходимости, выливаете изменения:
    git push origin master
    Ответ написан
    1 комментарий
  • Как отказаться от разработки на локальном сервере?

    Antonchik
    @Antonchik
    Программирую на HTML
    Git использовать. Для бд миграции, для конфигов .gitignore
    Ответ написан
    Комментировать
  • Как вы используете GIT на нескольких компьютерах при работе над одним куском кода?

    Мы работаем всё по ветках… Есть мастер, но каждый из работников фирмы работает только в своей ветке, а потом всё комитится в мастер одним человеком. Напримерпохожим образом работает Линкус Торвальд.
    Ответ написан
    1 комментарий
  • Как вы используете GIT на нескольких компьютерах при работе над одним куском кода?

    dshster
    @dshster
    Javascript, Frontend
    Создаю bare хранилище в папке синхронизированной через Dropbox, git push туда проект, когда заканчиваю работать на одном компьютере, синхронизирую Dropbox. На другом компьютере снова синхронизирую Dropbox и git pull изменения в папку с проектом на этом компьютере. Как-то так в общих чертах.

    Пока недостатков не заметил, кроме того, что забываю запушить проект на одном компьютере, и редактирую на другом. После этого приходится сливать разные изменения.
    Ответ написан
    Комментировать
  • Локальная разработка и Docker?

    @micronull
    Я использую для локальной разработки docker. Это значительно удобнее, чем держать полноценное окружение из зоопарка разных версий php и прочих штук.
    Если сайт старый, под какие-нибудь древние версии apache, php и mysql. Не проблема, - смотрю на hub, если нет, то собираю свой.
    При этом спокойно можно переключить на другой проект, более современный. Например с nginx, php7 и postgresql. Предварительно выключив предыдущий контейнер.

    Далее в перспективе можно спокойно кинуть контейнер на сервер и за пару минут развернуть сервис.

    В общем настоятельно рекомендую попробовать docker при локальной разработке.
    Ответ написан
    9 комментариев
  • Локальная разработка и Docker?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    1. GIT не относится не посредственно окружения для вашего кода, так что его имеет смысл использовать глобальный. А вот всякие composer / php / node / gulp / yarn /... - это часть окружения для выполнения, и их лучше держать прямо в контейнере.

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

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

    Да и PhpStorm можно один раз настроить указав путь в Git, ноде, File Watchers.

    Это да.

    Ведь с докером мне на каждом проекте все эти минификаторы, композеры указывать заново?

    Да

    Действительно ли оправдано использовать Docker одному или небольшой группой?

    Да. Например хотите посмотреть проект годичной давности, но обратная совместимость зависимостей вашего проекта потеряна, такое сплошь и рядом.

    Возможно, мои проекты не такого уровня, но мне действительно не критично воссоздать dev и prod окружение 1 в 1.

    1 в 1 никто и не создает, а вот максимально похоже по стеку технологий - вот это правильно.

    Ну и пусть там на боевом крутится php 5.6, когда у меня 7.1.

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

    А если ты разрабатываешь с нуля и не знаешь какая будет конфигурация на боевом?

    Ко боевому можно предъявлять требования.

    Действительно ли деплой так прост, что заменяет все фтп-заливки, jenkins'ы, git-пуллы?

    Нет
    Ответ написан
    Комментировать