pub

Public Repo For Sysadmins and other people

1. SOFT

1.1. WINDOWS

1.2. DUPLICATI

1.2.1. Резервное копирование Bitrix CMS

Задача: Осуществлять резервное копирование Bitrix CMS максимально удобным способом. Желательно тиметь инкрементарные копии.

Имеем:

Что пробовал:

Установка:

1.3. APACHE

1.3.1. Различные способы переадрессации

Источник

1.3.1.1. htaccess
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]</pre>

или

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

1.3.2. Анализ Логов

cat /var/log/apache2/access.log | cut -d " " -f 1 | sort | uniq -c | sort -n -r | head -n 10
zcat /var/log/apache2/access.log.*.gz | cut -d " " -f 1 | sort | uniq -c | sort -n -r | head -n 10

1.4. ZABBIX

1.4.1. Шаблоны (Templates)

1.4.2. Установка клиента

Данная инструкция справедлива для debian, другие ОС смотрите пожалуйста на офф сайте! Дополнительные сведения по установке

1.4.1.1. Подготовка

 # Проверяем версию дистрибутива linux
 lsb_release -a
  
 # Выбираем русскую локаль для старых версий Debian
 dpkg-reconfigure locales # lang 372
  
 # или для современных
 localectl set-locale LANG=ru_RU.utf8
 localectl status
1.4.1.2. Устанавливаем сам агент
wget https://repo.zabbix.com/zabbix/4.0/debian/pool/main/z/zabbix-release/zabbix-release_4.0-2%2Bstretch_all.deb
dpkg -i zabbix-release_4.0-2+​stretch_all.deb
apt update
apt-get install zabbix-agent
1.4.1.3. Правим конфиг агента

# nano /etc/zabbix/zabbix_agent.conf
Server=127.0.0.1, zabbix.filatovz.ru
ServerActive=zabbix.filatovz.ru
LogFileSize=10
LogFile=/var/log/zabbix/zabbix_agentd.log
PidFile=/run/zabbix/zabbix_agentd.pid
EnableRemoteCommands=1
Timeout=30
Hostname=server_name
1. Добавим zabbix в sudoers
 # nano /etc/sudoers
 zabbix ALL=(ALL) NOPASSWD: ALL
2. Установим zabbix как службу systemd

sudo nano /lib/systemd/system/zabbix-agent.service

 [Unit]
  
 Description=Zabbix Agent
 After=syslog.target
 After=network.target
  
 [Service]
  
 Environment="CONFFILE=/etc/zabbix/zabbix_agentd.conf"
 EnvironmentFile=-/etc/default/zabbix-agent
 Type=forking
 Restart=on-failure
 PIDFile=/run/zabbix/zabbix_agentd.pid
 KillMode=control-group
 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE
 ExecStop=/bin/kill -SIGTERM $MAINPID
 RestartSec=10s

systemctl daemon-reload

1. Установка сервера

https://serveradmin.ru/ustanovka-i-nastroyka-zabbix-3-4-na-debian-9/

2. Установка сервера для docker-compose

Инструкция

Zabbix-postgres docker-compose.yml

 version: '3.1'
 services:
   postgres:
     image: postgres
     restart: always
     environment:
       POSTGRES_USER: zabbix
       POSTGRES_PASSWORD: zabbix
       POSTGRES_DB: zabbix
   zabbix-server:
     image: zabbix/zabbix-server-pgsql
     restart: always
     environment:
       DB_SERVER_HOST: postgres
       POSTGRES_USER: zabbix
       POSTGRES_PASSWORD: zabbix
       POSTGRES_DB: zabbix
     depends_on:
       - postgres
   zabbix-web:
     image: zabbix/zabbix-web-nginx-pgsql
     restart: always
     environment:
       ZBX_SERVER_HOST: zabbix-server
       DB_SERVER_HOST: postgres
       POSTGRES_USER: zabbix
       POSTGRES_PASSWORD: zabbix
       POSTGRES_DB: zabbix
     depends_on:
       - postgres
       - zabbix-server
     ports:
       - 8080:80

1.5. KODI

Установка и настройка Quasar на Kodi

1.6. ssh

Практические советы, примеры и туннели SSH

1.7. PROXMOX

1.8. WINE

1.8.1. Install on Linux Mint 19.3

sudo dpkg --add-architecture i386
wget -qO- https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -
sudo apt-add-repository 'deb http://dl.winehq.org/wine-builds/ubuntu/ bionic main' #(if you bionic error, type `xenial`)
sudo apt-get install --install-recommends winehq-stable
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks -O /usr/bin/winetricks
# config wine

winetricks --force dotnet452
# for keepass
wget -q -O /tmp/libpng12.deb http://se.archive.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_i386.deb
dpkg -i /tmp/libpng12.deb

1.9. Docker

```shell script docker system df # использование диска Docker’ом в различных разрезах




## 2. OS

### Windows

#### Синхронизация времени

```cmd
net stop w32time
w32tm /unregister
w32tm /register
net start w32time
w32tm /resync

2.1. Linux команды

2.1.1. Journalctl - дистрибутивы с systemd

# Показать ошибки
journalctl -p err

# Показать логи в реальном времени
journalctl -f

# Логи за определенную дату
journalctl --since=2016-12-20
journalctl --since=2016-12-20 --until=2016-12-21

# Лог конкретного сервиса
journalctl -b -u zabbix-agent.service

2.1.2. contains a file system with errors check forced

```shell script fsck -y /dev/sda1 ; reboot -f


#### 2.1.3. Включаем SWAP в файле

```shell script
sudo dd if=/dev/zero of=/var/swapfile bs=1M count=2048
sudo chmod 600 /var/swapfile
sudo mkswap /var/swapfile
echo /var/swapfile none swap defaults 0 0 | sudo tee -a /etc/fstab
sudo swapon -a

2.1.4. Выключаем IPv6 (debian)

$ sudo nano /etc/sysctl.conf

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

3. DEVOPS

3.1. Docker

3.1.1. Установка Docker + Docker-Compose

apt update && apt install git curl -y
git clone https://github.com/docker/docker-install.git
cd docker-install && sh ./install.sh
curl -o /usr/local/bin/docker-compose -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)"  
chmod +x /usr/local/bin/docker-compose
docker-compose -v
systemctl enable docker && systemctl start docker
mkdir /docker
cd /docker

3.1.2. Docker-Compose как systemd сервис

/etc/compose/docker-compose.yml - Compose file describing what to deploy 
/etc/systemd/system/docker-compose.service - Service unit to start and manage docker compose 
/etc/systemd/system/docker-compose-reload.service - Executing unit to trigger reload on docker-compose.service
/etc/systemd/system/docker-compose-reload.timer - Timer unit to plan the reloads

/etc/systemd/system/docker-compose-reload.service


[Unit]

Description=Refresh images and update containers

[Service]

Type=oneshot
ExecStart=/bin/systemctl reload docker-compose.service

# /etc/systemd/system/docker-compose-reload.timer

[Unit]

Description=Refresh images and update containers
Requires=docker-compose.service
After=docker-compose.service

[Timer]

OnCalendar=*:0/15

[Install]

WantedBy=timers.target
[Unit]

Description=Docker Compose container starter
After=docker.service network-online.target
Requires=docker.service network-online.target

[Service]

WorkingDirectory=/etc/compose
Type=oneshot
RemainAfterExit=yes
ExecStartPre=/usr/local/bin/docker-compose pull --quiet --parallel
ExecStart=/usr/local/bin/docker-compose up -d --build
ExecStop=/usr/local/bin/docker-compose down
ExecReload=/usr/local/bin/docker-compose pull --quiet --parallel
ExecReload=/usr/local/bin/docker-compose up -d --build

[Install]

WantedBy=multi-user.target

# systemctl daemon-reload && systemctl enable docker-compose && systemctl start docker-compose

3.2. Ротация логов

