Деплой на сервер git

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

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

Будем считать что локальный git-репозитарий уже создан, и там уже был осуществлен коммит.

Теперь перейдем к удаленному

$ mkdir website.git && cd website.git
$ git init --bare
Initialized empty Git repository in /home/user/website.git

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

$ cat > hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/home/u/user git checkout -f
$ chmod +x hooks/post-receive

Особо обращаю внимание на строку $ chmod +x hooks/post-receive , без необходимых прав скрипт не сможет сохранить файлы.

Далее на локальной машине добавим зеркало — удаленный репозиторий для ветки master (хотя зеркалом может быть любая ветка)

$ git remote add web ssh://server.example.org/home/user/website.git
$ git push web +master:refs/heads/master

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

$ git push web

Важно! website.git необходимо закрыть либо с помощью .htaccess, либо вывести из доступных папок, например на уровень вверх.

Yii2. Composer
Когда проект загрузили на сервер, его необходимо обновить. Для обновления необходимо использовать composer. Если его нет, его можно установить отсюда .
composer — это скрипт, запускаемый php, причем версия PHP должна быть не ниже 5.4, на моем хостинге по-умолчанию стоит версия 5.3, но там есть возможность использовать версию вплоть до 7.1 (на сегодняшний момент), но адрес до скрипта довольно длинный. Это не страшно, когда php нужен достаточно редко (как то обновления composer), но он так же необходим при накатке миграций. Поэтому для этого удобства можно создать символическую ссылку. ln -s /opt/php70/bin/php php70 . Теперь запускать скрипт можно через эту ссылку.

Об обновлении пакетов с помощью composer было уже написано тут: Обновление с помощью composer

коротко оттуда

./php70 -d memory_limit=-1 composer.phar global require "fxp/composer-asset-plugin:~1.3.1"

скрипт выше обязательно необходимо выполнить перед обновлением, иначе все может пойти не так. Если все же все пошло не так, можно удалить папку .config и заново попробовать установить composer.
./php70 -d memory_limit=-1 composer.phar update require — обновление зависимостей пакетов
./php70 -d memory_limit=-1 composer.phar update — обновление пакетов

Не забудьте поменять настройки для БД в файле config/db.php

ну и осталось накатить миграции:
./php70 ./yii migrate/up

Вроде как все.

Информация собиралась из различных источников, к таковым относятся:
getcomposer.org
git-scm.com
toroid.org
stackoverflow.com
habrahabr.ru

Leave a comment

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