mirror of
https://github.com/ilyamak04/DevOps.git
synced 2025-04-04 07:04:51 +02:00
crappy commit
This commit is contained in:
parent
1cdc439e4e
commit
7eb6cdf61e
31
db/POSTGRES.MD
Normal file
31
db/POSTGRES.MD
Normal file
@ -0,0 +1,31 @@
|
||||
[Cheat sheet](https://gist.github.com/Kartones/dd3ff5ec5ea238d4c546)
|
||||
|
||||
- `sudo -u postgres psql postgres`
|
||||
- `CREATE DATABASE имя_базы_данных;`
|
||||
- `\l` - просмотр списка бд
|
||||
- `\q` - выход
|
||||
|
||||
---
|
||||
- `\c имя_базы_данных [имя_пользователя]` - подключение к бд или из bash `psql -U username -d database_name`
|
||||
|
||||
- `\dt` - просмотр списка таблиц
|
||||
- `\d [имя таблицы]` - показывает столбцы, типы данных и индексы
|
||||
- `\dn` - список схем
|
||||
- `\dt schema_name.*` - список таблиц в схеме
|
||||
---
|
||||
|
||||
- `CREATE TABLE имя_таблицы (id SERIAL PRIMARY KEY, колонка1 тип, колонка2 тип, ...);` - создание таблицы
|
||||
|
||||
- `DROP TABLE имя_таблицы;`
|
||||
- `CREATE USER имя_пользователя WITH PASSWORD 'пароль';`
|
||||
- `CREATE ROLE имя_роли;`
|
||||
- `GRANT ALL PRIVILEGES ON DATABASE имя_базы TO имя_пользователя;`
|
||||
- `DROP USER имя_пользователя;`
|
||||
- `DROP ROLE имя_роли;`
|
||||
|
||||
---
|
||||
|
||||
- `SELECT * FROM pg_stat_activity;` - просмотр текущий подключений
|
||||
- `SELECT * FROM pg_locks;` - просмотр блокировок
|
||||
|
||||
|
@ -2,3 +2,6 @@
|
||||
- `git remote -v` - показывает все удалённые репозитории, которые связаны с локальным репозиторием
|
||||
- `git branch -vv` - показывает upstream ветку
|
||||
- `rm -rf /path/to/repo/.git` - git больше не будет отслеживать эту директорию
|
||||
- `git config --global --list`
|
||||
- `git config --global user.name "Ваше Имя"`
|
||||
- `git config --global user.email "ваш_емейл@example.com"`
|
||||
|
11
java/COMMANDS.MD
Normal file
11
java/COMMANDS.MD
Normal file
@ -0,0 +1,11 @@
|
||||
- `sudo alternatives --config java`
|
||||
|
||||
---
|
||||
|
||||
Версия java
|
||||
- `jar tf bftDsudDownloader.jar`
|
||||
- `sudo jar xf bftDsudDownloader.jar io/netty/util/Timer.class`
|
||||
|
||||
- `javap -verbose io/netty/util/Timer.class | grep "major version"`
|
||||
|
||||
|
0
java/NOTES.MD
Normal file
0
java/NOTES.MD
Normal file
@ -36,6 +36,21 @@
|
||||
APT работает поверх более низкоуровневого инструмента `dpkg`, который непосредственно устанавливает .deb пакеты.
|
||||
- `sudo dpkg -i package_name.deb` - для установки `.deb` пакета
|
||||
- `sudo apt --fix-broken install` - если возникли проблемы с зависимостями
|
||||
|
||||
---
|
||||
|
||||
- `rpm -ivh <package_name>.rpm` - установка rpm пакета
|
||||
- `rpm -e <package_name>.rpm` - удаления пакета
|
||||
- `rpm -Uvh <package_name>.rpm` - обновление пакета, если он не установленЮ он установится
|
||||
- `rpm -qi <package_name>` - просмотр информации о пакете
|
||||
- `rpm -V <package_name>` - проверка целостности пакета
|
||||
- `rpm -ql <package_name>` - список файлов в пакете
|
||||
- `dnf install <package_name>.rpm` - установка rpm пакета через dnf, dnf будет управлять зависимостями
|
||||
|
||||
- `dnf install https://example.com/package-file.rpm` - установка rpm пакета напрямую из ссылки
|
||||
|
||||

|
||||
|
||||
### Сеть
|
||||
- `cat /etc/ssh/sshd_config | grep Port` - показывает на каком порту открыт ssh
|
||||
- `ss -tulpn` - информация о текущих сетевых соединениях и портах
|
||||
@ -48,6 +63,8 @@ APT работает поверх более низкоуровневого ин
|
||||
- `speedtest-cli` - спидтест
|
||||
- `speedtest-cli --list` - список серверов
|
||||
- `speedtest-cli --server SERVER_ID`
|
||||
- `fuser 9095/tcp` - проверить доступность порта
|
||||
|
||||
|
||||
### База
|
||||
- `cp -p` - сохранить атрибуты файлов (время создания, права, владельца)
|
||||
@ -95,6 +112,9 @@ APT работает поверх более низкоуровневого ин
|
||||
- notice (5): Важные события.
|
||||
- info (6): Информационные сообщения.
|
||||
- debug (7): Отладочные сообщения.
|
||||
- `journalctl -xe`
|
||||
- x (или --catalog) — выводит дополнительные объяснения (аннотации) к некоторым сообщениям журнала. Это помогает понять детали ошибок или предупреждений, предлагая описания и возможные решения, если такие есть.
|
||||
- e (или --pager-end) — открывает журнал в режиме постраничного просмотра и сразу прокручивает его до конца, показывая самые последние записи.
|
||||
|
||||
- `smartctl -a /dev/sda` - смарт отчет диска, генерит сам диск
|
||||
- `free -m` - оперативная память
|
||||
@ -105,7 +125,7 @@ APT работает поверх более низкоуровневого ин
|
||||
|
||||
- `curl -Lv domain.ru` - получить html страницу
|
||||
- `curl -v telnet://127.0.0.1:22` - доступность порта
|
||||
- `tcpdump -i any port 9100 -nn` - пакеты через этот порт ъ
|
||||
- `tcpdump -i any port 9100 -nn` - пакеты через этот порт
|
||||
- `tar` - работа с архивами
|
||||
- `-cvf` - создать архив
|
||||
- `-xvf` - извлечь архив
|
||||
@ -137,6 +157,14 @@ APT работает поверх более низкоуровневого ин
|
||||
- `sudo reboot now` - перезагрузка системы
|
||||
- `sudo shutdown now` - выключить компьютер
|
||||
- `watch "some command"` - переодически запускает команду
|
||||
|
||||
- `lscpu` - информация о процессоре
|
||||
- `lspci` - информация об устройствах подключенных к pci шине
|
||||
- `lsusb`
|
||||
|
||||
- `/var/log/dmesg` - логи загрузки системы
|
||||
- `pstree` - дерево процессов
|
||||
- `/usr/lib/systemd` - директория с юнитами по умолчанию
|
||||
### Разное
|
||||
|
||||
- `alt .` - перебирает последние аргументы из истории команд (`history`), если аргументов нет, то перебирает сами команды
|
||||
@ -181,7 +209,7 @@ APT работает поверх более низкоуровневого ин
|
||||
- Показывает список всех подключенных устройств (жестких дисков, SSD и т.д.).
|
||||
- Отображает размер дисков, типы разделов, точки монтирования.
|
||||
- Полезно для диагностики, перед созданием или изменением разделов.
|
||||
- `lsblk` - показывает дерево всех подключенных устройств, их разделы, точки монтирования. (`-f` - для более детальной информации)
|
||||
- `lsblk` - показывает дерево всех подключенных устройств, их разделы, точки монтирования. (`-f` - для более детальной информации о файловых системах, `-p` - полные пути к устройствам, `-d` - показывает только диски, без разделов, `-J` - результат в виде json)
|
||||
- `sudo cfdisk <устройство>` - команда для работы с разделами диска
|
||||
|
||||
|
||||
@ -212,4 +240,12 @@ mount [OPTIONS] <DEVICE> <MOUNTPOINT>
|
||||
- `sudo mount -t ext4 /dev/sda1 /mnt` - подключить с указанием типа файловой системы
|
||||
|
||||
---
|
||||
`df -Th` - информация о файловых системах и их типах
|
||||
- `df -Th` - информация о файловых системах и их типах
|
||||
- `du -sh *` - размеры файлов и директорий в текущей
|
||||
- `lsblk -d -o name,rota`
|
||||
- 1 это HDD (жесткий диск).
|
||||
- 0 это SSD (твердотельный накопитель)
|
||||
> диск с названием sr* это cd привод
|
||||
|
||||
- `lsscsi` - отображает устройства, подключенные через интерфейс SCSI
|
||||
- `cp /etc/fstab{,.bkp}` == `cp /etc/fstab /etc/fstab.bkp`
|
||||
|
@ -109,4 +109,49 @@ Swap-файл (или swap-раздел) — это специальная об
|
||||
Если целевой файл удален, символическая ссылка становится «битой» и неработоспособной, так как она указывает на несуществующий путь.
|
||||
Символические ссылки могут указывать на файлы или каталоги.
|
||||
Работают между различными файловыми системами.
|
||||
Они легче по объему, поскольку содержат только путь к файлу, а не данные самого файла.
|
||||
Они легче по объему, поскольку содержат только путь к файлу, а не данные самого файла.
|
||||
|
||||
---
|
||||
В файловой системе XFS иноды выделяются динамически, а вот в ext4 нет
|
||||
|
||||
---
|
||||
|
||||
Блочные устройства отправляют данные блоками, символьные потоков данных
|
||||
|
||||
---
|
||||
|
||||
Виртуальная файловая система — это файловая система, которая существует только в памяти и не хранит данные на диске. Примером является /proc, также известная как procfs (процессная файловая система).
|
||||
|
||||
- Не хранит данные на диске: Виртуальная файловая система отображает информацию, которая создаётся динамически при запросе и не сохраняется на постоянных носителях.
|
||||
|
||||
- Динамическое содержимое: Данные генерируются операционной системой в реальном времени. Например, содержимое файлов в /proc — это текущая информация о системе, процессах, памяти, конфигурациях и т.д., которая изменяется в зависимости от состояния системы.
|
||||
|
||||
Почему система виртуальная
|
||||
|
||||
- Отражение состояния системы: Виртуальные файловые системы, такие как /proc, работают как интерфейс для чтения и управления текущим состоянием системы и процессами. Эти файлы не сохраняют данные, а лишь отображают их.
|
||||
- Экономия ресурсов: Так как информация хранится только в памяти, это позволяет быстро получать текущие данные, не записывая их на диск.
|
||||
|
||||
- `/sys`: Динамическая информация о подключённых устройствах и драйверах.
|
||||
- `/dev`: Содержит устройства, создаваемые динамически
|
||||
|
||||
---
|
||||
|
||||
Динамическое создание: В большинстве современных систем устройства в /dev управляются с помощью udev (система управления устройствами), которая автоматически создаёт и удаляет файлы в зависимости от подключаемых устройств.
|
||||
|
||||
Нет данных на постоянных носителях: Данные о состоянии устройств хранятся в памяти, а сами файлы в /dev отображают текущие устройства системы.
|
||||
|
||||
Доступ через ядро: Когда обращаются к файлам в /dev, ядро перенаправляет запросы к соответствующим драйверам, позволяя операционной системе взаимодействовать с оборудованием и эмулированными устройствами.
|
||||
|
||||
---
|
||||
|
||||
`.wants`
|
||||
|
||||
Используется для слабых зависимостей. Если основной юнит запущен, он попытается запустить все юниты, указанные в его `.wants`, но не завершит работу, если какой-то из них не удастся запустить.
|
||||
|
||||
Каталог `.wants` создается автоматически, если для юнита добавляют зависимость с WantedBy=. Например, для `foo.service` можно создать `foo.service.wants/`, чтобы там указать зависимости, которые желательно иметь.
|
||||
|
||||
`.requires`
|
||||
|
||||
Используется для сильных зависимостей. Если основной юнит не может запустить одну из служб, указанных в `.requires`, запуск основного юнита тоже завершится с ошибкой.
|
||||
|
||||
Каталог `.requires` также создается при использовании директивы RequiredBy=, и его используют для критически необходимых зависимостей.
|
27
other/FIND_AND_MEASURE_PG.MD
Normal file
27
other/FIND_AND_MEASURE_PG.MD
Normal file
@ -0,0 +1,27 @@
|
||||
- `ps -ef | grep -v grep | grep postgres` - определяем, есть ли процесс постгрес
|
||||
- `which psql` - есть ли в локальном окружении
|
||||
- `ss -tulpn` - ищем порт на котором слушает постгрес
|
||||
- `sudo docker ps` - смотрим, какие контейнеры запущены
|
||||
- `docker ps --format "{{.Names}}"` - только имена контейнеров
|
||||
- `sudo docker inspect <имя_контейнера> | grep postgres` - есть ли постгрес в контейнере
|
||||
|
||||
- `psql -V` или `/usr/bin/psql -V` - версия постгрес
|
||||
- `psql -U postgres -c "SELECT pg_database.datname AS database_name, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database;"` - смотрим базы и их размер
|
||||
- `psql -U postgres -c "SELECT pg_size_pretty(SUM(pg_database_size(pg_database.datname))) AS total_size FROM pg_database;"` - общий размер всех баз
|
||||
|
||||
- `psql -U postgres -c "SHOW data_directory;"`
|
||||
|
||||
- `df -sh <path_to_data_dir>` - размер директории с данными баз, логами, конфигами, транзакциями и т.д.
|
||||
- `psql -U postgres -c "SHOW port;"`
|
||||
|
||||
---
|
||||
`sudo find / -type f -name "*.backup" -o -name "*.sql" -o -name "*.dump"` - этой командой можно поискать бэкапы
|
||||
|
||||
---
|
||||
- `docker volume ls`
|
||||
- `docker volume inspect <volume_name>`
|
||||
- `docker inspect <container_name> | grep -i mount`
|
||||
- `docker inspect <container_name> | grep -i volumes`
|
||||
- `docker port <container_name>`
|
||||
- `docker inspect <container_name> | grep -i port`
|
||||
|
34
other/SYSTEMD.MD
Normal file
34
other/SYSTEMD.MD
Normal file
@ -0,0 +1,34 @@
|
||||
### Создание юнита
|
||||
|
||||
- в каталоге для хранения unit файлов `cd /etc/systemd/system/` создаём файл с расширением `.service` для службы
|
||||
- ```bash
|
||||
sudo vi /etc/systemd/system/myservice.service
|
||||
```
|
||||
- пишем `unit` файл
|
||||
```bash
|
||||
[Unit]
|
||||
Description=Описание сервиса
|
||||
After=network.target # Определяет, когда сервис должен запускаться (например, после сети)
|
||||
|
||||
[Service]
|
||||
ExecStart=/path/to/your/executable_or_script # Команда для запуска сервиса
|
||||
ExecStop=/path/to/stop/script (необязательно) # Команда для остановки сервиса, если нужно
|
||||
ExecReload=/path/to/reload/script (необязательно) # Команда для перезагрузки
|
||||
User=your_user # Пользователь, от которого запустится сервис (если нужно)
|
||||
Group=your_group # Группа (если нужно)
|
||||
Restart=always # Политика перезапуска (может быть "on-failure", "always", "no")
|
||||
RestartSec=5 # Задержка перед перезапуском
|
||||
Environment="ENV_VAR=value" # Можно задавать переменные окружения
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target # Указывает, что сервис должен запускаться в multi-user режиме (стандартный для большинства серверов)
|
||||
```
|
||||
> `multi-user` - многопользовательский текстовый режим
|
||||
- `sudo systemctl daemon-reload` - обновить конфигурацию systemd
|
||||
- `sudo systemctl enable myservice.service`
|
||||
- `sudo systemctl start myservice.service`
|
||||
- `sudo systemctl status myservice.service`
|
||||
|
||||
|
||||
|
||||
|
BIN
static/image.png
Normal file
BIN
static/image.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 58 KiB |
119
vebsrv/tomcat/TOMCAT.MD
Normal file
119
vebsrv/tomcat/TOMCAT.MD
Normal file
@ -0,0 +1,119 @@
|
||||
|
||||
[Документация](https://tomcat.apache.org/tomcat-8.5-doc/introduction.html)
|
||||
- `wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.96/bin/apache-tomcat-9.0.96.tar.gz`
|
||||
- `CATALINA_HOME` : представляет собой корень вашей установки Tomcat, например /home/tomcat/apache-tomcat-9.0.10 или C:\Program Files\apache-tomcat-9.0.10.
|
||||
- `CATALINA_BASE` : представляет корень конфигурации времени выполнения определенного экземпляра Tomcat. Если вы хотите иметь несколько экземпляров Tomcat на одной машине, используйте свойство CATALINA_BASE.
|
||||
- установка и настройка `tomcat`
|
||||
- `cd /opt/`
|
||||
- `wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.73/bin/apache-tomcat-9.0.73.tar.gz`
|
||||
- `sudo useradd -r -m -U -d /opt/tomcat tomcat`
|
||||
- `sudo chown -R tomcat:tomcat /opt/tomcat`
|
||||
- `which java`
|
||||
- `readlink -f /usr/bin/java`
|
||||
|
||||
- `cd /opt/tomcat/bin`
|
||||
- `./startup.sh`
|
||||
|
||||
- **Создаём systemd unit**
|
||||
- `sudo vi /etc/systemd/system/tomcat.service`
|
||||
|
||||
```bash
|
||||
[Unit]
|
||||
Description=Apache Tomcat Web Application Container
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
|
||||
Environment=CATALINA_HOME=/opt/tomcat/
|
||||
Environment=CATALINA_BASE=/opt/tomcat/
|
||||
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
|
||||
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
|
||||
|
||||
ExecStart=/opt/tomcat/bin/startup.sh
|
||||
ExecStop=/opt/tomcat/bin/shutdown.sh
|
||||
|
||||
User=tomcat
|
||||
Group=tomcat
|
||||
RestartSec=10
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
- `sudo systemctl daemon-reload`
|
||||
- `sudo systemctl start tomcat`
|
||||
- `sudo systemctl enable tomcat`
|
||||
- `sudo systemctl status tomcat`
|
||||
|
||||
```
|
||||
/opt/tomcat
|
||||
├── conf
|
||||
│ ├── server.xml # Основной файл конфигурации серверов и виртуальных хостов
|
||||
│ ├── logging.properties # Общие настройки логирования
|
||||
│ ├── [host1] # Каталог для настроек виртуального хоста host1 (опционально)
|
||||
│ │ └── app1.xml # Конфигурация приложения для host1/app1
|
||||
│ └── [host2] # Каталог для настроек виртуального хоста host2 (опционально)
|
||||
│ └── app2.xml # Конфигурация приложения для host2/app2
|
||||
├── logs # Общая директория для логов (или отдельные каталоги для каждого хоста)
|
||||
│ ├── host1 # Логи виртуального хоста host1 (если настроено)
|
||||
│ ├── host2 # Логи виртуального хоста host2 (если настроено)
|
||||
│ └── catalina.out # Основной лог Tomcat
|
||||
├── webapps # Общая папка для приложений (используется по умолчанию для всех виртуальных хостов)
|
||||
│ ├── ROOT # Основное приложение по умолчанию
|
||||
│ ├── examples # Пример приложения
|
||||
│ └── [host-specific-apps]
|
||||
│ ├── host1/app1 # Приложение app1 для host1
|
||||
│ └── host2/app2 # Приложение app2 для host2
|
||||
└── temp
|
||||
└── work
|
||||
└── bin
|
||||
└── lib
|
||||
```
|
||||
|
||||
Содержимое CATALINA_HOME в `/opt/tomcat`:
|
||||
|
||||
- `/bin` — скрипты для запуска и остановки Tomcat (startup.sh, catalina.sh)
|
||||
- `/lib` — библиотеки, необходимые для работы сервера (catalina.jar, jasper.jar)
|
||||
|
||||
|
||||
`CATALINA_BASE` — директория с конфигурациями, временными файлами и приложениями, которые специфичны для каждого экземпляра Tomcat. Для нескольких инстансов рекомендуется создать отдельный `CATALINA_BASE` для каждого инстанса, например:
|
||||
|
||||
`/etc/tomcat-instance1`, `/etc/tomcat-instance2` и т.д.
|
||||
|
||||
- `/conf` — конфигурационные файлы для инстанса (server.xml, web.xml, context.xml).
|
||||
- `/webapps` — развернутые приложения и .war файлы для данного инстанса.
|
||||
- `/logs` — папка с логами инстанса.
|
||||
- `/temp` — временные файлы инстанса.
|
||||
- `/work` — кешированные объекты и скомпилированные JSP для данного инстанса.
|
||||
|
||||
---
|
||||
|
||||
Про библиотеку **Logback** для логирования Java приложений
|
||||
|
||||
В logback.xml основные блоки конфигурации включают:
|
||||
|
||||
`<configuration>` — корневой блок файла, внутри которого настраиваются все остальные элементы.
|
||||
|
||||
`<appender>` — определяет, куда будут направляться логи (например, в файл, консоль, удалённый сервер):
|
||||
|
||||
- `ConsoleAppender` — вывод в консоль (обычно используется для отладки).
|
||||
- `FileAppender` — запись логов в файл.
|
||||
- `RollingFileAppender` — запись в файл с ротацией по размеру или дате.
|
||||
- `SocketAppender` — отправка логов на удалённый сервер.
|
||||
|
||||
`<encoder>` — внутри аппендера определяет форматирование логов (например, шаблоны с датой, уровнем лога и сообщением).
|
||||
|
||||
`<root>` — задаёт общий уровень логгирования (например, INFO, DEBUG) и связывает его с аппендерами.
|
||||
|
||||
`<logger>` — настраивает уровень логгирования для отдельных классов или пакетов приложения (переопределяет `<root>`).
|
||||
|
||||
|
||||
- `TRACE`: Самый детализированный уровень, для отладки.
|
||||
- `DEBUG`: Для отладки, но с меньшей детализацией, чем TRACE.
|
||||
- `INFO`: Обычные информационные сообщения, отображающие состояние приложения.
|
||||
- `WARN`: Предупреждения о возможных проблемах.
|
||||
- `ERROR`: Сообщения об ошибках, когда выполнение операции не удалось
|
||||
|
||||
WEB-INF/classes или src/main/resources
|
||||
`<configuration scan="true" scanPeriod="30 seconds">`
|
Loading…
x
Reference in New Issue
Block a user