Header Image

Развертывание с помощью GIT

Загружено/обновлено 31 Августа 2017

Развертывание на GIT

Развертывание при помощи Git будет намного быстрее и безопаснее, чем с помощью SFTP клиента вроде FileZilla. Первый шаг - создать папку на сервере в которой будет лежать production версия приложения.

sudo mkdir -p /var/www/myapp

В данном примере я буду использовать NGINX, и соответственно нужно "известить" nginx об этой папке:

server {
    listen 80;
    listen [::]:80;

    root /var/www/myapp/public;
    index index.php index.html index.htm;

    server_name myapp.com;

    location / {
           try_files $uri $uri/ /index.php?$query_string;
    }

Теперь перезагрузим nginx, чтобы изменения вступили в силу:

nginx -t
sudo service nginx restart

Установим Composer на сервер

cd ~
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Композер понадопится обязательно, так как git в норме исключает папку vendor.

Установка самого Git на сервер

Мы разместим наш репозиторий в паке /var/repo/ на сервере.

cd /var
mkdir repo && cd repo

Теперь, находясь в папке /var/repo выполняем следующую комманду:

mkdir myapp.git && cd myapp.git
git init --bare

Опция --bare означает, что единственная цель репозитория получать пуши от разработчиков. Используется практически только на серверах.

Установка git-хуков

Git позволяет создавать скрипты, которые запускаются, когда происходит некоторое событие. Такие события ловятся хуками. Git поддерживает следующие события: pre-receive, post-receive, update.

Мы будем использовать post-receive. Перейдем в папку /var/repo/myapp.git. Затем сделаем cd hooks. Находясь в папке /var/repo/myapp.git/hooks запустим редактор nano:

sudo nano post-receive

и запишем следующий bash скрипт:

#!/bin/sh
git --work-tree=/var/www/myapp --git-dir=/var/repo/myapp.git checkout -f

После того, как вы сохраните файл post-receive нужно изменим права доступа этому файлу, рарешив исполнение:

sudo chmod +x post-receive

Настройка локаьного компьютера

Теперь перейдите в командную строку вашего локального компьютера, перейдите в папку приложения, инициализируйте git репозиторий. Затем запутите следующую команду:

git remote add production ssh://your_username@myapp.com/var/repo/myapp.git

Теперь вы можете отправлять на сервер все изменения в проекте команой:

git push production master

Последние шаги

Если проект - это проект php то на сервере нужно запускать composer, когда в файл composer.json проекта вносятся изменения. На сервере в папке /var/myapp/ ВИМАНИЕ! ЭТО НЕ ПАПКА РЕПОЗИТОРИЯ - туда не вносятся никакие изменения вручную - а production папка проекта. Именно в ней нужно запускать команду

composer install --no-dev

--no-dev - означает, что установится только то, что стоит в блоке required но не required-dev.

Наконец, установим правильные права:

sudo chown -R :www-data /var/www/myapp

sudo chmod -R 775 /var/www/myapp/storage

sudo chmod -R 775 /var/www/artsublime/bootstrap/cache/