mirror of
https://github.com/ilyamak04/DevOps.git
synced 2025-04-05 23:34:50 +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)
|
[Cheat sheet](https://gist.github.com/Kartones/dd3ff5ec5ea238d4c546)
|
||||||
|
|
||||||
|
Общие команды
|
||||||
|
|
||||||
- `sudo -u postgres psql postgres`
|
- `sudo -u postgres psql postgres`
|
||||||
- `CREATE DATABASE имя_базы_данных;`
|
- `CREATE DATABASE имя_базы_данных;`
|
||||||
|
- `DROP DATABASE mydatabase;`
|
||||||
|
- `psql -U postgres`
|
||||||
|
|
||||||
|
|
||||||
- `\l` - просмотр списка бд
|
- `\l` - просмотр списка бд
|
||||||
- `\q` - выход
|
- `\q` - выход
|
||||||
|
|
||||||
---
|
---
|
||||||
|
Работа внутри конкретной бд
|
||||||
- `\c имя_базы_данных [имя_пользователя]` - подключение к бд или из bash `psql -U username -d database_name`
|
- `\c имя_базы_данных [имя_пользователя]` - подключение к бд или из bash `psql -U username -d database_name`
|
||||||
|
|
||||||
- `\dt` - просмотр списка таблиц
|
- `\dt` - просмотр списка таблиц
|
||||||
@ -16,7 +23,6 @@
|
|||||||
|
|
||||||
- `CREATE TABLE имя_таблицы (id SERIAL PRIMARY KEY, колонка1 тип, колонка2 тип, ...);` - создание таблицы
|
- `CREATE TABLE имя_таблицы (id SERIAL PRIMARY KEY, колонка1 тип, колонка2 тип, ...);` - создание таблицы
|
||||||
|
|
||||||
- `DROP TABLE имя_таблицы;`
|
|
||||||
- `CREATE USER имя_пользователя WITH PASSWORD 'пароль';`
|
- `CREATE USER имя_пользователя WITH PASSWORD 'пароль';`
|
||||||
- `CREATE ROLE имя_роли;`
|
- `CREATE ROLE имя_роли;`
|
||||||
- `GRANT ALL PRIVILEGES ON DATABASE имя_базы TO имя_пользователя;`
|
- `GRANT ALL PRIVILEGES ON DATABASE имя_базы TO имя_пользователя;`
|
||||||
@ -27,5 +33,45 @@
|
|||||||
|
|
||||||
- `SELECT * FROM pg_stat_activity;` - просмотр текущий подключений
|
- `SELECT * FROM pg_stat_activity;` - просмотр текущий подключений
|
||||||
- `SELECT * FROM pg_locks;` - просмотр блокировок
|
- `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 из финального образа.
|
`Аргументы сборки (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 --list` - список серверов
|
||||||
- `speedtest-cli --server SERVER_ID`
|
- `speedtest-cli --server SERVER_ID`
|
||||||
- `fuser 9095/tcp` - проверить доступность порта
|
- `fuser 9095/tcp` - проверить доступность порта
|
||||||
|
- `ethtool enp0s3` - диагностика сетевого интерфейса на физическом уровне (`ethtool enp0s3` - статистика)
|
||||||
|
- `arp -a` - arp таблица (ip -> mac)
|
||||||
|
- `ip route` - таблица маршрутизации (можно проверить есть ли шлюз)
|
||||||
|
|
||||||
### База
|
### База
|
||||||
- `cp -p` - сохранить атрибуты файлов (время создания, права, владельца)
|
- `cp -p` - сохранить атрибуты файлов (время создания, права, владельца)
|
||||||
@ -133,6 +135,7 @@ APT работает поверх более низкоуровневого ин
|
|||||||
```bash
|
```bash
|
||||||
tar -xvfz backup.tar.gz /var/www
|
tar -xvfz backup.tar.gz /var/www
|
||||||
```
|
```
|
||||||
|
- `sudo tar -zxvf apache-activemq-6.1.3-bin.tar.gz -C /opt` - распаковать в каталог
|
||||||
`dmesg -T` - логи ядра системы
|
`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