Всем привет.

Сегодня я вам расскажу как сделать простой деплой сайта с помощью shipit и git. Вам подойдет этот вариант если вам всего лишь необходимо перенести ваш код на prod или dev без лишних заморочек. В этом варианте не создаются ревизии с предыдущими версиями. В случае чего, через гит откатываемся от изменений и деплоим сайт снова. Этот вариант может не подойти вам, если вы делаете деплой большого куска кода или деплоите работу нескольких человек, которые долго трудились и в итоге, что-то пойдет не так, вернутся на рабочий вариант используя гит будет сложнее.

Подытожим, мы будем деплоить сайт на yii2 advanсed при помощи git и shipitjs, используемая OC на локале ubuntu, на сервере аналогично ubuntu/debian.

Будем считать, что у вас git и shipitjs уже установлены и настроены, если нет тогда вам сюда: Deploy приложения с помощью Shipitjs.

Подготавливаем серверную часть

Подключаемся по ssh к серверу, создаем папку:

$ mkdir /var/www/site

Клонируем репозиторий в созданную папку:

$ git clone git@github.com:userName/example.git /var/www/site

Подготовка сервера окончена)

Локальные настройки

Создаем в корне проекта shipitfile.js файл:

module.exports = function (shipit) {
    shipit.initConfig({
        default: {
            deployTo: '/var/www/site',
            key: '~/.ssh/id_rsa',
            branch : 'master',
        },
        dev: {
            servers: 'user@dev_server.com'
        }
        prod: {
            servers: 'user@prod_server.com'
        }
    });
shipit.task('deploy', function () {
    return shipit.remote('cd '+shipit.config.deployTo+' && git checkout '+shipit.config.branch+' && git pull')
                      .then(function (res) {
                shipit.remote('cd '+shipit.config.deployTo+' && php yii migrate/up --interactive=0');
        });
    });    
};

Наш скрипт деплоя сайта запускается двумя командами (на локальной машине):

$ cd /home/user/project
$ shipit dev deploy

Переходим в директорию с проектом, выполняем деплой нашего проекта.

В результате будет выполнены следующих шаги на удаленной машине (dev_server.com):

  • Переход в директорию в которую необходимо развернуть сайт
  • Переключение git на ветку master
  • Загрузка изменений ветки master в папку
  • Выполнение миграции базы данных для yii2

Первые три шага описаны в одной команде в файле shipitfile.js (вместо переменных подставлены реальные значения):

cd /var/www/site && git checkout master && git pull

Последний шаг - миграция базы данных для yii2:

cd /var/www/site && php yii migrate/up --interactive=0

P. S. После первого деплоя сайта на хостинге необходимо запустить скрипт инициализации yii2, а после настроить конфиги.

$ cd /var/www/site
$ php init

Более развернутое описание деплоя при помощи shipit