mirror of
https://github.com/ilyamak04/DevOps.git
synced 2025-04-05 07:34:49 +02:00
mega commit
This commit is contained in:
parent
dd0920ff2b
commit
37d88ee1a8
@ -1,11 +1,18 @@
|
||||
[Cheat sheet](https://gist.github.com/Kartones/dd3ff5ec5ea238d4c546)
|
||||
|
||||
Общие команды
|
||||
|
||||
- `sudo -u postgres psql postgres`
|
||||
- `CREATE DATABASE имя_базы_данных;`
|
||||
- `DROP DATABASE mydatabase;`
|
||||
- `psql -U postgres`
|
||||
|
||||
|
||||
- `\l` - просмотр списка бд
|
||||
- `\q` - выход
|
||||
|
||||
---
|
||||
Работа внутри конкретной бд
|
||||
- `\c имя_базы_данных [имя_пользователя]` - подключение к бд или из bash `psql -U username -d database_name`
|
||||
|
||||
- `\dt` - просмотр списка таблиц
|
||||
@ -16,7 +23,6 @@
|
||||
|
||||
- `CREATE TABLE имя_таблицы (id SERIAL PRIMARY KEY, колонка1 тип, колонка2 тип, ...);` - создание таблицы
|
||||
|
||||
- `DROP TABLE имя_таблицы;`
|
||||
- `CREATE USER имя_пользователя WITH PASSWORD 'пароль';`
|
||||
- `CREATE ROLE имя_роли;`
|
||||
- `GRANT ALL PRIVILEGES ON DATABASE имя_базы TO имя_пользователя;`
|
||||
@ -27,5 +33,45 @@
|
||||
|
||||
- `SELECT * FROM pg_stat_activity;` - просмотр текущий подключений
|
||||
- `SELECT * FROM pg_locks;` - просмотр блокировок
|
||||
---
|
||||
- `psql -U postgres -d my_database -f ./script.sql` - запуск скрипта
|
||||
|
||||
- `/usr/pgsql-12/bin/pg_dump -U u_ensi -t address_several_juridical_entity -h 127.0.0.1 db_ensi | gzip > <dir>/address_several_juridical_entity.sql.gz` - снятие дампов
|
||||
|
||||
- `/zcat /tmp/SvJul_4_07.sql.gz | /usr/pgsql-12/bin/psql -h 127.0.0.1 -U u_ensi -d db_ensi -t SvJul_4_07 >> ensi.log` - восстановление таблицы
|
||||
---
|
||||
`ALTER TABLE` — это команда в SQL, которая используется для изменения структуры уже существующей таблицы в базе данных.
|
||||
```bash
|
||||
ALTER TABLE имя_таблицы
|
||||
ADD имя_столбца тип_данных;
|
||||
```
|
||||
```bash
|
||||
ALTER TABLE имя_таблицы
|
||||
DROP COLUMN имя_столбца;
|
||||
```
|
||||
```bash
|
||||
ALTER TABLE имя_таблицы
|
||||
ALTER COLUMN имя_столбца SET DATA TYPE новый_тип;
|
||||
```
|
||||
```bash
|
||||
ALTER TABLE имя_таблицы
|
||||
ADD CONSTRAINT имя_ограничения тип_ограничения (столбец);
|
||||
```
|
||||
|
||||
```bash
|
||||
ALTER TABLE employees
|
||||
ADD CONSTRAINT age_check CHECK (age >= 18);
|
||||
```
|
||||
|
||||
|
||||
SELECT pid, usename, datname, client_addr, client_port, application_name, state
|
||||
FROM pg_stat_activity;
|
||||
|
||||
|
||||
SELECT usename, client_addr, client_port, state
|
||||
FROM pg_stat_activity;
|
||||
|
||||
|
||||
psql -U postgres -t -c "SELECT datname FROM pg_database WHERE datistemplate = false;"
|
||||
|
||||
psql -U postgres -d postgres -c "SELECT datname FROM pg_database WHERE datistemplate = false;" -t -A
|
||||
|
5
docker/DOCKER.MD
Normal file
5
docker/DOCKER.MD
Normal file
@ -0,0 +1,5 @@
|
||||
- Параметры для `restart`
|
||||
- `no` (или не указывать restart вовсе) — контейнер не будет перезапускаться автоматически. Это значение по умолчанию.
|
||||
- `always` — контейнер будет автоматически перезапущен при любом завершении работы (даже при ручной остановке через docker stop). Он также перезапустится после перезагрузки Docker или хоста
|
||||
- `on-failure` — контейнер будет перезапущен только в случае выхода с ненулевым статусом (ошибкой). Вы можете также указать максимальное количество перезапусков, например,`on-failure:3`.
|
||||
- `unless-stopped` — контейнер будет автоматически перезапущен при сбоях и после перезагрузки Docker или системы, но не перезапустится, если его остановили вручную.
|
@ -1 +1,74 @@
|
||||
`Аргументы сборки (ARG)` не сохраняются в конечном образе. ARG используется для передачи значений на этапе сборки. Эти значения доступны только во время сборки образа и не сохраняются в конечном образе. Также ARG не сохраняется в слоях образа, т.е. с помощью `docker history` значение переменной не посмотреть. Нельзя получить доступ к значению ARG из финального образа.
|
||||
|
||||
---
|
||||
Про ВОЛЮМЫ
|
||||
|
||||
Например, есть такой волюм
|
||||
|
||||
`./infrastructure/db/create_db.sql:/docker-entrypoint-initdb.d/create_db.sql`
|
||||
|
||||
если `./infrastructure/db/create_db.sql` не будет на хосте, Docker создаст директории с указанными именами вместо файлов
|
||||
|
||||
---
|
||||
|
||||
Как докер ищет образы?
|
||||
|
||||
- Докер сначала проверяет есть ли образ с указанным именем и тегом локально на хосте (в кэше Docker)
|
||||
- Если образ не найден локально, докер ищет его в registry по умолчанию, то есть в Dockerhub, Docker пытается спуллить образ с докер хаб, если тэг не указан, Docker использует тег `latest` по умолчанию
|
||||
- Дальше Docker идет в настроенный Docker registry и ищет образ там, например
|
||||
|
||||
`image: registry.example.com/myimage:tag`
|
||||
|
||||
- Если образ не найден и в docker-compose.yml указана секция build, Docker создаст образ локально из Dockerfile, который находится в указанной директории. Пример в docker-compose.yml:
|
||||
```yaml
|
||||
services:
|
||||
myapp:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
```
|
||||
|
||||
Последовательность
|
||||
|
||||
1. Ищет локально на хосте.
|
||||
2. Ищет на Docker Hub.
|
||||
3. Ищет в частных реестрах (если указан).
|
||||
4. Сборка из Dockerfile (если указана опция build в docker-compose.yml).
|
||||
|
||||
---
|
||||
Когда мы пишем
|
||||
```yaml
|
||||
depends_on:
|
||||
postgresql-db:
|
||||
condition: service_healthy
|
||||
```
|
||||
|
||||
это значит что все хелфчеки к сервису (контейнеру) postgresql-db должны выполниться успешно, только после этого контейнер начнёт подниматься
|
||||
|
||||
---
|
||||
Оператор `&&` в командах оболочки используется для цепочки команд, где следующая команда выполняется только если предыдущая выполнилась успешно (с кодом возврата 0).
|
||||
|
||||
---
|
||||
CMD [] не использует оболочку для выполнения команды, команда передаётся напрямую процессу, то есть пайпы и всяки приблуды оболочки не работают
|
||||
Docker не запускает оболочку, а передает команду напрямую в процесс.
|
||||
|
||||
---
|
||||
В чём разница сежду ENTRYPOINT и CMD
|
||||
|
||||
CMD можно переопределить при запуске контейнера
|
||||
```
|
||||
docker run <image> echo Hello
|
||||
```
|
||||
|
||||
ENTRYPOINT задает команду, которая всегда будет выполняться при запуске контейнера. Он используется для установки основной команды, которая должна быть выполнена, и она не может быть легко перезаписана при запуске контейнера. Однако, вы можете передавать дополнительные параметры командой docker run, и эти параметры будут добавлены к командной строке, указанной в ENTRYPOINT. В отличие от CMD, ENTRYPOINT гарантирует, что указанная команда будет выполнена, даже если при запуске контейнера вы не укажете команду.
|
||||
|
||||
в ENTRYPOINT можно передавать переменные окружения
|
||||
```
|
||||
ENV MY_VAR=Hello
|
||||
ENTRYPOINT ["sh", "-c", "echo $MY_VAR"]
|
||||
```
|
||||
|
||||
```
|
||||
ENTRYPOINT ["nginx", "-g"]
|
||||
CMD ["daemon off;"]
|
||||
```
|
@ -64,7 +64,9 @@ APT работает поверх более низкоуровневого ин
|
||||
- `speedtest-cli --list` - список серверов
|
||||
- `speedtest-cli --server SERVER_ID`
|
||||
- `fuser 9095/tcp` - проверить доступность порта
|
||||
|
||||
- `ethtool enp0s3` - диагностика сетевого интерфейса на физическом уровне (`ethtool enp0s3` - статистика)
|
||||
- `arp -a` - arp таблица (ip -> mac)
|
||||
- `ip route` - таблица маршрутизации (можно проверить есть ли шлюз)
|
||||
|
||||
### База
|
||||
- `cp -p` - сохранить атрибуты файлов (время создания, права, владельца)
|
||||
@ -133,6 +135,7 @@ APT работает поверх более низкоуровневого ин
|
||||
```bash
|
||||
tar -xvfz backup.tar.gz /var/www
|
||||
```
|
||||
- `sudo tar -zxvf apache-activemq-6.1.3-bin.tar.gz -C /opt` - распаковать в каталог
|
||||
`dmesg -T` - логи ядра системы
|
||||
|
||||
### Система
|
||||
|
34
linux/LOGGING.MD
Normal file
34
linux/LOGGING.MD
Normal file
@ -0,0 +1,34 @@
|
||||
- `tail -f /var/log/*` - логи (`-f` - обновление в реальном времени)
|
||||
- `journalctl` - утилита для просмотра логов служб, управляемых `systemd`
|
||||
- `-u <service_name>` - просмотр логов конкретной службы
|
||||
```bash
|
||||
journalctl -u nginx
|
||||
```
|
||||
- `journalctl -u nginx -f` - просмотр логов в реальном времени
|
||||
- `journalctl -n 100` - последние 100 строк
|
||||
- `journalctl --since "2024-10-03 12:00:00" --until "2024-10-03 14:00:00"` - логи за конкретный период
|
||||
- `journalctl -p err` - можно показывать только ошибки
|
||||
- emerg (0): Аварийные сообщения.
|
||||
- alert (1): Требуют немедленных действий.
|
||||
- crit (2): Критические ошибки.
|
||||
- err (3): Ошибки.
|
||||
- warning (4): Предупреждения.
|
||||
- notice (5): Важные события.
|
||||
- info (6): Информационные сообщения.
|
||||
- debug (7): Отладочные сообщения.
|
||||
- `journalctl -xe`
|
||||
- x (или --catalog) — выводит дополнительные объяснения (аннотации) к некоторым сообщениям журнала. Это помогает понять детали ошибок или предупреждений, предлагая описания и возможные решения, если такие есть.
|
||||
- e (или --pager-end) — открывает журнал в режиме постраничного просмотра и сразу прокручивает его до конца, показывая самые последние записи.
|
||||
- `journalctl -u SDWL_Downloader_8090.service -xe`
|
||||
|
||||
- `sudo journalctl --disk-usage`
|
||||
- `sudo journalctl --vacuum-size=1G` - максимально допустимый размер для хранимых на диске логов
|
||||
- `sudo journalctl --vacuum-time=1years` - максимально допустимый время для хранимых на диске логов
|
||||
|
||||
---
|
||||
|
||||
- `tail -f` следит за файлом и выводит новые строки по мере их добавления в файл. Однако, если файл будет удалён и создан заново (например, при ротации логов), `tail -f` перестанет отслеживать файл, потому что он будет считать, что файл исчез.
|
||||
|
||||
- `tail -F` делает то же самое, но в случае удаления файла и его создания заново, `tail -F` продолжит отслеживать файл. Это полезно для логов, так как они могут быть перезаписаны, но вы хотите продолжать их отслеживать, несмотря на изменения имени файла или его создание заново.
|
||||
|
||||
Используйте опцию -F, если производится слежение за автоматически архивируемыми файлами журналов, например, с помощью logrotate. В этом случае слежение за файлом будет происходить даже в случае его переименования, пересоздания или удаления.
|
2
linux/WORK.MD
Normal file
2
linux/WORK.MD
Normal file
@ -0,0 +1,2 @@
|
||||
- `firewall-cmd --zone=public --add-masquerade --permanent`
|
||||
- `firewall-cmd --reload`
|
127
vebserver/NGINX.MD
Normal file
127
vebserver/NGINX.MD
Normal file
@ -0,0 +1,127 @@
|
||||
- файл `/etc/nginx/nginx.conf`:
|
||||
```
|
||||
http {
|
||||
# Включение основной конфигурации из conf.d
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
|
||||
# Включение дополнительных конфигураций из extra-conf.d
|
||||
include /etc/nginx/extra-conf.d/*.conf;
|
||||
}
|
||||
```
|
||||
- Блок **http**
|
||||
|
||||
Блок `http` используется для настроек на уровне всего HTTP-сервера и обычно располагается в основном файле конфигурации `/etc/nginx/nginx.`conf. Он содержит общие настройки, которые могут применяться ко всем server блокам (виртуальным хостам) внутри него.
|
||||
|
||||
Примеры того, что может быть настроено в http блоке:
|
||||
|
||||
- Глобальные параметры для всех сайтов:
|
||||
|
||||
- Настройки кеширования, сжатия, таймаутов, буферов.
|
||||
- Настройки логирования (например, access_log, error_log).
|
||||
- Параметры загрузки статических файлов.
|
||||
- Общие правила для обработки MIME-типов и дефолтных заголовков.
|
||||
|
||||
- Определение подключаемых конфигураций:
|
||||
|
||||
- Через директивы include, например, для файлов в conf.d/ и extra-conf.d/.
|
||||
|
||||
- Настройки для upstream
|
||||
|
||||
- Создание блоков upstream для балансировки нагрузки между несколькими бэкэндами (например, для проксирования запросов к пулу приложений).
|
||||
|
||||
```
|
||||
http {
|
||||
# Логирование запросов
|
||||
access_log /var/log/nginx/access.log;
|
||||
error_log /var/log/nginx/error.log;
|
||||
|
||||
# Сжатие
|
||||
gzip on;
|
||||
gzip_types text/plain text/css application/json application/javascript;
|
||||
|
||||
# Пулы серверов для балансировки нагрузки
|
||||
upstream backend {
|
||||
server backend1.example.com;
|
||||
server backend2.example.com;
|
||||
}
|
||||
|
||||
# Подключение всех файлов в conf.d/
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
}
|
||||
```
|
||||
|
||||
- Блок **server**
|
||||
|
||||
Блок server используется для настройки конкретного хоста (сайта) или группы настроек для определенного домена или IP-адреса. В одном http блоке может быть несколько server блоков, каждый из которых настраивает определенный виртуальный хост, обслуживающий свои уникальные домены, поддомены, или порты.
|
||||
|
||||
Домен и порт:
|
||||
Директивы server_name и listen, чтобы указать, на каких доменах и портах сервер принимает запросы.
|
||||
|
||||
Обработка запросов:
|
||||
Можно настроить обработку корневых запросов (/), редиректы и маршрутизацию.
|
||||
|
||||
Проксирование запросов на бэкенд:
|
||||
Настройка обратного прокси-сервера через директиву proxy_pass.
|
||||
|
||||
Доступ к статическим файлам:
|
||||
Использование директивы root или alias для указания расположения статических файлов.
|
||||
```
|
||||
server {
|
||||
listen 80;
|
||||
server_name example.com;
|
||||
|
||||
root /var/www/example.com;
|
||||
|
||||
# Настройка проксирования для API-запросов
|
||||
location /api/ {
|
||||
proxy_pass http://backend;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
|
||||
# Страница ошибки 404
|
||||
error_page 404 /404.html;
|
||||
location = /404.html {
|
||||
internal;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Блок http: Настройки, определенные здесь, применяются ко всем server блокам, если они не переопределены внутри конкретного server блока. Например, включение сжатия в http блоке (gzip on;) будет автоматически применяться ко всем виртуальным хостам.
|
||||
|
||||
Блок server: Определяет параметры для конкретных сайтов или доменов.
|
||||
|
||||
---
|
||||
|
||||
- `/etc/nginx/sites-available:` В этой директории хранятся файлы конфигураций для всех доступных сайтов или приложений. Каждый файл здесь обычно соответствует одному сайту или домену, и содержит настройки для конкретного виртуального хоста.
|
||||
|
||||
- `/etc/nginx/sites-enabled`: Эта директория содержит символические ссылки на файлы из sites-available. Файлы в sites-enabled представляют собой активированные сайты. Nginx загружает только те сайты, для которых конфигурационные файлы находятся в sites-enabled.
|
||||
|
||||
для активации сайта:
|
||||
|
||||
`sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/`
|
||||
|
||||
для деактивации:
|
||||
|
||||
`sudo rm /etc/nginx/sites-enabled/example.conf`
|
||||
|
||||
`sudo systemctl reload nginx` - необходимо перезагрузить nginx
|
||||
|
||||
```
|
||||
/etc/nginx/
|
||||
├── nginx.conf
|
||||
├── sites-available/
|
||||
│ ├── example.com
|
||||
│ └── example.org
|
||||
└── sites-enabled/
|
||||
├── example.com -> /etc/nginx/sites-available/example.com
|
||||
```
|
||||
|
||||
потом `sites-enabled` подключается к `/etc/nginx/nginx.conf`
|
||||
```
|
||||
http {
|
||||
# Общие настройки HTTP
|
||||
include /etc/nginx/sites-enabled/*;
|
||||
}
|
||||
```
|
Loading…
x
Reference in New Issue
Block a user