Задать вопрос

Как правильно разрабатывать web проект на примере yii2?

Здравствуйте!
Изучаю php и хочется все делать правильно сразу. Сейчас знакомлюсь с Yii2. Пишу свой проект. Обычно при работе с cms перенос на рабочий сервер достаточно прост - переносим файлы по ftp, переносим базу и готово. А как быть со сложными проектами, если хочется постоянно допиливать функционал и заливать изменения на продакшн сервер, но при этом чтобы у пользователей не было каких-то сбоев и т.п и тем более потери данных. Не потерять данные как я понял, помогут миграции. Но пока с ними не очень разобрался они нужны только для командной работы или их нужно использовать в любом случае?

Хотелось бы, чтобы опытные разработчики наставили на путь истинный. Как правильно вести разработку сложного проекта, как правильно делать деплой. Интересует алгоритм и подходы. Разрабатывать на локальной машине или же поднимать виртуальный сервер.
В качестве примера, сделали версию 1.0, она готова к релизу как делаем деплой сначала на какой-то тестовый сервер, а потом уже в продакшн? Допустим, потом готова версия 1.1 как правильно выкатить изменения?

Буду очень благодарен, если посоветует литературу с правильными подходами разработки web-приложений или опишите собственный опыт.
  • Вопрос задан
  • 1957 просмотров
Подписаться 18 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 4
У меня так, проект на локальном сервере (git), далее на vps дев версия(git) и продакшн,
при заливки правок, отправляю всё на битбакет с локального сервера, далее через phing сливаю правки с битбакета в дев версию, тестирую если всё ок, то через ссш посредством rsync синхронизирую дев версию и продакшн. В итоге для синхронизации локальной версии с продакшн всего 2 команды, не учитывая команды гита.
На всех трех версиях, также разное окружение, но настроено всё таким образом что конфиги цепляются в зависимости от того где расположен проект, если локальная версия то одни, на дев и продакшн соответственно другие
Ответ написан
Комментировать
edli007
@edli007
full stack, team lead
Давайте попробую помочь исходя из проблемы. первое это вот это
Изучаю php и хочется все делать правильно сразу. Сейчас знакомлюсь с Yii2.

Yii первй был непомерно хорош, вообще в пхп очень много "одолженных" вещей. Yii первый был скопирован по большей части с Rails . Но Yii2 далеко не так хорош как Yii1, он уже значительно отличается от предшественника.

Сейчас лидирует Laravel, для сравнения статистика юза:
trends.builtwith.com/cms/Yii-Framework
trends.builtwith.com/framework/Laravel
Laravel используют в шесть раз чаще. Он тоже во многом "одолжен", больше всего он мне напоминает Node.js, особенно все эти Request и роуты наталкивают на нодовский фреймворк express, скорее всего оттуда и было взято.

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

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

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

А также что делать PHP умеет хорошо, это в основном прощать ошибки и недоделки, за это его очень любит бизнес и новички.
Ответ написан
@LAV45
Как раз на форуме Yii обсуждали данную тему.
yiiframework.ru/forum/viewtopic.php?f=4&t=29291
Я там приводил пример выгрузки кода на test и prod сервера.
Dmytro Karpovych , думаю тебе будет нитересна это обсуждение.
Ответ написан
Комментировать
ZAYEC77
@ZAYEC77
web-developer
Лично я юзаю git на сервере и через ssh запускаю команды для обновления кода и БД.
Для этого есть make-таск:
deploy:
	ssh user@host -t 'cd /directory/of/project/; git pull; composer install; php yii modules-migrate --interactive=0'

modules-migrate - это аналог обычного migrate, только для всех модулей
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы