Тема: Git [Стаття]
Напишу капітанську статтю як користуватися гітом. Можливо комусь пригодиться
Дисклеймер
Не претендую на оригінальність і правильність, просто ділюся досвідом
На нашому r2d2 дебіанчик :3
1) Ставим git
#server
apt-get install git git-core
#client
apt-get install git
Як відомо програміст це суміш логіки і ледарства, тому трошки полегшимо собі життя аутинтифікуючись на сервері через ключі(authorized keys).
2)Впевнимося що у вас є / нема ключів.
#local
ls ~/.ssh #папка по замовчуванню
Якщо в вас ця папка не пуста і містить в собі (зазвичай) id_rsa id_rsa.pub, тоді переходьте до 4 пункту.
3)Якщо нема, треба створити
#local
ssh-keygen
В вас спитають місце розташування і пароль, який потрібно буде ввести, кожен раз, коли ви будете авторизуватися по ключах, можете залишити це поле пустим.
Далі пару слів про ключі.
id_rsa.pub - публічний ключ.
id_rsa - приватний ключ, вкрадуть, буде лихо (:
Тому.
chmod 700 ./.ssh
chmod 600 ./.ssh/id_rsa
4)Далі налаштуєм сервер.
#server
adduser git
su git
cd
mkdir .ssh
Далі нам порібно id_rsa.pub, який ми щойно згенерували, занести в файл authorized_keys.
Переносим його на сервер і
#server
cat id_rsa.pub >> ~/.ssh/authorized_keys
chown -R git ~/.ssh
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
Виходимо з сесії юзера
#server
exit
5)Провіряєм
#local
ssh git@ip
Вас має пуститина сервер, без пароля. Якщо щось пішло не так, дивимся конфіг
nano /etc/ssh/ssh_config
#якщо стоїть no, міняємо на yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Ящо це не вирішило проблему, дивимся /var/log/auth.log
6)Далі заради тої ж безпеки, поміняємо оболонку на git-shell, яка буде дозволяти виконувати операції тільки з гітом.
#server
nano /etc/passwd
#находимо нашого користувача
git:x:1001:1002:,,,:/home/git:/bin/bash
# і заміняємо
git:x:1001:1002:,,,:/home/git:/usr/bin/git-shell
7)Тепер знову протестуємо
ssh git@-ip
bla-bla
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Aug date from local-ip
fatal: What do you think I am? A shell?
Connection to ip closed.
fatal: What do you think I am? A shell?
Тільки тролфейса бракує
Це означає шо в нас все норма, тому налаштуєм git.
git config --global user.name "ololo"
git config --global user.email ololo@gmailcom
Тепер можна гітити.
Базовий лік-без. (для себе використовую такий метод)
Допустимо, в нас є сайт, який ми локально розробляємо і продакшн, на якому цей сайт крутиться.
Наша задача, налаштувати git, для мінімального деплою.
#server
cd /home
mkdir site.git
cd site.git
git init --bare
Тут ми ініціалізували bare (пустий) репозиторій.
Далі перейдем в дерикторію, в якій розміщується сайт.
#server
cd /var/www/site
git init .
git remote add orgin /home/site.git
Тут ми ініціалізували репозиторій і зробили "ссилку" на наш бейр.
Далі шаманим на локалці
#local
cd /var/www/site-dev
git init .
git remote add orgin git@ip:/home/site.git
Тепер весь мед.
Коли ми закінчили процес розробки і хочемо відправити зміни на сервер
#local
git add .
git commit -m"fix"
git push orgin master
Індексуємо, комітимо і відправляємо на сервер.
На сервері
#server
cd /var/www/site
git pull orgin master
І ваші зміни на продакшині.
Надіюся комусь буде корисно.