Базовые знания Linux админа
Примечание
В данной серии не будет теории и прочего
Это абсолютный базис-гайд по установке ОС и базовым навыкам в терминале
В конце будет рассмотрено несколько современных технологий в простых реализациях
После прохождения гайда у вас будет машина и несколько популярных сервисов
Все. Дальше - сами, книги, видео, стажировка
Этот гайд - выжимка на многолетние накопления вопросов на канале и сайте
Гайд будет доступен на моем сайте:
Видео будут доступны на моем канале YouTube:
https://www.youtube.com/channel/UCR6j95DKI80MFXIw2iJ3f1w
План:
6 часть — git
Немного теории и зачем нам нужен Git?
Git - распределенная система управления версиями (контроля версий)
Подходит как разработчикам, так и системным администраторам
В Git можно хранить конфигурационные файлы серверов, код приложений и многие другие файлы, которые подвергаются изменению и необходимо сохранять версионность, откатывать изменения и т.п.
В данном пособии мы затронем только базовый функционал локально на одном сервере
Существуют общедоступные репозитории GitHUB, GitLAB и прочие, которые доступны в сети интернет
Наша задача, продемонстрировать базовый функционал данного ПО
Установка git в ubuntu:
sudo apt-get install git-core
Создание нового пользователя (имя выберете любое):
sudo useradd -m git && sudo passwd git
Перейдем под созданного пользователя git:
su git
Создание ssh ключей под пользователем git:
ssh-keygen -t rsa
Ключи ssh нам нужны для удаленного доступа на сервер с других машин
Например, если есть в сети еще одна машина, с которой нужен доступ к Git репозиторию на данном сервере, вам необходимо скопировать ключ ssh ключ с сервера другому пользователю на второй машине
Пример
Копируем pub (публичный) ключ пользователю (в примере тоже git) на другом сервере, чтоб он имел доступ:
cat /home/git/.ssh/id_rsa.pub | ssh git@remote-server "mkdir -p /home/git/.ssh && cat >> /home/git/.ssh/authorized_keys"
Зададим пользователю git основные данные для Git:
git config --global user.name "git"
git config --global user.email "git@local"
Эти данные будут использоваться в системе Git при каждом commit пользователя
Вернемся на сервер, создадим новый репозиторий Git
mkdir -p /home/git/repo1/proj1 && cd /home/git/repo1/proj1
pwd
/home/git/repo1/proj1
git init
Создадим пару тестовых файлов в репозитории:
touch .gitignore
git add .gitignore
echo "testmessage1" > testfile1.txt
echo "testmessage1" > testfile2.txt
git add .
git commit -m "My First Commit, Iam add new files!"
Где:
Добавление файлов отслеживание (git add .) репозиторием (. - все файлы в каталоге)
Подтверждение последних изменений в репозитории (git commit)
Проверим статус репозитория:
git status
On branch master
nothing to commit, working tree clean
Т.к. у меня нет второй машины в сети, я сымитирую ситуацию
IP-адрес нашего сервера - 192.168.0.180 , именно к нему бы я подключался из другой машины в сети
ssh ключи пользователя git добавим на наш сервер для имитации удаленного доступа по сети
Копируем pub (публичный) ключ пользователю git "типа" на другом сервере, чтоб он имел доступ по ssh на ip адрес сервера до git репозитория:
cat /home/git/.ssh/id_rsa.pub | ssh git@192.168.0.180 "cat >> /home/git/.ssh/authorized_keys"
Подключаемся к созданному репозиторию proj1 имитируя доступ по ssh на ip адрес сервера:
mkdir /home/git/repo2 && cd /home/git/repo2
git clone ssh://git@192.168.0.180:/home/git/repo1/proj1
$ cat proj1/testfile1.txt ; cat proj1/testfile2.txt
testmessage1
testmessage1
Как видим, файлы репозитория proj1 склонированы успешно
Внесем изменения, отправим их в репозиторий имитируя работу через сеть
cd proj1 ; echo "testmessage2" >> testfile2.txt
Как видим, у нас есть изменения в репозитории:
Добавим измененный файл к отслеживанию
Подтвердим изменения в репозитории
Проверяем статус:
Изменения еще не поступили в "удаленный" репозиторий:
cat /home/git/repo1/proj1/testfile2.txt
testmessage1
Отправим изменения в репозиторий
Изменения появились на удаленном репозитории:
cat /home/git/repo1/proj1/testfile2.txt
testmessage1
testmessage2
Откатиться к предыдущему коммиту
git log
commit 8b28ad2c2413411eb1a8b2c0cfc63f728544d130 (HEAD -> master, origin/master, origin/HEAD)
Author: git <git@local>
Date: Thu Nov 5 08:35:49 2020 +0000
change
commit 357bbc105e590996c32e54ffbe4c6a58e904d9be
Author: git <git@local>
Date: Thu Nov 5 08:29:05 2020 +0000
My First Commit, Iam add new files!
Итак, с помощью логов мы узнали номера коммитов (более удобный формат):
git log --oneline
8b28ad2 (HEAD -> master, origin/master, origin/HEAD) change
357bbc1 My First Commit, Iam add new files!
Откатите изменения к старому коммиту:
git checkout 357bbc1 .
Добавьте изменения и сделайте коммит:
git add -A
git commit -m "Revert commit: 357bbc1"
Сделав откат локально, откатите изменения в "удаленном" репозитории:
git push
Все успешно откатилось:
Для домашнего задания изучите самостоятельно Git, узнайте, что такое ветки, коммиты, как смотреть логи
Для данного пособия 90% задач на админском уровне - достаточно
Обычно конфиги приложений и сервисов хранятся на сервере git, и скриптами или в ручную разворачиваются однотипно на серверах
Можете воспользоваться моими заметками с сайта, ранее я уже делал статьи и видео по Git:
http://snakeproject.ru/rubric/article.php?art=git_basis_26.06.2019
http://snakeproject.ru/rubric/article.php?art=git_10082020
https://www.youtube.com/watch?v=sPjRY1VSJw4