Развертывание на 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/