Эта служба необходима для того, чтобы архивировать старые логи или удалять их с какой-то переодичностью. Базовые настройки хранятся здесь: ‘‘/etc/logrotate.conf’’

Пример ротации конкретного файла:

/var/log/fail2ban.log {

weekly        # ротация раз в неделю. Возможные варианты daily, weekly, monthly, size (например size=1M)
rotate 4      # сохраняется последние 4 ротированных файла
compress      # сжимать ротируемый файл

delaycompress # сжимать предыдущий файл при следующей ротации
missingok     # отсутствие файла не является ошибкой
postrotate    # скрипт будет выполнен сразу после ротации
fail2ban-client set logtarget /var/log/fail2ban.log /dev/null
endscript

# If fail2ban runs as non-root it still needs to have write access
# to logfiles.
# create 640 fail2ban adm
create 640 root adm # сразу после ротации создать пустой файл с заданными правами и пользователем
}

Для немедленного применения изменений можно выполнить:

''$ logrotate /etc/logrotate.conf''

Для проверки внесенный изменений можно запустить команду (никаких действий с логами не будет выполнено):

''$ logrotate -d /etc/logrotate.conf''

3.3. Права на файлы

find /var/www/test.com/public_html -type d -exec chmod 0770 {} \;
find /var/www/test.com/public_html -type f -exec chmod 0660 {} \;

4. DEVELOP

4.1. PHP

4.1.1. Проверка отправки почты через sendmail

<?php
if (mail("ivan@filatovz1.ru", "заголовок", "текст")) {
    echo 'Отправлено';
}
else {
    echo 'Не отправлено';
}
?>

4.2. PYTHON

4.2.1. Ссылки

Мега-Учебник FLASK

4.3. BITRIX

4.3.1. Очистка кэша

```shell script rm -rf ./bitrix/upload/resize_cache # Просто удаляете эту папку и битрикс потом сам пересоздаст кэш по мере потребления (https://qna.habr.com/q/564222)

Можно еще правильно настроить битрикс (https://iplogic.ru/baza-znaniy/ochistka-papki-upload-v-bitriks-cherez-agent/)


#### 4.3.2. Ссылки

[Инструменты для разработки под 1С-Битрикс](https://habr.com/en/sandbox/73214/)

#### 4.3.3. Backup
- [Детальное описание](https://tuning-soft.ru/articles/bitrix/backup-bitrix.html)

```ini
# exlude directory for bitrix < v12
/bitrix/backup
/bitrix/cache
/bitrix/managed_cache
/bitrix/stack_cache
/upload/resize_cache

Добавляем задачи из битрикса в idea

оригинал здесь, мои правки ниже

Переменные:
bitrix_url - url вашего портала [sysadmin.bitrix24.ru]
group_id - имя группы [1]
user_id - id вашего пользователя [1] (админ обычно №1)
web_hook_key - ключ входящего вебхука
JSON URL
# Все открытые задачи
https://{bitrix_url}/rest/{user_id}/{web_hook_key}/task.item.list.json?ORDER[]=&FILTER[RESPONSIBLE_ID]={user_id}}&FILTER[%3CREAL_STATUS]=4&PARAMS[]=&SELECT[]=*

# Все открытые задачи только из определенной группы
https://{bitrix_url}/rest/{user_id}/{web_hook_key}/task.item.list.json?ORDER[]=&FILTER[RESPONSIBLE_ID]={user_id}}&FILTER[%3CREAL_STATUS]=4&PARAMS[]=&SELECT[]=*&FILTER[GROUP_ID]={group_id}
Сопоставление полей:
tasks                  | result[*]
id                     | ID
summary                | TITLE
description            | DESCRIPTION
updated                | CHANGED_DATE
created                | CREATED_DATE
singleTask-id          | result.ID
singleTask-summary     | result.TITLE
singleTask-description | result.DESCRIPTION
singleTask-updated     | result.CHANGED_DATE
singleTask-created     | result.CREATED_DATE

5. Написание документации

5.1. Софт + плагины

5.1.1. Visual Studio Code