Как правильно разрабатывать web проект на примере yii2?
У меня так, проект на локальном сервере (git), далее на vps дев версия(git) и продакшн,
при заливки правок, отправляю всё на битбакет с локального сервера, далее через phing сливаю правки с битбакета в дев версию, тестирую если всё ок, то через ссш посредством rsync синхронизирую дев версию и продакшн. В итоге для синхронизации локальной версии с продакшн всего 2 команды, не учитывая команды гита.
На всех трех версиях, также разное окружение, но настроено всё таким образом что конфиги цепляются в зависимости от того где расположен проект, если локальная версия то одни, на дев и продакшн соответственно другие
Лично я юзаю 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, только для всех модулей