Wednesday, October 16, 2019

Принятие политик iptable после перезагрузки сервера


Важное дополнение. Необходимо после перезагрузки сервера оставлять все свои политики, а не применять их снова. Для меня удобным способом является использование пакета iptables-persistent

Первым делом устанавливаем сам пакет
apt-get install iptables-persistent
Затем сохраняем все настройки в нужную директорию, откуда они будут подтягиваться
iptables-save > /etc/iptables/rules.v4ip6tables-save > /etc/iptables/rules.v6
Вот и все. Теперь после каждой перезагрузки у нас будут подгружаться наши настройки

Настройка iptables в Ubuntu

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

Для начала, нам необходимо понять, что у нас доступно, а что нет. Проверяется командой
sudo iptables -L
Мы удостоверились, что на только что установленой ОС открыто все возможное. Нам нужно все эти конфигурации удалить
sudo iptables -F
Теперь самое интересное - нам нужно открыть все порты на локальном интерфейсе, для того, чтобы внутри сервера все работало без сбоев
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
Также накопал важную строчку в процессе конфигурации. Необходимо разрешать уже открытым соединениям завершать работу (не блокировать)
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Как только предварительные действия совершили, нужно открыть необходимые порты (мы открываем 22, 80, 8080, 443)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Теперь, чтобы все это заработало, необходимо поменять политику по умолчанию на DROP
sudo iptables -P INPUT DROP

Saturday, October 12, 2019

Docker. Шпаргался по командам


  • FROM — задаёт базовый (родительский) образ.
  • LABEL — описывает метаданные. Например — сведения о том, кто создал и поддерживает образ.
  • ENV — устанавливает постоянные переменные среды.
  • RUN — выполняет команду и создаёт слой образа. Используется для установки в контейнер пакетов.
  • COPY — копирует в контейнер файлы и папки.
  • ADD — копирует файлы и папки в контейнер, может распаковывать локальные .tar-файлы.
  • CMD — описывает команду с аргументами, которую нужно выполнить когда контейнер будет запущен. Аргументы могут быть переопределены при запуске контейнера. В файле может присутствовать лишь одна инструкция CMD.
  • WORKDIR — задаёт рабочую директорию для следующей инструкции.
  • ARG — задаёт переменные для передачи Docker во время сборки образа.
  • ENTRYPOINT — предоставляет команду с аргументами для вызова во время выполнения контейнера. Аргументы не переопределяются.
  • EXPOSE — указывает на необходимость открыть порт.
  • VOLUME — создаёт точку монтирования для работы с постоянным хранилищем.

Wednesday, October 9, 2019

Создание ветки, если много удаленных репозиториев в git

Всем привет! 

Давайте представим, что по определенным причинам нам необходимо держать несколько удаленных репозиторием.  А именно помимо классического origin, у нас еще есть portal и downgrade репозитории

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

git checkout -b mybranch downgrade/mybranch

Tuesday, October 1, 2019

Как переименовать ветку в git

Сегодняшняя заметка о том, каким образом можно переименовать текущую ветку и продолжить работать в переименованной ветке. Выполняется это простыми командами. Для начала нужно
git branch -m new-name
Таким образом мы переименовываем текущий бранч или можно сделать иначе
git checkout master
git branch -m old-name new-name
После этого нужно удаленно тоже все подчистить
git push origin :old-name new-name
git push origin -u new-name  

Sunday, September 29, 2019

Сливаем ветки и удаляем историю в одной из веток в git

Всем привет!

Сегодня быстрая заметка для удаления всех комментариев из той ветки, которую в дальнейшем планируем удалять. Это реализуется с помощью команды --squash. Представим, что мы хотим заливаем все изменения в ветку develop из ветки feature/simple-test. И удалим в дальнейшем ветку feature/simple-test. Выглядеть такая работа будет таким образом
git checkout develop 
git merge --squash feature/simple-test
git commit -m "merge feature"

Saturday, September 21, 2019

Удаление пакетов с помощью npm

Доброго дня!

Вот небольшой набор команд, каким образом можно из package.json удалять пакеты
npm uninstall
npm uninstall --save
npm uninstall --save-dev
npm -g uninstall --save

Удаление веток в git

Без лишних слов, давайте приступим к удалению веток. Пусть у нас будет ветка feature/simple-fix, над которой и будем экспериментировать

Для начала, удалим ветку у себя локально
git branch -d feature/simple-fix
Для удаления ветки, которая находится удаленно, нам необходимо выполнить команду
git push origin --delete feature/simple-fix
Вот так быстро и легко можно подчистить ветки. Всем успехов! 
 

Очистить все коммиты в git

Всем привет!

Сегодня мы разберем проблему, когда необходимо стереть всю историю комментариев, но при этом оставить все изменения в текущей ветке. Итак, поехали.

Во-первых, нам необходимо создать сиротскую ветку от текущей ветки (которую мы потом будем удалять). Пусть наша текущая ветка будет называться develop. Создадим сироту
git checkout --orphan develop_temp
В данной ветке нет ни одного комментария, но есть все файлы, которые были в ветке develop. Теперь нам нужно добавить все файлы в нашу новую ветку develop_temp
git add -A
git commit -am "first commit"
Идем дальше. Удаляем нашу ветку-родитель (у нас же есть сирота, а у сироты не бывает родителей ;) )
git branch -D develop
После этого переименовываем ветку-сироту по имени ветки-родителя
git branch -m develop
И наконец зальем все в нашу репу
git push -f origin develop
P.S. в данном подходе есть одна проблема, при мерджинге (или ребейзе). Проблема эта выглядит как сообщение об ошибке
fatal: refusing to merge unrelated histories
Происходит это потому, что два несвязанных проекта пытаются смерджиться. Решается эта проблема при первом мердже командой allow-unrelated-histories. Как вариант это работает вот так
1. git pull origin master --allow-unrelated-histories 
2. git merge develop --allow-unrelated-histories
Да вот собственно и все. Всем успехов! 

Friday, September 20, 2019

Слияние веток в git

Пусть у нас есть 2 ветки и мы не хотим пробегаться по всем изменениям и подтверждать, есть потребность залить слиться сразу, доверяя ветке, где находятся наши изменения

  • master (куда мы хотим залить наши изменения)
  • develop (где находятся наши изменения после коммитов)
Вначале разберемся с командой merge. Тут все просто. Заходим в master-ветку
git checkout master
После этого сливаемся, при этом говорим, что принимаем изменения ветки develop - указываем параметр theirs, если же хотим принять изменения ветки master, то указываем параметр ours
git merge -X theirs develop
Что касаемо rebase, то тут все аналогично. Т.е. мы находимся в той ветке, которую будем заливать
git checkout develop
После этого мы выполняем команду rebase и принимаем все изменения автоматически, а после нее заливаем изменения в master
git rebase -X theirs master 
git checkout master
git merge develop
Дальше, продолжайте работать. Всем успехов!