4120 lines
190 KiB
Markdown
4120 lines
190 KiB
Markdown
****************************************************************************************************
|
||
Настройка времени и NTP сервера
|
||
Устанавливаем зону
|
||
```sh
|
||
sudo timedatectl set-timezone Asia/Almaty
|
||
```
|
||
```conf
|
||
sudo date --set="2025-01-07 21:05:00.000"
|
||
sudo timedatectl set-ntp on
|
||
sudo apt install ntp
|
||
ntpq -p
|
||
```
|
||
****************************************************************************************************
|
||
Добавляем нового пользователя
|
||
```sh
|
||
sudo adduser sabyrzhan
|
||
```
|
||
```sh
|
||
sudo usermod -aG sudo имя_пользователя
|
||
```
|
||
****************************************************************************************************
|
||
Установка cinamon на Ubuntu 22.04 и 24/04:
|
||
```sh
|
||
sudo apt update && sudo apt upgrade -y
|
||
sudo apt install cinnamon -y
|
||
sudo reboot
|
||
```
|
||
Настройка клавиатуры в cinamon удаляем: ibus
|
||
```sh
|
||
sudo apt-get remove ibus
|
||
```
|
||
Добавить в конец файла: sudo mcedit /etc/fstab
|
||
/media/sf_O_DRIVE /mnt/O_DRIVE none bind 0 0
|
||
/media/sf_D_DRIVE /mnt/D_DRIVE none bind 0 0
|
||
|
||
sudo chmod 777 /mnt/O_DRIVE
|
||
sudo usermod -aG vboxsf $USER
|
||
|
||
|
||
****************************************************************************************************
|
||
Для монтирования O_DRIVE в VitrualBox прописывать точку монтирования: /mnt/O_DRIVE
|
||
****************************************************************************************************
|
||
Авторизация на базе ключей SSH https://selectel.ru/blog/ssh-authentication/
|
||
|
||
****************************************************************************************************
|
||
Для добавления ярлыка в меню пуск создав файл *.desktop
|
||
```sh
|
||
cd /usr/share/applications
|
||
sudo tee IDEA_JEE.desktop > /dev/null <<EOF
|
||
[Desktop Entry]
|
||
Encoding=UTF-8
|
||
Name=IDEA_JEE
|
||
Exec=/opt/idea-IU-221.5787.30/bin/idea.sh
|
||
Icon=/opt/idea-IU-221.5787.30/bin/idea.svg
|
||
Type=Application
|
||
Categories=TextEditor;Development;IDE;
|
||
MimeType=text/html
|
||
Comment=Java development
|
||
Keywords=java;development;
|
||
EOF
|
||
```
|
||
****************************************************************************************************
|
||
|
||
Linux в Windows https://winitpro.ru/index.php/2020/07/13/zapusk-linux-v-windows-wsl-2/
|
||
wsl --list --online
|
||
wsl --install -d Ubuntu
|
||
После чего установится Ubuntu, перезагрузил, создал пользователя igor и задал простой пароль
|
||
sudo apt-get update && sudo apt-get upgrade -y
|
||
sudo apt-get install mc
|
||
****************************************************************************************************
|
||
Меняем временую зону Ubuntu
|
||
sudo timedatectl set-timezone UTC
|
||
****************************************************************************************************
|
||
Убрать звуковые щелчки при работе в Ubuntu которые появляются из-за режима энергосбережения:
|
||
Отключить режим низкого энергопотребления для зуковой карты sound
|
||
sudo su
|
||
echo '0' > /sys/module/snd_hda_intel/parameters/power_save
|
||
Фаил авто выполнения скрипта при загрузки:
|
||
sudo mcedit /etc/rc.local
|
||
В начале файла поставить: #!/bin/bash
|
||
sudo chmod +x /etc/rc.local
|
||
sudo mcedit /etc/systemd/system/rc-local.service
|
||
|
||
[Unit]
|
||
Description=/etc/rc.local Compatibility
|
||
ConditionPathExists=/etc/rc.local
|
||
|
||
[Service]
|
||
Type=forking
|
||
ExecStart=/etc/rc.local start
|
||
TimeoutSec=0
|
||
StandardOutput=tty
|
||
RemainAfterExit=yes
|
||
SysVStartPriority=99
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
|
||
sudo systemctl enable rc-local
|
||
sudo systemctl status rc-local
|
||
****************************************************************************************************
|
||
Для того чтобы консоль бястро не отключалась добавить в конец файла: sudo mcedit /etc/sysctl.conf
|
||
net.ipv4.tcp_keepalive_time = 600
|
||
net.ipv4.tcp_keepalive_intvl = 10
|
||
net.ipv4.tcp_keepalive_probes = 6
|
||
Перезагрузить:
|
||
sysctl -p
|
||
Проверить:
|
||
cat /proc/sys/net/ipv4/tcp_keepalive_time
|
||
****************************************************************************************************
|
||
Обновить ядро Ubuntu на самое новое:
|
||
uname -r
|
||
Выдало:
|
||
4.15.0-167-generic
|
||
5.4.0-99-generic
|
||
Пытаюсь поменять на 5.13.0 или 5.16.10 ищем ядро:
|
||
sudo apt-cache search linux-image | more
|
||
Устанавливаем ядро:
|
||
sudo apt-get install linux-image-5.13.0-1029-oem
|
||
|
||
sudo apt install gdebi
|
||
****************************************************************************************************
|
||
Тест памяти Ubuntu:
|
||
Объем оперативной памяти:
|
||
free -h
|
||
sudo apt install memtester
|
||
Для примера запустим проверку блока ОЗУ, размером в 100 мегабайт состоящую из двух циклов:
|
||
sudo memtester 100M 2
|
||
Для более тщательного тестирования памяти можно воспользоваться утилитой memtest86+ из меню загрузчика Grub.
|
||
****************************************************************************************************
|
||
Если grub загрузчик установился на флешку то так можно установать на нужный диск
|
||
sudo fdisk -l
|
||
sudo grub-install --root-directory=/ /dev/sda
|
||
В Ubuntu server при неправильном выключениии высвечивается меню grub без времени чтобы его отключить:
|
||
Для поиска Windows если он исчез:
|
||
sudo os-prober
|
||
sudo update-grub
|
||
Или так:
|
||
sudo mcedit /etc/default/grub
|
||
GRUB_DISABLE_OS_PROBER=true
|
||
Или так:
|
||
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt update
|
||
sudo apt install -y boot-repair && boot-repair
|
||
****************************************************************************************************
|
||
Установка и добавление себя в sudo
|
||
su -c "apt-get update"
|
||
su -c "apt-get -y install sudo"
|
||
su -c "addgroup ваш_логин sudo"
|
||
****************************************************************************************************
|
||
Установка сервиса времени и часовой пояс
|
||
apt-get -y install ntp
|
||
dpkg-reconfigure tzdata
|
||
****************************************************************************************************
|
||
0) Для того чтобы архивировать и извлечь каталог:
|
||
tar -cvf istransit.tar /opt/www/istransit.kz
|
||
|
||
tar -xvf /opt/www/istransit.tar -C /opt/www
|
||
0)Выключить комп:
|
||
shutdown -h now
|
||
1)Список процессов
|
||
top или лучше установить htop
|
||
|
||
Монтирование образа CD
|
||
mount -o loop /some.iso /mnt/point
|
||
mount -o loop -t iso9660 <isofilename> <mountpoint>
|
||
|
||
umount DIRECTORY
|
||
umount DEVICE_NAME
|
||
Посмотреть точки монтирования дисков:
|
||
sudo fdisk -l
|
||
|
||
3.1) Посмотреть мак адрес по адресу /etc/udev/rules.d/z25_persistent-net.rules
|
||
|
||
4)DNS сервера в ubuntu прописываються в /etc/resolv.conf (теперь в другом месте см. инет)
|
||
nameserver 212.19.149.53
|
||
nameserver 212.19.149.54
|
||
|
||
5)Список репозиториев в ubuntu расположен в nano /etc/apt/sources.list
|
||
apt-get update
|
||
apt-get install mc
|
||
apt-get remove mc
|
||
|
||
Если mc не найден то добавить в репозитории nano /etc/apt/sources.list эту строку:
|
||
deb http://archive.ubuntu.com/ubuntu/ jaunty universe
|
||
|
||
6)Переменные окружения
|
||
export PATH=$PATH:/usr/local/bin:/usr/local/sbin
|
||
alias mc='mc -c'
|
||
mc
|
||
7)Отобразить переменные окружения: export
|
||
|
||
8)Настройка PPPoE соединения комманда: pppoeconf
|
||
Соединятся командой: sudo pon dsl-provider
|
||
Завершить соединение: sudo poff dsl-provider
|
||
|
||
****************************************************************************************************
|
||
|
||
Выполнение скрипта
|
||
sh Check.sh
|
||
****************************************************************************************************
|
||
Символическая ссылка Symbolic
|
||
ссылка на папку:
|
||
ln -s /mnt/data/ftp /var/www/html/upload
|
||
********** Настраиваю прокси сервер **********
|
||
sudo mcedit /etc/environment
|
||
И в заголовок пишу:
|
||
http_proxy=http://192.168.1.89:8888
|
||
https_proxy=http://192.168.1.89:8888
|
||
или
|
||
http_proxy=http://192.168.0.170:7777
|
||
****************************************************************************************************
|
||
Для того чтобы посмотреть размер файлов:
|
||
ncdu
|
||
Для определения сколько свободного места выполнить:
|
||
df -h
|
||
****************************************************************************************************
|
||
Чтобы вывести информацию по ОЗУ (ram) выполните команду:
|
||
sudo lshw -C memory
|
||
****************************************************************************************************
|
||
Установка компилятора для разработки на c++ gcc
|
||
sudo apt-get update -y
|
||
sudo apt-get upgrade -y
|
||
sudo apt-get install perl -y
|
||
sudo apt-get install build-essential
|
||
Для компиляции по 32 битный Linux (В еклипсе прописать g++ -m32 а также gcc -m32 а также g++ -m32):
|
||
sudo apt-get install gcc-multilib
|
||
sudo apt-get install g++-multilib
|
||
Для eclipse установить:
|
||
sudo apt install default-jre
|
||
****************************************************************************************************
|
||
Установка кросс-компилятора Cross Compilers для Raspberry Pi на Ubuntu: https://github.com/raspberrypi/tools
|
||
sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
|
||
|
||
Note: if building for Pi0/1 using --with-arch=armv6 --with-float=hard --with-fpu=vfp is recommended (and matches the default flags of the toolchains included here).
|
||
|
||
|
||
|
||
/home/igor/toolchain/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf
|
||
|
||
****************************************************************************************************
|
||
записать информацию о расположении загрузчика системы в фаил
|
||
[root]# dd if=/dev/hda3 of=/mnt/floppy/bootsect.lnx bs=512 count=1
|
||
****************************************************************************************************
|
||
Компиляция WIFI драйвера
|
||
Для того чтобы узнать версию ядра "4.15.0-23-generic":
|
||
uname -r
|
||
Внмание: исходники ядра должны быть той же версии что и сейчас работают в системе!
|
||
Вывести информацию о USB устройствах:
|
||
lsusb -v
|
||
У меня выдало:
|
||
Для того чтобы посмотреть что подсоединено к pci:
|
||
lspci -v
|
||
Minipcie
|
||
Для того чтобы посмотреть всех устройств:
|
||
lsdev -v
|
||
|
||
И так у меня RTL8821AE пробую скачать драйвер отсюда:
|
||
|
||
|
||
Загрузка и проверка модулей:
|
||
lsmod
|
||
****************************************************************************************************
|
||
Подключение к wifi
|
||
Настраиваемрегион командой: iw reg set CN
|
||
|
||
|
||
То что мы живём в китае а то 5G WIFI не работает
|
||
sudo -i
|
||
echo "options cfg80211 ieee80211_regdom=CN" > /etc/modprobe.d/cfg80211.conf
|
||
exit
|
||
|
||
sudo ifconfig wlan0 up
|
||
$ sudo iwconfig wlan0 essid Node5
|
||
$ sudo dhclient -v wlan0
|
||
http://help.ubuntu.ru/wiki/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D1%81%D0%B5%D1%82%D0%B8_%D0%B2%D1%80%D1%83%D1%87%D0%BD%D1%83%D1%8E#%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_wifi
|
||
****************************************************************************************************
|
||
Активация DHCP клиента:
|
||
****************************************************************************************************
|
||
Создание нового пользователя с домашней дерикторией:
|
||
sudo useradd igor -g www-data
|
||
Задаём пароль:
|
||
sudo passwd igor
|
||
Добавляем пользователя в дополнительную группу (группы через запятую):
|
||
sudo usermod -a -G www-data administrator
|
||
sudo usermod -a -G tomcat administrator
|
||
sudo usermod -a -G sudo igor
|
||
Разрешить доступ к последовательному порту Для этого помещаем себя в группу dialout
|
||
sudo usermod -a -G dialout igor
|
||
Для проверки настроек:
|
||
id igor
|
||
groups igor
|
||
Назначить sudo привилегии пользователю:
|
||
mcedit /etc/sudoers
|
||
igor ALL=(ALL:ALL) ALL
|
||
Рекурсивно назначить вледельца папки:
|
||
|
||
|
||
sudo chown tomcat:tomcat -R /opt/tomcat/geoserver/ROOT/data
|
||
sudo chown tomcat:tomcat ~/CCALM.war
|
||
sudo chown tomcat:tomcat ~/SoilScience.war
|
||
sudo chown <your username>:<your usergroup> -R <path to>/.blabla
|
||
Выставляем права на папку:
|
||
sudo chmod -R 774 /var/www/
|
||
Для удаления пользователя c домашней и mail директорией выполнить:
|
||
userdel -r igor
|
||
****************************************************************************************************
|
||
Монтирование USB Flash
|
||
mount -t vfat /dev/sda1 /flash
|
||
umount /flash
|
||
Автомонтирование USB при запуске системы http://www.fight.org.ua/hdddrives/linux_disk_mount_fstab.html http://help.ubuntu.ru/wiki/fstab:
|
||
Выполнить команду: sudo blkid
|
||
Найти строку:
|
||
/dev/sdb1: LABEL="IGOR_8GB" UUID="94D2-1374" TYPE="vfat"
|
||
/dev/sdb1: LABEL="SSD_2_5" UUID="14A3BBD52CB2F1C3" TYPE="ntfs" PARTUUID="56c83443-01"
|
||
/dev/sdb5: UUID="17C59CBD70BFFBA5" TYPE="ntfs" PARTUUID="f9aec734-05"
|
||
|
||
Добавить в sudo mcedit /etc/fstab следующее:
|
||
UUID=94D2-1374 /media/usb vfat rw,auto,user,exec,async 0 0
|
||
UUID=7086E7317C4E478E /mnt/O_DRIVE ntfs-3g defaults 0 0
|
||
/dev/sda3 /mnt/ssd ntfs-3g rw,auto,user,exec,async 0 0
|
||
/dev/sda3 /mnt/windows ntfs-3g defaults 0 0
|
||
|
||
Монтирование сетевой файловой системы:
|
||
mount -t cifs //192.168.0.11/o /mnt/smb -o username=igor,password=1245,iocharset=utf8,codepage=cp866
|
||
Для автоматического монтирования в /etc/fstab записать: //192.168.0.11/o /mnt/smb cifs username=igor,password=1245,rw,auto,noexec,iocharset=utf8,codepage=cp866,uid=1000,gid=100 0 0
|
||
****************************************************************************************************
|
||
Перенос системы на другой жеский диск (также можно делать недельные бакапы системы, на атоме установленна)
|
||
Создаём копию системы на флешку:
|
||
sudo tar cvpzf /media/usb/backup.tgz --exclude=/var/www --exclude=/etc/fstab --exclude=/boot/grub/grub.cfg --exclude=/mnt --exclude=/media --exclude=/proc --exclude=/lost+found --exclude=/sys /
|
||
Потом извлекаем на новую установленную систему командой: sudo tar xvpfz /backup.tgz -C /
|
||
Можно также скопировав с диска на диск без синхронизации:
|
||
****************************************************************************************************
|
||
Измененние раздела без перезагрузки сервера после увеличения размера жеского диска (на основе: https://serverspace.ru/support/help/uvelichenie-diskovogo-prostranstva-ubuntu-18/)
|
||
ТОЛЬКО ДЛЯ РАЗДЕЛОВ LVM
|
||
Посмотреть список дисков:
|
||
df -h
|
||
lsblk
|
||
Выполняем сканирование конфигурации и передачу данных ядру ОС:
|
||
echo 1 > /sys/block/sda/device/rescan
|
||
Запускаем утилиту:
|
||
parted
|
||
Выводим таблицу разделов:
|
||
p
|
||
Результат такой (для запоминания):
|
||
Model: VMware Virtual disk (scsi)
|
||
Disk /dev/sda: 537GB
|
||
Sector size (logical/physical): 512B/512B
|
||
Partition Table: gpt
|
||
Disk Flags:
|
||
|
||
Number Start End Size File system Name Flags
|
||
1 1049kB 2097kB 1049kB bios_grub
|
||
2 2097kB 215GB 215GB ext4
|
||
|
||
Запускаем процедуру слияния:
|
||
(parted) resizepart 2
|
||
Где «2» означает номер тома, на котором происходит изменение дискового пространства, вбиваю нужный размер:
|
||
537GB
|
||
Потом:
|
||
quit
|
||
Информируем OC об изменениях:
|
||
pvresize /dev/sda2
|
||
Меняем значение тома командой:
|
||
lvextend -r -l +100%FREE /dev/mapper/vgroup1-root
|
||
Проверяем результат:
|
||
df –h
|
||
|
||
----------------------------------------
|
||
Вариант для не виртуальной файловой системы (https://habr.com/ru/post/450444/):
|
||
Проверяем размер:
|
||
sudo fdisk -l
|
||
Выдало:
|
||
Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 sectors
|
||
Units: sectors of 1 * 512 = 512 bytes
|
||
Sector size (logical/physical): 512 bytes / 512 bytes
|
||
I/O size (minimum/optimal): 512 bytes / 512 bytes
|
||
Disklabel type: gpt
|
||
Disk identifier: 955FD603-437A-4A80-B5F6-90F1C2CCD1D0
|
||
|
||
Device Start End Sectors Size Type
|
||
/dev/sda1 2048 4095 2048 1M BIOS boot
|
||
/dev/sda2 4096 419921875 419917780 200,2G Linux filesystem
|
||
Удаляем раздел и создаём новый командами:
|
||
sudo fdisk /dev/sda
|
||
p
|
||
d
|
||
n (Метку файловой системы не удаляем)
|
||
Обновляем:
|
||
sudo partprobe /dev/sda
|
||
Перезаписываем метаданные файловой системы:
|
||
sudo resize2fs /dev/sda2
|
||
Проверяем:
|
||
sudo fdisk -l
|
||
****************************************************************************************************
|
||
Добавление нового пользователя см. cat /etc/passwd и cat /etc/group
|
||
sudo useradd tester -d /var/www/www.dirt.kz -g 33 -s /usr/sbin/nologin
|
||
sudo passwd tester
|
||
sudo userdel tester
|
||
****************************************************************************************************
|
||
Настройка rsync для резервного копирования файлов в отдельную папку http://ashep.org/2010/backup-v-linux-nastraivaem-rsync-server/#.VPrB0_mQCNY
|
||
1 й командой на флешку: rsync -rlvt --modify-window=1 --delete /var/www /media/usb
|
||
Меняем редактор по умолчанию на тот который от MC:
|
||
export EDITOR=mcedit
|
||
Для добавления в cron для дневной синхронизации:
|
||
crontab -e
|
||
И добавляем строчку чтоб это происходило в 3 часа ночи:
|
||
0 3 * * * rsync -rlvt --modify-window=1 --delete /var/www /media/usb
|
||
****************************************************************************************************
|
||
Настройка cron:
|
||
sudo update-alternatives --config editor
|
||
update-alternatives --config editor
|
||
export EDITOR=mcedit
|
||
Или записать в "sudo mcedit /etc/environment" строку "EDITOR=mcedit"
|
||
sudo crontab -e
|
||
sudo crontab -e -u www-data
|
||
sudo crontab -e -u tomcat
|
||
В файле прописать:
|
||
*/5 * * * * wget -O /dev/null -q 'http://www.bigfoottrade.kz/cashier/work.php'
|
||
*/2 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/globalstar.php'
|
||
10 0 * * * wget -O /dev/null -q 'http://www.bigfoottrade.kz/sitemap.php'
|
||
0 * * * * wget -O /dev/null -q 'http://www.bigfoottrade.kz/shop/tree.php?fn=0&name=test_tree.js'
|
||
*/30 * * * * /usr/bin/php5 /var/www/update_ip.php
|
||
|
||
*/1 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/work.php'
|
||
0 3 * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/get/list.php'
|
||
*/1 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/mail.php'
|
||
*/1 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/iridium.php'
|
||
*/2 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/globalstar.php'
|
||
|
||
0 6 * * * wget -O /dev/null -q 'http://locust.kz/DownloadWeather?forecast=000'
|
||
0 7 * * * wget -O /dev/null -q 'http://locust.kz/DownloadWeather?forecast=048'
|
||
1 1 1 * * wget -O /dev/null -q 'http://locust.kz/SendMail'
|
||
|
||
0 1 * * * wget -O /dev/null -q 'http://locust.kz/get/list.php'
|
||
0 1 * * * /opt/backups/backup.sh
|
||
|
||
Проверяю таблицу:
|
||
sudo crontab -l -u www-data
|
||
****************************************************************************************************
|
||
Установка MongoDB на Ubuntu https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ubuntu-18-04-ru
|
||
|
||
sudo apt update
|
||
sudo apt install mongodb-server
|
||
sudo systemctl status mongodb
|
||
|
||
****************************************************************************************************
|
||
Установка MySQL на Ubuntu 22.04
|
||
apt-get update
|
||
sudo apt-get install mysql-server
|
||
Удаление MySQL
|
||
sudo systemctl stop mysql
|
||
sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
|
||
sudo rm -rf /etc/mysql /var/lib/mysql
|
||
sudo apt autoremove
|
||
sudo apt autoclean
|
||
Меняем пароль через SQL:
|
||
sudo mysql
|
||
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newIg@rR0';
|
||
SELECT user,authentication_string,plugin,host FROM mysql.user;
|
||
SHOW GRANTS FOR 'root'@'localhost';
|
||
|
||
Также настроить чтобы он был не регистрозависемым в файле /etc/mysql/mysql.conf.d/mysqld.cnf в секции [mysqld] добавить строку:
|
||
lower_case_table_names = 1
|
||
Для возможность удаленого подключения через внешку создаём спец пользователя, это я сделал через dbForge создав там пользователя root@192.168.0.%.
|
||
sudo mysql -u root -pnewIg@rR0
|
||
CREATE USER 'root'@'192.168.0.%' IDENTIFIED WITH mysql_native_password BY 'newIg@rR0';
|
||
ALTER USER 'begaikin'@'192.168.0.%' IDENTIFIED BY 'Begaikin@2';
|
||
Проверить: GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.%';
|
||
GRANT ALL PRIVILEGES ON `%`.* TO 'root'@'192.168.0.%';
|
||
SHOW GRANTS FOR 'root'@'192.168.0.%';
|
||
|
||
А также для удалёного подключения закоментить параметр "bind-address = 127.0.0.1" в файле настроек mcedit /etc/mysql/mysql.conf.d/mysqld.cnf
|
||
|
||
Перезагружаем MySQL:
|
||
sudo service mysql restart
|
||
|
||
|
||
База MySQL: db1109882_locust
|
||
Логин: u1109882_root
|
||
Пароль: root123456
|
||
|
||
mysqldump -uu1109882_root -proot123456 -h127.0.0.1 db1109882_locust > /root/db1109882_locust2.sql
|
||
****************************************************************************************************
|
||
Установка MySQL для разработчика:
|
||
sudo apt-get update
|
||
sudo apt-get install libmysqld-dev
|
||
****************************************************************************************************
|
||
Установка Apache и PHP (на посл версии Ubuntu php7):
|
||
|
||
Подключаемся к серверу:
|
||
```sh
|
||
ssh administrator@10.101.1.3
|
||
```
|
||
|
||
Устанавливаем:
|
||
```sh
|
||
sudo apt-get update &&
|
||
sudo apt-get install apache2 php -y &&
|
||
sudo apt-get install php libapache2-mod-php -y &&
|
||
sudo apt-get install php gettext -y &&
|
||
sudo apt-get install php php-gd -y &&
|
||
sudo apt-get install php php-pgsql -y &&
|
||
sudo apt-get install php php-mysql -y &&
|
||
sudo apt-get install php php-mysqli -y &&
|
||
sudo apt-get install php-imap -y &&
|
||
sudo apt-get install php-mbstring -y &&
|
||
sudo apt-get install php-curl -y &&
|
||
sudo apt-get install php-xml -y &&
|
||
sudo apt-get install php-soap -y
|
||
```
|
||
Включаем модули:
|
||
```sh
|
||
sudo phpenmod imap
|
||
sudo phpenmod mbstring
|
||
sudo a2enmod rewrite
|
||
```
|
||
|
||
В /etc/apache2/apache2.conf ставим AllowOverride All командой
|
||
```sh
|
||
sudo sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.conf
|
||
```
|
||
Проверяем файл:
|
||
```sh
|
||
sudo mcedit /etc/apache2/apache2.conf
|
||
```
|
||
|
||
```sh
|
||
sudo a2enmod php8.0
|
||
sudo a2enmod ssl #Так как в последнее время делаю через haproxy то SSL в апачи не использую
|
||
sudo a2enmod headers
|
||
sudo a2enmod expires
|
||
sudo a2enmod passenger #Для redmine
|
||
sudo a2enmod fastcgi #Для redmine
|
||
sudo a2dismod info #Чтобы не светить статистикой в сеть
|
||
sudo a2dismod status #Чтобы не светить статистикой в сеть
|
||
```
|
||
Также добавляем обработку раширения .xyz как .php файл.
|
||
|
||
|
||
Настраиваем PHP /etc/php/8.3/apache2/php.ini:
|
||
max_execution_time = 60
|
||
max_input_time = 120
|
||
short_open_tag = On
|
||
display_errors = On
|
||
post_max_size = 20M
|
||
upload_max_filesize = 20M
|
||
|
||
session.gc_maxlifetime = 14400 #Увеличиваем время жизнисесии до 4 часов
|
||
|
||
Если выдаёт такое:
|
||
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
|
||
|
||
|
||
Настройка Apache:
|
||
httpd - запустить Apache
|
||
Перезапустить Apache
|
||
```sh
|
||
sudo systemctl restart apache2
|
||
```
|
||
|
||
********** Установка Composer для php **********
|
||
Скачиваю в домашнюю папку пользователя
|
||
curl -sS https://getcomposer.org/installer -o composer-setup.php
|
||
Выполняем загрузку и установку:
|
||
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
|
||
Потом можно будет переходить в папку с сайтом и выполнять
|
||
composer require mpdf/mpdf
|
||
|
||
********** Настройка laravel под Windows php фреймворк **********
|
||
https://www.tutorialspoint.com/laravel/laravel_installation.htm
|
||
После установки композера раскоментить расширение ;extension=fileinfo и выполнить команду:
|
||
composer create-project laravel/laravel rigor --prefer-dist
|
||
Потом можно запустить сервер зайдя в созданную папку:
|
||
php artisan serve
|
||
|
||
********** Настройка https ssl для apache под Windows **********
|
||
https://apache-windows.ru/apache-ssl-переход-apache-на-https/
|
||
|
||
********** Настройка https ssl для apache под Linux **********
|
||
Создаём ключ командой:
|
||
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt
|
||
На вопрос пароля написал "test!irigm"
|
||
Снимаем пароль с ключа:
|
||
cp server.key{,.orig}
|
||
openssl rsa -in server.key.orig -out server.key
|
||
rm server.key.orig
|
||
Скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору:
|
||
sudo cp server.crt /etc/ssl/certs/
|
||
sudo cp server.key /etc/ssl/private/
|
||
sudo chmod 0600 /etc/ssl/private/geovizor_com.key
|
||
Для начала необходимо активировать mod_ssl:
|
||
sudo a2enmod ssl
|
||
Содержание файла виртуального хоста:
|
||
<VirtualHost *:443>
|
||
ServerAdmin info@geovizor.com
|
||
ServerName geovizor.com
|
||
ServerAlias www.geovizor.com
|
||
DocumentRoot /var/www/geovizor.com
|
||
|
||
DirectoryIndex index.html index.php index.xyz
|
||
AddType application/x-httpd-php .php .xyz
|
||
|
||
SSLEngine on
|
||
SSLCertificateFile /etc/ssl/certs/geovizor_com.crt
|
||
SSLCertificateChainFile /etc/ssl/certs/geovizor_com.ca-bundle
|
||
SSLCertificateKeyFile /etc/ssl/private/geovizor_com.key
|
||
</VirtualHost>
|
||
|
||
sudo a2ensite bigfoottrade.kz.ssl.conf
|
||
sudo a2ensite bigfoottrade.kz.conf
|
||
sudo a2ensite zatochnik.pro.conf
|
||
sudo a2ensite zatochnik.pro.ssl.conf
|
||
sudo a2ensite elektronnaya-ochered.kz.conf
|
||
sudo a2ensite elektronnaya-ochered.kz.conf
|
||
sudo a2ensite transit.istt.kz.conf
|
||
sudo a2ensite geovizor.com.ssl.conf
|
||
sudo a2ensite mqtt.kz.ssl.conf
|
||
sudo a2ensite stations.istt.kz.ssl.conf
|
||
sudo a2ensite stations.istt.kz.conf
|
||
sudo a2ensite uspdmanager.istt.kz.conf
|
||
sudo a2ensite msp.istt.kz.conf
|
||
sudo a2ensite mog.istt.kz.conf
|
||
sudo a2ensite mqtt.kz.conf
|
||
sudo a2ensite data.ccalm.org
|
||
sudo a2ensite rigor.kz.conf
|
||
sudo a2ensite 000-default.conf
|
||
sudo a2ensite transit.istt.kz.conf
|
||
sudo a2ensite aistransit.kz.conf
|
||
sudo a2ensite jwt.local.conf
|
||
sudo a2ensite jwt2.local.conf
|
||
sudo a2ensite transit_gpti_kg.conf
|
||
|
||
Посмотреть все разрешонные сайты:
|
||
a2query -s
|
||
|
||
sudo a2dissite bigfoottrade.kz.conf
|
||
sudo a2dissite zatochnik.pro.ssl.conf
|
||
sudo a2dissite zatochnik.pro.conf
|
||
sudo a2dissite geovizor.com.ssl.conf
|
||
sudo a2dissite transit.istt.kz.conf
|
||
sudo a2dissite 000-default.conf
|
||
sudo a2dissite default-ssl.conf
|
||
sudo a2dissite msp.istt.kz.ssl.conf
|
||
sudo a2dissite mqtt.kz.ssl.conf
|
||
sudo a2dissite transit.istt.kz.conf
|
||
sudo a2dissite istransit.kz.conf
|
||
|
||
sudo a2dissite jwt2.local.conf
|
||
sudo a2dissite jwt.local.conf
|
||
|
||
|
||
|
||
http://aistransit.kz/
|
||
|
||
Для проверки файла ключа:
|
||
openssl x509 -noout -modulus -in /etc/ssl/certs/geovizor_com.crt
|
||
openssl x509 -noout -modulus -in /etc/ssl/private/server.key
|
||
openssl pkcs7 -print_certs -in /etc/ssl/certs/geovizor_com.crt -out /etc/ssl/certs/geovizor_com.pem
|
||
|
||
Проверяем настройки командой:
|
||
/usr/sbin/apache2 -S
|
||
|
||
***** Настраивем виртуальный хост *****
|
||
Копируем файлик примера:
|
||
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.istt.kz.conf
|
||
sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/msp.istt.kz.ssl.conf
|
||
В файлике настраиваю ServerAdmin и DocumentRoot :
|
||
<VirtualHost *:80>
|
||
ServerAdmin ivanov.i@istt.kz
|
||
ServerName transit.istt.kz
|
||
ServerAlias transit2.istt.kz
|
||
DocumentRoot /var/www/transit.istt.kz
|
||
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||
</VirtualHost>
|
||
|
||
Активируем:
|
||
sudo a2ensite bigfoottrade.kz.conf
|
||
sudo a2ensite bigfoottrade.kz.ssl.conf
|
||
sudo a2ensite uspdmanager.istt.kz.conf
|
||
sudo a2ensite uspdmanager.istt.kz.ssl.conf
|
||
sudo a2ensite msp.istt.kz.ssl.conf
|
||
sudo a2ensite daloradius.istt.kz.conf
|
||
sudo a2ensite stations.istt.kz
|
||
sudo a2ensite zatochnik.pro
|
||
sudo a2ensite elektronnaya-ochered.kz.conf
|
||
sudo a2ensite integration-gateway.org.conf
|
||
sudo a2ensite integration-gateway.org.ssl.conf
|
||
|
||
sudo a2ensite motion-engine.ru.conf
|
||
sudo a2ensite motion-engine.kz.conf
|
||
sudo a2ensite motion-engine.com.conf
|
||
sudo a2ensite observer.kz.conf
|
||
|
||
sudo a2ensite transit.istt.kz.ssl.conf
|
||
sudo a2ensite transit.istt.kz.conf
|
||
sudo a2ensite geovizor_local.conf
|
||
Или деактивируем
|
||
sudo a2dissite 000-default.conf
|
||
sudo a2dissite msp.istt.kz.ssl.conf
|
||
sudo a2dissite bigfoottrade.kz.conf
|
||
sudo a2dissite uspdmanager.istt.kz.conf
|
||
sudo a2dissite earth.kz.conf
|
||
sudo a2dissite integration-gateway.org.conf
|
||
sudo a2dissite observer.kz.conf
|
||
Перезагружаем
|
||
sudo service apache2 restart
|
||
****************************************************************************************************
|
||
Настройка SSH:
|
||
sudo apt-get install openssh-server
|
||
Поменять порт можно в настройках:
|
||
sudo mcedit /etc/ssh/sshd_config
|
||
Port 2222
|
||
Для рестарта: sudo /etc/init.d/ssh stop/start/restart
|
||
Для подключения через Linux: ssh administrator@192.168.0.83 -p 2222
|
||
Для винды есть PUTTY.EXE настроить кодировку на utf-8
|
||
****************************************************************************************************
|
||
Подключение к последовательному порту ttyUSB через Minicom
|
||
sudo apt-get install minicom
|
||
sudo minicom -s
|
||
После настройки зайти так
|
||
sudo minicom
|
||
|
||
****************************************************************************************************
|
||
********** Устанавливаю и настраиваю FreeRadius **********
|
||
Настройка rlm_perl для FreeRadius: http://abills.net.ua/wiki/doku.php/abills:docs:rlm_perl:ru подсказки в http://www.m-200.com/base/index.php/%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA_FREERADIUS._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_3
|
||
|
||
Для того, чтобы использовать встроенный perl необходимо:
|
||
1. В файле modules/perl раскомментировать строку 'func_authorize = authorize'.
|
||
2. В файле radiusd.conf добавить:
|
||
authorize {
|
||
preprocess
|
||
files
|
||
perl
|
||
}
|
||
|
||
|
||
По инсткукции из http://ittraveler.org/ustanovka-i-nastrojka-radius-servera-na-ubuntu-s-veb-interfejsom/
|
||
Устанавливаем FreeRadius и пакеты
|
||
sudo apt-get install freeradius
|
||
sudo apt-get install freeradius-mysql
|
||
sudo apt-get install freeradius-utils
|
||
sudo apt-get install freeradius-perl
|
||
sudo apt-get install freeradius-python
|
||
Подключаемся к серверу Mysql
|
||
mysql -u root -p
|
||
Далее создаем базу данных radius
|
||
create database radius;
|
||
Назначим полные права пользователю radius
|
||
grant all on radius.* to radius@localhost identified by "WP@$$w0rd";
|
||
Отключаемся от Mysql
|
||
exit
|
||
Импортируем таблицы в базу данных radius
|
||
#mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql
|
||
#mysql -u root -p radius < /etc/freeradius/sql/mysql/nas.sql
|
||
Для проверки добавим тестовые значения в таблицу radcheck
|
||
#mysql -u root -p
|
||
#mysql> use radius;
|
||
#mysql> INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('sqltest', 'Password', 'testpwd');
|
||
#mysql> exit
|
||
Открываем файл настроек Freeradius для MySQL расположение файла — /etc/freeradius/sql.conf
|
||
Редактируем строки до такого вида:
|
||
database = mysql
|
||
server = "localhost"
|
||
port = 3306
|
||
login = radius
|
||
password = "WP@$$w0rd"
|
||
radius_db = "radius"
|
||
|
||
readclients = yes
|
||
|
||
Далее открываем файл сайта Freeradius
|
||
Расположение файла — /etc/freeradius/sites-enabled/default
|
||
Приводим следующие строки к виду:
|
||
Uncomment sql on authorize{}
|
||
# See “Authorization Queries” in sql.conf
|
||
sql
|
||
...
|
||
Uncomment sql on accounting{}
|
||
# See “Accounting queries” in sql.conf
|
||
sql
|
||
...
|
||
Uncomment sql on session{}
|
||
# See “Simultaneous Use Checking Queries” in sql.conf
|
||
sql
|
||
...
|
||
Uncomment sql on post-auth{}
|
||
# See “Authentication Logging Queries” in sql.conf
|
||
sql
|
||
|
||
Далее правим основной конфигурационный файл Freeradius и включаем поддержку Mysql расскоментировав строку.
|
||
Расположение файла — /etc/freeradius/radiusd.conf
|
||
$INCLUDE sql.conf
|
||
|
||
Теперь протестируем настройки сервера.
|
||
Откройте 2 ssh окна терминала.
|
||
В первом окне остановим сервис Freeradius
|
||
sudo service freeradius stop
|
||
И запустим сервис в режиме debug
|
||
sudo freeradius -X - debug mode
|
||
Теперь открываем второе окно терминала и вводим запрос
|
||
radtest sqltest testpwd localhost 18128 testing123
|
||
Если вывод команды такой:
|
||
Sending Access-Request of id 68 to 127.0.0.1 port 1812
|
||
User-Name = "sqltest"
|
||
User-Password = "testpwd"
|
||
NAS-IP-Address = 127.0.1.1
|
||
NAS-Port = 18128
|
||
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=68, length=20
|
||
То все впорядке.
|
||
|
||
Теперь нужно добавить Radius клиентов в файл /etc/freeradius/clients.conf
|
||
Пример добавления:
|
||
|
||
client 192.168.1.0/16 {
|
||
|
||
secret = secretpass
|
||
shortname = testclient
|
||
nastype= testdevice
|
||
}
|
||
****************************************************************************************************
|
||
Установка PostgreSQL 11.5 windows10 из https://www.enterprisedb.com/download-postgresql-binaries:
|
||
Скачал, создаю дирректорию хранения данных:
|
||
O:\MyDocuments\DataBases\postgresql-12.3-1-windows-x64-binaries\pgsql\bin\initdb.exe -D O:\MyDocuments\DataBases\Data_PostgreSQL_12.3
|
||
O:\MyDocuments\DataBases\postgresql-10.13-1-windows-x64-binaries\pgsql\bin\initdb.exe -D O:\MyDocuments\DataBases\Data_PostgreSQL_10.13
|
||
Потом создать BAT файл с тем текстом что отобразится при создании каталога базы
|
||
База данных создаётся не под пользователем postgres а под локальным пользователем igor
|
||
****************************************************************************************************
|
||
Установка PostgreSQL 14 ubuntu 22.04 или 24.04
|
||
|
||
sudo apt-get update
|
||
sudo apt-get install postgresql postgresql-contrib -y
|
||
Или так если нужно установить PostGIS
|
||
sudo apt-get install postgis
|
||
Для удаления PostGIS в месте с зависимыми пакетами:
|
||
sudo apt-get remove --auto-remove postgis
|
||
sudo apt-get purge postgis
|
||
Добавить русскую локаль если её нет:
|
||
sudo locale-gen ru_RU
|
||
sudo locale-gen ru_RU.UTF-8
|
||
sudo locale-gen kk_KZ
|
||
sudo locale-gen kk_KZ.UTF-8
|
||
Проверить какая локаль по умолчанию:
|
||
localectl status
|
||
И переконфигурировать локаль по умолчанию в ru_RU.UTF-8 (а то в mc могут быть кракозябры):
|
||
sudo dpkg-reconfigure locales
|
||
|
||
Для задания пароля в PostgreSQL выполнить:
|
||
sudo -u postgres psql
|
||
\password postgres
|
||
\q
|
||
Роль входа по умолчанию: postgres пароль можно поменять когда в pg_hba.conf установить trust
|
||
Задать пароль:
|
||
sudo -u postgres psql
|
||
postgres=> SELECT usename FROM pg_user;
|
||
postgres=> alter user postgres password 'PasSecrKey1';
|
||
postgres=> \q
|
||
|
||
Настройка postgresql.conf: http://www.lissyara.su/archive/1c_8.2+postgresql/
|
||
Создаём базу данных выполнив функцию:
|
||
CREATE DATABASE CCALM
|
||
WITH OWNER = postgres
|
||
TEMPLATE = template0
|
||
ENCODING = 'UTF8'
|
||
TABLESPACE = pg_default
|
||
LC_COLLATE = 'ru_RU.UTF-8'
|
||
LC_CTYPE = 'ru_RU.UTF-8'
|
||
CONNECTION LIMIT = -1;
|
||
|
||
Файл настроек postgresql: sudo mcedit /etc/postgresql/16/main/postgresql.conf
|
||
listen_addresses='*' #Разрешить подключение с внешки
|
||
#Для 9й версии разрешаем экранирующие символы \' и другие без спец символа "E" перед строкой
|
||
backslash_quote = on
|
||
escape_string_warning = off
|
||
standard_conforming_strings = off
|
||
Чтобы воводил двоичные данные по старому изменить на:
|
||
bytea_output = 'escape'
|
||
|
||
Настраиваю лимиты а то в саранче не выполняло большой запрос "Ошибка ввода/ввывода при отправке бэкенду"
|
||
|
||
Для создания нового пользователя выполнить:
|
||
sudo -u postgres psql
|
||
CREATE ROLE zholak LOGIN ENCRYPTED PASSWORD 'md5c0029083b93a3b16207a83b45e8a324a' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE REPLICATION;
|
||
|
||
Для подключения к определённой базе данных выполнить команду:
|
||
sudo -u postgres psql
|
||
\list or \l: для отображения всех баз
|
||
\connect zholak zholak
|
||
\dt для отображения всех таблиц
|
||
|
||
или написать со своим IP: host all all 2.133.238.240/24 trust
|
||
Для подключения с любых IP адресов в "sudo mcedit /etc/postgresql/16/main/pg_hba.conf" прописать:
|
||
host all all 0.0.0.0/0 md5
|
||
Либо с одного конкретного то: host all all 92.46.48.37/24 md5
|
||
А также поменять на listen_addresses = '*' в postgresql.conf
|
||
Потом перезагрузить postgres:
|
||
sudo service postgresql restart
|
||
sudo /etc/init.d/postgresql stop
|
||
sudo /etc/init.d/postgresql restart
|
||
sudo /etc/init.d/postgresql start
|
||
Проверить запущен или нет то:
|
||
sudo /etc/init.d/postgresql status
|
||
Посмотрель лог загрузки PostGreSQL:
|
||
dmesg |grep pg
|
||
Чтобы посмотреть чем занят порт выполнить команду:
|
||
sudo netstat -tap | grep 5432
|
||
|
||
Создать Backup (при переносе со старой на новую версию может быть не совместим для этого нужно делать бакам в текстовом формате: plain):
|
||
pg_dump bigfoott_shop>/home/igor/bigfoott_shop.sql --host=127.0.0.1 --username=bigfoott_root
|
||
pg_dump ASDC_Locust>/home/igor/ASDC_Locust.sql --host=127.0.0.1 --username=postgres
|
||
pg_dump zholak>/home/zholak/zholak.sql --host=127.0.0.1 --username=postgres
|
||
pg_dump stations>/home/administrator/pg_dump.sql --host=127.0.0.1 --username=postgres --format=custom
|
||
pg_dump transit>/home/administrator/transit.sql --host=127.0.0.1 --username=postgres
|
||
pg_dump weather>weather.backup --host=127.0.0.1 --username=postgres --format=custom
|
||
pg_dump transit>transit.backup --host=127.0.0.1 --username=postgres --format=custom
|
||
pg_dump weather_ru>weather_ru.backup --host=127.0.0.1 --username=postgres --format=custom
|
||
pg_dump -d CCALM -h 192.168.0.161 -U postgres -f O:\dumps\CCALM.sql
|
||
pg_dump --dbname=postgresql://postgres:PostPas1key@127.0.0.1:5432/ShopMaster | gzip > /mnt/disk1/backup/$(date +%Y-%m-%d).ShopMaster.gz
|
||
|
||
Востановить Dump из текстового файла:
|
||
psql ASDC_Locust < /home/igor/ASDC_Locustfcron.backup
|
||
psql -h 127.0.0.1 -U bigfoott_root -d bigfoott_shop_old2 < E:\dumps\bigfoottrade\dump.sql
|
||
psql -h 127.0.0.1 -U postgres -d monitoring < /home/igor/pg_dump.sql
|
||
psql -h 127.0.0.1 -U postgres -d transit_2024 < /home/administrator/transit.sql
|
||
psql -h 127.0.0.1 -U postgres -d bigfoot_shop < /home/igor/goods.sql
|
||
|
||
Создание SH скрипта для ежедневного бакапирования и архивации в ZIP файл:
|
||
/mnt/O_DRIVE/MyDocuments/DataBases/dumps/run.sh
|
||
#!/bin/sh
|
||
pg_dump --dbname=postgresql://postgres:A6dCgeDDWHbC@127.0.0.1:5432/Queue | gzip > /mnt/disk1/backup/$(date +%Y-%m-%d).Queue.gz
|
||
|
||
Для востановления через pg_restore (версии баз должны совпадать а то может не восстановиться):
|
||
su - postgres
|
||
pg_restore -U <username> -d <dbname> -1 <filename>.dump
|
||
pg_restore -U postgres -d zholak -1 /home/zholak/zholak_16.01.2019.backup
|
||
pg_restore -U postgres -d monitoring -1 /home/igor/stations_20200626.backup
|
||
pg_restore -U postgres -d transit_new -1 /home/administrator/temp/transit.backup
|
||
pg_restore -U postgres -d transit -1 /home/administrator/transit.backup
|
||
pg_restore --host=127.0.0.1 --username=postgres --dbname=transit_2024 --verbose /home/administrator/transit.backup
|
||
|
||
sudo -u postgres psql -d transit -f /tmp/transit.backup
|
||
|
||
Или из архива (первоначально задать trust на 127.0.0.1) так:
|
||
gunzip -c /var/www/dump.sql.gz | psql -h 127.0.0.1 -U bigfoott_root -d bigfoott_shop
|
||
|
||
****************************************************************************************************
|
||
Настройка отображения статистики для PostgreSQL:
|
||
https://habr.com/ru/articles/488968/
|
||
|
||
SELECT * FROM pg_stat_statements ORDER BY total_exec_time DESC;
|
||
SELECT * FROM pg_stat_activity
|
||
SELECT * FROM pg_stat_replication
|
||
SELECT * FROM pg_stat_all_tables
|
||
|
||
Полный список: https://postgrespro.ru/docs/postgrespro/9.5/monitoring-stats
|
||
|
||
Установить Prometheus сграфаной Grafana для PostgreSQL там по умолчанию есть набор настроек для сбора статистики с PostgreSQL
|
||
По мотивам: https://grafana.com/oss/prometheus/exporters/postgres-exporter/
|
||
По мотивам: https://www.youtube.com/watch?v=B_yz37CR1XU
|
||
****************************************************************************************************
|
||
Установка pgagent
|
||
sudo apt-get update
|
||
sudo apt-get install pgagent
|
||
Выполнить в консоли запрос:
|
||
psql -h localhost -U postgres
|
||
create extension pgagent;
|
||
\q
|
||
Для разрешения подключения откройте файл pg_hba.conf и замените строку на:
|
||
host all all 127.0.0.1/32 md5
|
||
|
||
Можно для теста запустить pgagent с повышенным уровнем логирования:
|
||
/usr/bin/pgagent -f -l 2 hostaddr=127.0.0.1 dbname=postgres user=postgres password=lelPfAtgQWhHYfy1SsHk
|
||
|
||
Если файла нет то пытаюсь его создать:
|
||
sudo mcedit /lib/systemd/system/pgagent.service
|
||
|
||
[Unit]
|
||
Description=PostgreSQL PgAgent Service
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=postgres
|
||
ExecStart=/usr/bin/pgagent -f hostaddr=127.0.0.1 dbname=postgres user=postgres password=PasSecrKey1
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
|
||
Проверяю что сервис был запущен:
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl enable pgagent
|
||
sudo service pgagent start
|
||
sudo systemctl status pgagent
|
||
|
||
|
||
Для проверки пробуем подключиться к базе данных
|
||
sudo -u postgres psql -h 127.0.0.1 -U postgres -d postgres
|
||
\q
|
||
|
||
Похоже что нужно ещё создать файл паролей так как агент не знает как подключаться:
|
||
sudo -u postgres touch /var/lib/postgresql/.pgpass
|
||
sudo -u postgres chmod 600 /var/lib/postgresql/.pgpass
|
||
sudo -u postgres mcedit /var/lib/postgresql/.pgpass
|
||
И прописать в него:
|
||
127.0.0.1:5432:postgres:postgres:PasSecrKey1
|
||
Где используется такой формат: hostname:port:database:username:password
|
||
Затем:
|
||
sudo systemctl enable pgagent
|
||
sudo service pgagent start
|
||
sudo service pgagent status
|
||
Посмотреть логи:
|
||
sudo journalctl -u pgagent
|
||
|
||
****************************************************************************************************
|
||
Для добавления автоматического бакапирования Postgresql базы *.backup создать скрипт:
|
||
|
||
|
||
****************************************************************************************************
|
||
Перенос базы PostgreSQL на другой диск: https://internet-lab.ru/postgresql_ubuntu_move
|
||
|
||
****************************************************************************************************
|
||
Установка PostGIS на PostgreSQL выше 9.0 версии:
|
||
sudo apt-get install postgis postgresql-9.3-postgis-2.1
|
||
Для 10й версии:
|
||
sudo apt install postgresql-10-postgis-2.4
|
||
sudo apt install postgresql-10-postgis-scripts
|
||
Для 12й версии:
|
||
sudo apt install postgresql-12-postgis-2.4
|
||
|
||
Создать базу данных и выполнть на ней следующие команды:
|
||
-- Enable PostGIS (includes raster)
|
||
CREATE EXTENSION postgis;
|
||
-- Enable Topology
|
||
CREATE EXTENSION postgis_topology;
|
||
-- fuzzy matching needed for Tiger
|
||
CREATE EXTENSION fuzzystrmatch;
|
||
-- rule based standardizer
|
||
CREATE EXTENSION address_standardizer;
|
||
-- example rule data set
|
||
CREATE EXTENSION address_standardizer_data_us;
|
||
-- Enable US Tiger Geocoder
|
||
CREATE EXTENSION postgis_tiger_geocoder;
|
||
|
||
У меня начало выдавать NOTICE: version "2.2.1" of extension "postgis_topology" is already installed и PostGIS перестал работать на моём PostgreSQL 9.5.17
|
||
Аказывается расширение кудато делось установил:
|
||
sudo apt-get install postgresql-9.5-postgis-2.2
|
||
****************************************************************************************************
|
||
Для добавления TOTP авторизации в Postgresql выполнить:
|
||
CREATE EXTENSION otp;
|
||
|
||
|
||
****************************************************************************************************
|
||
sudo apt-get install libpq-dev libpq-fe
|
||
Если есть несовместимость libpq-dev : Зависит: libpq5 (= 14.3-0ubuntu0.22.04.1) но 14.3-1.pgdg22.04+1 должен быть установлен
|
||
То удали ранее добавленный репозиторий: /etc/apt/sources.list.d/pgadmin4.list и обнови а потом попробуй установить заново libpq-dev
|
||
apt update
|
||
****************************************************************************************************
|
||
Установка phpPgAdmin через репозиторий:
|
||
sudo apt-get install phppgadmin
|
||
Можно открыть так: http://localhost/phppgadmin
|
||
Для доступа с любых ip адресов в файле: /etc/phppgadmin/apache.conf изменить на allow from all
|
||
Чтоб можно было залогинется под пользователем postgres меняем в:
|
||
/etc/phppgadmin/config.inc.php extra_login_security в false
|
||
Если phpphadmin не дает залогиниться и пишет "Неверный логин", нужно в postgresql.conf прописать $conf['servers'][0]['host'] = 'localhost';
|
||
|
||
Другой вариант скачать с сайта последнюю версию с "http://phppgadmin.sourceforge.net/doku.php".
|
||
****************************************************************************************************
|
||
Установка pgAdmin4 в Linux Mint 20.04 (inxi -S) Проверить версию линукса: cat /etc/os-release у меня выдало: NAME="Linux Mint" VERSION="20.3 (Una)"
|
||
|
||
Проверить что не записан левый репозиторий для phppgadmin в /ect/opt/
|
||
curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
|
||
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/bionic pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
|
||
sudo apt install pgadmin4
|
||
|
||
И не запустился сервер оболочка пытается стартануть а сервер нет...
|
||
|
||
sudo curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
|
||
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/focal pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
|
||
sudo apt install pgadmin4
|
||
|
||
Тоже не заработал
|
||
|
||
Попробовать так: https://www.tecmint.com/install-postgresql-with-pgadmin4-on-linux-mint/
|
||
|
||
****************************************************************************************************
|
||
Балансировщик назрузки и потоковая репликация:
|
||
Pgpool-II https://www.youtube.com/watch?v=qpxKlH7DBjU сервер с высокой доступностью
|
||
https://ritorika.com.ua/dokument/6/pgpool-chto-jeto
|
||
****************************************************************************************************
|
||
Мониторинг запросов postgresql
|
||
|
||
|
||
|
||
****************************************************************************************************
|
||
Проверить версию OpenSSL: openssl version -v
|
||
Устанавливаю из исходников:
|
||
wget https://www.openssl.org/source/openssl-3.0.1.tar.gz
|
||
tar xzvf openssl-3.0.1.tar.gz
|
||
cd openssl-3.0.1
|
||
./config
|
||
make
|
||
sudo make install
|
||
ln -s libssl.so.3 libssl.so
|
||
sudo ldconfig
|
||
openssl version -a
|
||
Если выдало что не можжет найти: openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or director
|
||
Для этого добавить путь к каталогу библиотек: sudo mcedit /etc/ld.so.conf.d/libc.conf и вставить: /usr/local/lib64 и запустить sudo ldconfig
|
||
Также нужно добавить путь при компиляции: sudo export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig
|
||
Проверить путь:
|
||
pkg-config --cflags openssl
|
||
pkg-config --variable pc_path pkg-config
|
||
Не знал как указать путь на /usr/local/lib64/pkgconfig поэтому скопировал в /usr/local/lib/pkgconfig
|
||
|
||
Если нужно установить OpenSSL для разработчика из репозитория (но там старая нужна > 3.0):
|
||
apt-get update
|
||
sudo apt-get install libssl-dev
|
||
|
||
****************************************************************************************************
|
||
Установить ProFTPD для доступа через FTPS с сохранением пользователей в PostgreSQL по подсказки нейросети
|
||
sudo apt-get update
|
||
sudo apt-get install proftpd-basic proftpd-mod-pgsql proftpd-mod-crypto postgresql postgresql-contrib openssl
|
||
|
||
Создание сертификата TLS:
|
||
sudo mkdir /etc/proftpd/ssl
|
||
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/proftpd/ssl/proftpd.key -out /etc/proftpd/ssl/proftpd.crt
|
||
|
||
Включаем модуль в:
|
||
sudo nano /etc/proftpd/modules.conf
|
||
Раскоментив строку:
|
||
LoadModule mod_tls.c
|
||
|
||
Настройка ProFTPD для использования TLS:
|
||
sudo mcedit /etc/proftpd/tls.conf
|
||
|
||
Добавьте или измените следующие строки:
|
||
|
||
<IfModule mod_tls.c>
|
||
TLSEngine on
|
||
TLSLog /var/log/proftpd/tls.log
|
||
TLSProtocol TLSv1.2
|
||
|
||
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.crt
|
||
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key
|
||
TLSOptions NoCertRequest
|
||
|
||
TLSVerifyClient off
|
||
TLSRequired on
|
||
|
||
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:!SSLv3
|
||
</IfModule>
|
||
|
||
Включение TLS в основной конфигурации ProFTPD:
|
||
|
||
sudo mcedit /etc/proftpd/proftpd.conf
|
||
|
||
Добавьте или измените следующие строки:
|
||
|
||
Include /etc/proftpd/tls.conf
|
||
|
||
Создаём и меняем базу данных
|
||
|
||
CREATE DATABASE ftpusers;
|
||
|
||
CREATE TABLE users (
|
||
id SERIAL PRIMARY KEY,
|
||
name VARCHAR(30) NOT NULL UNIQUE,
|
||
password VARCHAR(128) NOT NULL,
|
||
uid INT NOT NULL,
|
||
gid INT NOT NULL,
|
||
homedir VARCHAR(255) NOT NULL,
|
||
shell VARCHAR(255) NOT NULL
|
||
);
|
||
|
||
INSERT INTO users (name, password, uid, gid, homedir, shell) VALUES ('<username>', MD5('<password>'), 1001, 1001, '/home/<username>', '/bin/false');
|
||
INSERT INTO users (name, password, uid, gid, homedir, shell) VALUES ('administrator', MD5('administrator'), 1001, 1001, '/home/administrator', '/bin/false');
|
||
|
||
CREATE USER proftpd WITH PASSWORD 'ReULkD8M';
|
||
GRANT ALL PRIVILEGES ON DATABASE ftpusers TO proftpd;
|
||
|
||
Включаем модуль в:
|
||
sudo nano /etc/proftpd/modules.conf
|
||
Раскоментив строку:
|
||
LoadModule mod_sql.c
|
||
LoadModule mod_sql_postgres.c
|
||
LoadModule mod_sql_passwd.c
|
||
|
||
Редактируем:
|
||
sudo nano /etc/proftpd/pgsql.conf
|
||
|
||
Настройка ProFTPD для использования PostgreSQL:
|
||
|
||
sudo mcedit /etc/proftpd/pgsql.conf
|
||
|
||
Вставить следующий код:
|
||
|
||
<IfModule mod_sql.c>
|
||
SQLEngine on
|
||
SQLBackend pgsql
|
||
SQLAuthenticate users
|
||
|
||
SQLConnectInfo ftpusers@10.101.1.6:5432 proftpd ReULkD8M
|
||
|
||
SQLUserInfo users name password uid gid homedir shell
|
||
|
||
# Логирование SQL-запросов
|
||
SQLLogFile /var/log/proftpd/sql.log
|
||
SQLLog ALL
|
||
|
||
# Указание на использование открытых паролей
|
||
SQLAuthTypes OpenPlaintext
|
||
|
||
</IfModule>
|
||
|
||
|
||
Добавляем ссылку на созданную настройку:
|
||
sudo nano /etc/proftpd/proftpd.conf
|
||
|
||
Добавилв следующее содержимое:
|
||
|
||
Include /etc/proftpd/pgsql.conf
|
||
|
||
Теперь можно перезапустить proftpd:
|
||
sudo systemctl restart proftpd
|
||
|
||
Проверяем что пользователи успешно считались из базы даныз командой:
|
||
sudo mcedit -f /var/log/proftpd/sql.log
|
||
|
||
****************************************************************************************************
|
||
Установить ProFTPD http://sys-admin.kz/os/nix/539-centod-install-proftpd.html для доступа через FTPS
|
||
|
||
Настраиваем для пользователя www-data
|
||
|
||
sudo apt-get install proftpd-basic openssl
|
||
Проверить какие модули установленны:
|
||
proftpd -vv
|
||
sudo apt-get remove --purge proftpd-basic
|
||
|
||
В настройках mcedit /etc/proftpd/proftpd.conf изменить:
|
||
UseIPv6 off
|
||
DefaultRoot ~
|
||
ServerIdent on "FTP Server ready."
|
||
RequireValidShell off
|
||
AuthUserFile /etc/proftpd/ftpd.passwd
|
||
|
||
Для создания нового виртуального пользователя "tester" "firsttester" в файле выполнить комманду (uid и gid должны быть как у пользователя www-data смотри: cat /etc/passwd и cat /etc/group)
|
||
|
||
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=tester --uid=33 --gid=33 --home=/var/www/www.dirt.kz --shell=/bin/false
|
||
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=ftpzhol --uid=33 --gid=33 --home=/mnt/ssd/ftp --shell=/bin/false
|
||
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=zatochnik --uid=33 --gid=33 --home=/var/www/www.zatochnik.pro --shell=/bin/false
|
||
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=evak --uid=33 --gid=33 --home=/var/www/evak --shell=/bin/false
|
||
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=apk --uid=33 --gid=33 --home=/var/www/istransit.kz/apk --shell=/bin/false
|
||
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=rebezov.a --uid=33 --gid=33 --home=/var/www/test2.istransit.kz --shell=/bin/false
|
||
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=rebezov.a --uid=33 --gid=33 --home=/opt/www/istransit.kz --shell=/bin/false
|
||
Задал пароль для apk пользователя: vooOtKBb7bckcNh
|
||
Задал пароль для rebezov.a : BU39kb2
|
||
|
||
задал пароль:
|
||
zoto!23+
|
||
|
||
Назначить права на файл:
|
||
sudo chown proftpd:nogroup /etc/proftpd/ftpd.passwd
|
||
Сменить пароль: ftpasswd --passwd --name=tester --change-password
|
||
|
||
Перезапустить: /etc/init.d/proftpd restart
|
||
|
||
Задать права на папку: sudo chown -R 33:33 /var/www
|
||
Задать права на папку: sudo chown -R 33:33 /opt/www
|
||
|
||
|
||
******************************************************
|
||
Для настройки SSL для proftpd Выполнить в консоли:
|
||
|
||
Включаем модуль в:
|
||
sudo mcedit /etc/proftpd/modules.conf
|
||
Раскоментив строку:
|
||
LoadModule mod_tls.c
|
||
|
||
Проверить какие модули установленны, если нет tls то дальше не выполнять:
|
||
proftpd -vv
|
||
|
||
sudo mkdir /etc/proftpd/ssl
|
||
sudo openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem
|
||
sudo chown -R proftpd:nogroup /etc/proftpd/ssl
|
||
Потом в /etc/proftpd/proftpd.conf раскоментируем строку Include /etc/proftpd/tls.conf
|
||
И откоректируем этот файл так:
|
||
|
||
TLSEngine on
|
||
TLSLog /var/log/proftpd/tls.log
|
||
TLSProtocol SSLv23 TLSv1
|
||
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
|
||
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
|
||
TLSOptions NoCertRequest
|
||
TLSVerifyClient off
|
||
TLSRequired on
|
||
|
||
Перезапустить: /etc/init.d/proftpd restart
|
||
****************************************************************************************************
|
||
На Ubuntu включить файрвол брандмауэр firewall:
|
||
http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/firewall
|
||
Желательно сменить порт для ssh допустим на 2222
|
||
|
||
sudo ufw allow ssh
|
||
sudo ufw enable
|
||
sudo ufw allow 80/tcp
|
||
sudo ufw allow 8080/tcp
|
||
sudo ufw allow 443/tcp
|
||
sudo ufw allow 10050/tcp
|
||
sudo ufw allow 50000:50010/tcp
|
||
sudo ufw allow 5432/tcp
|
||
sudo ufw allow 3219/tcp
|
||
sudo ufw allow 3221/tcp
|
||
|
||
Эти настройки были до переустановки сервера
|
||
443/tcp ALLOW Anywhere
|
||
80/tcp ALLOW Anywhere
|
||
10000/tcp ALLOW 192.168.0.0/24
|
||
3306/tcp ALLOW 192.168.0.0/24
|
||
10050/tcp ALLOW 192.168.0.0/24
|
||
10051/tcp ALLOW 192.168.0.0/24
|
||
2222/tcp ALLOW Anywhere
|
||
8080/tcp ALLOW Anywhere
|
||
5432/tcp ALLOW Anywhere
|
||
1812/udp ALLOW Anywhere
|
||
1813/udp ALLOW Anywhere
|
||
3799/udp ALLOW Anywhere
|
||
Эти порты для терминалов:
|
||
3211/tcp ALLOW Anywhere
|
||
3212/tcp ALLOW Anywhere
|
||
3213/tcp ALLOW Anywhere
|
||
3214/tcp ALLOW Anywhere
|
||
3215/tcp ALLOW Anywhere
|
||
3216/tcp ALLOW Anywhere
|
||
3217/tcp ALLOW Anywhere
|
||
3218/tcp ALLOW Anywhere
|
||
3219/tcp ALLOW Anywhere
|
||
3220/tcp ALLOW Anywhere
|
||
3221/tcp ALLOW Anywhere
|
||
|
||
|
||
Для freeredius:
|
||
sudo ufw allow 1812/udp
|
||
sudo ufw allow 1813/udp
|
||
sudo ufw allow 3799/udp
|
||
|
||
sudo ufw deny ftps
|
||
sudo ufw delete
|
||
deny 80/tcp
|
||
sudo ufw allow from 192.168.0.89 to any port 3306
|
||
sudo ufw allow from 192.168.0.0/24 to any port 2222 proto tcp
|
||
sudo ufw delete from 192.168.0.0/24 to any port 5432 proto tcp
|
||
Для отключения:
|
||
sudo ufw disable
|
||
Для получения списка включнных
|
||
sudo ufw status
|
||
****************************************************************************************************
|
||
https://pro-gram.ru/bridge-utils-ubuntu-server-18-04.html
|
||
Устанавливаю ПО для сетевого моста:
|
||
sudo apt install bridge-utils
|
||
Смотрим интерфейсы:
|
||
ifconfig -a
|
||
Открываю: sudo nano /etc/netplan/50-cloud-init.yaml
|
||
Файлик для жолака есть в папке "Заливка"
|
||
****************************************************************************************************
|
||
Отключить IP v6: http://www.linuxrussia.com/2013/05/disable-ipv6-ubuntu.html
|
||
****************************************************************************************************
|
||
Настройка почты на POSTFIX(агент передачи почты) И DOVECOT на основе https://www.alex-math.ru/administrirovaniye/ustanovka-postfix-dovecot-posfixadmin-na-ubuntu-20-04/ и https://www.youtube.com/watch?v=_pbH7GsVTrw&t=649s и https://www.youtube.com/watch?v=VptKRBVeCMo
|
||
********** Устанавливаю Postfixadmin **********
|
||
Для начала создаю базу в PostgreSQL с базой mail и пользователем mailreader и паролем major!reader1
|
||
cd /var/www/html
|
||
sudo wget https://yer.dl.sourceforge.net/project/postfixadmin/postfixadmin-3.3.8/PostfixAdmin%203.3.8.tar.gz
|
||
sudo tar xzvf "PostfixAdmin 3.3.8.tar.gz"
|
||
Создаю временный каталог в /var/www/html/PostfixAdmin/templates_c
|
||
правлю способ подключения к базе:
|
||
sudo mcedit /srv/http/PostfixAdmin/config.inc.php
|
||
На это:
|
||
$CONF['configured'] = true;
|
||
|
||
$CONF['database_type'] = 'pgsql';
|
||
$CONF['database_host'] = 'localhost';
|
||
$CONF['database_user'] = 'mailreader';
|
||
$CONF['database_password'] = 'major!reader1';
|
||
$CONF['database_name'] = 'mail';
|
||
|
||
$CONF['emailcheck_resolve_domain'] = 'NO';
|
||
|
||
Также нужно поднастроить апачи добавив следующтй код в: sudo mcedit /etc/apache2/apache2.conf ниже того что указывает на <Directory /var/www/>
|
||
Alias /PostfixAdmin/ "/var/www/html/PostfixAdmin/public/"
|
||
<Directory "/var/www/html/PostfixAdmin/public/">
|
||
Options FollowSymLinks
|
||
AllowOverride None
|
||
Allow from all
|
||
Order allow,deny
|
||
</Directory>
|
||
Перезагружаю:
|
||
systemctl restart apache2.service
|
||
На последок:
|
||
sudo chown www-data:www-data -R /var/www/
|
||
sudo chown www-data:www-data -R /opt/app_api_mobile_v2/mobile_v2
|
||
Теперь можно открывать сайт по IP: http://77.240.38.108/PostfixAdmin/setup.php
|
||
Просит задать пароль, задал такой: 11qazxsw22
|
||
Результат генерации: $CONF['setup_password'] = '$2y$10$ySo40K0pOn0Q5jLcBoK1yua5JaGXI.NIzTmUVBn1dreTaP2RkZ2My';
|
||
И добавляем эту стору в: sudo mcedit /srv/http/PostfixAdmin/config.inc.php
|
||
Потом обновляем страницу.
|
||
Добавляем администратора введя пароль 11qazxsw22 емайл в качестве логина irigm@mail.ru и пароль: 33edcvfr44
|
||
Можно взглянуть базу там должны создаться таблицы
|
||
|
||
Теперь осталось пойти на Postfixadmin, завести сначала почтовый домен, потом ящик и протестировать нашу почтовую систему, например, с помощью Thunderbird. Отправляем письма себе, другому пользователю в нашей системе. Потом пробуем послать себе письма с Gmail, Yandex, Mail.ru и наблюдаем за поведением системы, изучая логи. Основная настройка почты завершена. Теперь необходимо настроить DKIM, SPF, чтобы другие почтовые системы воспринимали нас как доверенных отправителей. Но об этом я расскажу в другом посте.
|
||
|
||
********** Устанавливаю Postfix **********
|
||
sudo apt-get update
|
||
sudo apt install postfix postfix-pgsql dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-pgsql mailutils postgresql
|
||
Ссохраняю оригинальный конфигурационный файл:
|
||
cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
|
||
Конфигурирую:
|
||
sudo dpkg-reconfigure postfix
|
||
Настраиваю так:
|
||
General type of mail configuration?: Internet Site
|
||
System mail name: example.com (не mail.example.com)
|
||
Root and postmaster mail recipient: имя пользователя основной учетной записи Linux (в наших примерах sammy)
|
||
Other destinations to accept mail for: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
|
||
Force synchronous updates on mail queue?: No
|
||
Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
|
||
Mailbox size limit: 0
|
||
Local address extension character: +
|
||
Internet protocols to use: all
|
||
|
||
Можно взглянуть на настройки так: sudo mcedit /etc/postfix/main.cf
|
||
|
||
Через pgAdmin создаю нового пользователя mailreader с паролем major!reader1
|
||
CREATE DATABASE mail WITH OWNER mailreader;
|
||
Добавляю: sudo mc edit /etc/postgresql/12/main/pg_hba.conf:
|
||
local postfix postfix md5
|
||
Перезагружаю базу данных:
|
||
service postgresql reload
|
||
|
||
Создаём файл для обращения к базе с алиасами: sudo mcedit /etc/postfix/pgsql_virtual_alias_maps.cf https://www.alex-math.ru/administrirovaniye/ustanovka-postfix-dovecot-posfixadmin-na-ubuntu-20-04/
|
||
user = mailreader
|
||
password = major!reader1
|
||
hosts = localhost
|
||
dbname = mail
|
||
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
|
||
|
||
Создаём файл для получения информации по виртуальным доменам: sudo mcedit /etc/postfix/pgsql_virtual_domains_maps.cf
|
||
user = mailreader
|
||
password = major!reader1
|
||
hosts = localhost
|
||
dbname = mail
|
||
query = SELECT domain FROM domain WHERE domain='%u'
|
||
|
||
Создаём файл для получения информации о почтовых ящиках: sudo mcedit /etc/postfix/pgsql_virtual_mailbox_maps.cf
|
||
user = mailreader
|
||
password = major!reader1
|
||
hosts = localhost
|
||
dbname = mail
|
||
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
|
||
|
||
Прописываем ранее созданные файлы в: sudo mcedit /etc/postfix/main.cf добавив строчки:
|
||
virtual_mailbox_base = /home/mail
|
||
virtual_alias_maps = proxy:pgsql:/etc/postfix/pgsql_virtual_alias_maps.cf
|
||
virtual_mailbox_domains = proxy:pgsql:/etc/postfix/pgsql_virtual_domains_maps.cf
|
||
virtual_mailbox_maps = proxy:pgsql:/etc/postfix/pgsql_virtual_mailbox_maps.cf
|
||
virtual_minimum_uid = 1024
|
||
virtual_uid_maps = static:1024
|
||
virtual_gid_maps = static:1024
|
||
virtual_transport = dovecot
|
||
dovecot_destination_recipient_limit = 1
|
||
|
||
Настройки безопасного соединения (также просто вставил в конец файла):
|
||
|
||
smtpd_sasl_auth_enable = yes
|
||
smtpd_sasl_exceptions_networks = $mynetworks
|
||
smtpd_sasl_security_options = noanonymous
|
||
broken_sasl_auth_clients = yes
|
||
smtpd_sasl_type = dovecot
|
||
smtpd_sasl_path = private/auth
|
||
smtpd_tls_cert_file = /etc/ssl/certs/bigfoottrade_kz.crt
|
||
smtpd_tls_key_file = /etc/ssl/private/bigfoottrade_kz.key
|
||
|
||
smtpd_tls_security_level = encrypt
|
||
Похоже опции что ниже устарели:
|
||
smtpd_use_tls = yes
|
||
smtp_use_tls = yes
|
||
smtp_tls_security_level = encrypt
|
||
smtp_enforce_tls=yes
|
||
|
||
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
|
||
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
|
||
smtp_tls_protocols = !SSLv2, !SSLv3
|
||
smtpd_tls_protocols = !SSLv2, !SSLv3
|
||
|
||
tls_preempt_cipherlist = yes
|
||
smtpd_tls_mandatory_ciphers = high
|
||
tls_high_cipherlist = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:ADH-AES256-GCM-SHA384:ADH-AES256-SHA256:ECDH-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384:ECDH-RSA-AES256-SHA384:ECDH-ECDSA-AES256-SHA384:AES256-GCM-SHA384:AES256-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:ADH-AES128-GCM-SHA256:ADH-AES128-SHA256:ECDH-RSA-AES128-GCM-SHA256:ECDH-ECDSA-AES128-GCM-SHA256:ECDH-RSA-AES128-SHA256:ECDH-ECDSA-AES128-SHA256:AES128-GCM-SHA256:AES128-SHA256:NULL-SHA256
|
||
|
||
smtpd_tls_auth_only = yes
|
||
smtpd_helo_required = yes
|
||
smtp_tls_security_level = may
|
||
smtp_tls_ciphers = export
|
||
smtp_tls_loglevel = 1
|
||
smtp_tls_CApath = /etc/ssl/certs
|
||
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
|
||
|
||
Снимаем комментарии со следующих строк, или дописываем их при необходимости: sudo mcedit /etc/postfix/master.cf (просто добавил в конец файла)
|
||
|
||
submission inet n - n - - smtpd
|
||
-o syslog_name=postfix/submission
|
||
-o smtpd_tls_security_level=may
|
||
-o smtpd_sasl_auth_enable=yes
|
||
-o smtpd_sasl_type=dovecot
|
||
-o smtpd_sasl_path=/var/spool/postfix/private/auth
|
||
-o smtpd_sasl_security_options=noanonymous
|
||
-o smtpd_sasl_local_domain=$myhostname
|
||
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
|
||
-o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
|
||
-o milter_macro_daemon_name=ORIGINATING
|
||
|
||
smtps inet n - n - - smtpd
|
||
-o syslog_name=postfix/smtps
|
||
-o smtpd_tls_wrappermode=yes
|
||
-o smtpd_sasl_auth_enable=yes
|
||
-o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
|
||
|
||
dovecot unix - n n - - pipe
|
||
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
|
||
|
||
Проверяю на наличие ошибок:
|
||
sudo postfix check
|
||
|
||
В конфигурационном файле прописывается список дорменов которых обслуживает данный агент доставки.
|
||
sudo mcedit /etc/postfix/main.cf
|
||
Примерно таокое:
|
||
mydestination = $myhostname, your_domain, localhost.com, , localhost
|
||
|
||
Перезапускаем:
|
||
sudo systemctl restart postfix
|
||
********** Настройка dovecot the Secure IMAP server **********
|
||
Теперь устанавливаю и настраиваю Dovecot:
|
||
sudo apt install -y dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd
|
||
Создаю пользователя и каталог
|
||
sudo adduser --system --no-create-home --uid 1024 --group --disabled-password --disabled-login --gecos 'dovecot virtual mail user' vmail
|
||
mkdir /home/mail
|
||
chown vmail:vmail /home/mail
|
||
chmod 700 /home/mail
|
||
Смотрим что мы создали:
|
||
groups vmail
|
||
|
||
Настраиваем способ хранения сообщений: sudo mcedit /etc/dovecot/conf.d/10-mail.conf
|
||
mail_location = maildir:/home/mail/%d/%u/
|
||
|
||
|
||
Настраиваем слушателя аутентификации: sudo mcedit /etc/dovecot/conf.d/10-master.conf
|
||
service auth {
|
||
unix_listener auth-userdb {
|
||
mode = 0600
|
||
user = vmail
|
||
group = vmail
|
||
}
|
||
unix_listener /var/spool/postfix/private/auth {
|
||
mode = 0666
|
||
user = postfix
|
||
group = postfix
|
||
}
|
||
}
|
||
|
||
Настраиваем аутентификацию в Dovecot: sudo mcedit /etc/dovecot/conf.d/10-auth.conf
|
||
Комментируем одну строку, снимаем комментарий с другой.
|
||
#!include auth-system.conf.ext
|
||
!include auth-sql.conf.ext
|
||
|
||
Настраиваем шифрование Dovecot: sudo mcedit /etc/dovecot/conf.d/10-ssl.conf
|
||
ssl = required
|
||
ssl_cert = </etc/haproxy/ssl/bigfoottrade_kz.pem
|
||
ssl_key = </etc/haproxy/ssl/bigfoottrade_kz.pem
|
||
|
||
|
||
Указываем Dovecot автоматически создавать каталоги при первом подключении клиента: sudo mcedit /etc/dovecot/conf.d/15-lda.conf
|
||
lda_mailbox_autocreate = yes
|
||
|
||
Теперь настройка подключения к базе данных. Открываем файл: sudo mcedit /etc/dovecot/conf.d/auth-sql.conf.ext
|
||
|
||
passdb {
|
||
driver = sql
|
||
args = /etc/dovecot/dovecot-sql.conf.ext
|
||
}
|
||
userdb {
|
||
driver = sql
|
||
args = /etc/dovecot/dovecot-sql.conf.ext
|
||
}
|
||
|
||
|
||
Создаём файл с настройками для работы с PostgreSQL: sudo mcedit /etc/dovecot/dovecot-sql.conf.ext
|
||
driver = pgsql
|
||
connect = host=localhost dbname=mail user=mailreader password=major!reader1
|
||
default_pass_scheme = MD5-CRYPT
|
||
password_query = SELECT password FROM mailbox WHERE username = '%u'
|
||
user_query = SELECT maildir, 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
|
||
user_query = SELECT CONCAT('/home/mail/',LOWER(domain),'/',LOWER(maildir)),1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
|
||
|
||
Наконец, указываем интерфейсы, на которых будет слушать наш Dovecot: sudo mcedit /etc/dovecot/dovecot.conf
|
||
listen = *
|
||
|
||
Также добавить в этот файл следующую настройку:
|
||
service stats {
|
||
unix_listener stats-reader {
|
||
user = vmail
|
||
group = vmail
|
||
mode = 0660
|
||
}
|
||
|
||
unix_listener stats-writer {
|
||
user = vmail
|
||
group = vmail
|
||
mode = 0660
|
||
}
|
||
}
|
||
|
||
|
||
Настройка Dovecot завершена. Осталось сгенерировать сертификаты или получить их с помощью Let's Encrypt. Для тестовых целей сгенерируем самоподписанные сертификаты. Мы их положим в /etc/postfix:
|
||
openssl req -new -x509 -days 730 -nodes -out /etc/postfix/public.pem -keyout /etc/postfix/private.pem -subj "/C=RU/ST=Msk/L=Msk/O=Local/OU=Mail/CN=fedor.bigfoottrade.kz"
|
||
|
||
Добавляем пользователю "dovecot" группу "mail":
|
||
usermod -a -G dovecot mail
|
||
usermod -a -G vmail mail
|
||
|
||
sudo systemctl enable dovecot
|
||
sudo systemctl start dovecot
|
||
|
||
Теперь можно тестировать:
|
||
Сначала необходимо убедиться в том, что почта доходит до нового ящика. Сделать это можно с помощью тестового письма:
|
||
echo "Test mail" | mail -s "Test mail" admin@mqtt.kz
|
||
Сообщение должно появиться в папке /home/mail/mqtt.kz/admin/new/. Если письма нет, проверьте лог Postfix:
|
||
tail -f /var/log/mail.log
|
||
|
||
В настройках DNS настроил А запись на только что настроенный сервер:
|
||
mail.mqtt.kz
|
||
Также нужно настроить dkim чтобы почта не попадала в спам, записав открытый ключ шифрования в TXT запсь
|
||
|
||
********** Настройка dkim ********** https://fornex.com/ru/help/dkim-postfix/
|
||
sudo apt-get install opendkim opendkim-tools
|
||
mkdir -p /etc/postfix/dkim && cd /etc/postfix/dkim
|
||
opendkim-genkey -D /etc/postfix/dkim/ -d mqtt.kz -s mail
|
||
opendkim-genkey -D /etc/postfix/dkim/ -d geovizor.com -s mail
|
||
|
||
mv mail.private mail.mqtt.kz.private
|
||
mv mail.private mail.geovizor.com.private
|
||
|
||
mv mail.txt mail.mqtt.kz.txt
|
||
mv mail.txt mail.geovizor.com.txt
|
||
Создаём файл mcedit keytable и записываем в него ключи
|
||
#имя_ключа домен:селектор:/путь/до/ключа
|
||
mail._domainkey.mqtt.kz mqtt.kz:mail:/etc/postfix/dkim/mail.mqtt.kz.private
|
||
mail._domainkey.geovizor.com geovizor.com:mail:/etc/postfix/dkim/mail.geovizor.com.private
|
||
Создаём файл mcedit signingtable и записывает что чем подписывать
|
||
#домен имя ключа
|
||
*@mqtt.kz mail._domainkey.mqtt.kz
|
||
*@geovizor.com mail._domainkey.geovizor.com
|
||
Задаю права доступа:
|
||
chown root:opendkim *
|
||
chmod u=rw,g=r,o= *
|
||
chmod g+r /etc/postfix/dkim/
|
||
Смотрим содержимое TXT файла для записи в домен
|
||
cat /etc/postfix/dkim/mail.mqtt.kz.txt
|
||
cat /etc/postfix/dkim/mail.geovizor.com.txt
|
||
И добавляю в DNS на хостинг:
|
||
Name: mail._domainkey.mqtt.kz
|
||
Text: v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtrObJxHaUBVtR4XzNuFzoa449K3l1z6+Mi4e83rFbBYmBZRYjiJn5h2PeiK1i2IpSaEKn32AlPy5gB7Ej41Fhg6LXswwRhhfvz8vClhRbUKT4I8oPBj9WZr7+4aohG1Vcks1q9cgmwdcGN+6qhKq/DJ+AC1TirNrEpSvR6JAqd4G70aJazI9su0bY5cbIv0pZGezvt+2pwJw6xpb501KudTFE8FTHxB51aLkgYS257MkovSu+qlVzPjoOsZcOY7hQtF8WB/Czod0QN05Ob/N3Qc/k2E4tpvxgokLXdYl/8KBMLMX9cRfIVbv+atuo59VFKHYIGD8Kom6akORkFeIlQIDAQAB
|
||
|
||
Заменяем все настройки на то что ниже: sudo mcedit /etc/opendkim.conf
|
||
AutoRestart Yes
|
||
AutoRestartRate 10/1h
|
||
PidFile /var/run/opendkim/opendkim.pid
|
||
Mode sv
|
||
Syslog yes
|
||
SyslogSuccess yes
|
||
LogWhy yes
|
||
UserID opendkim:opendkim
|
||
Socket inet:8891@localhost
|
||
Umask 022
|
||
Canonicalization relaxed/relaxed
|
||
Selector default
|
||
MinimumKeyBits 1024
|
||
KeyFile /etc/postfix/dkim/${MAIL_DOMAIN}.private
|
||
KeyTable /etc/postfix/dkim/keytable
|
||
SigningTable refile:/etc/postfix/dkim/signingtable
|
||
|
||
|
||
Добавляем в конец: sudo mcedit /etc/postfix/main.cf
|
||
milter_default_action = accept
|
||
milter_protocol = 2
|
||
smtpd_milters = inet:localhost:8891
|
||
non_smtpd_milters = inet:localhost:8891
|
||
|
||
sudo systemctl start opendkim
|
||
sudo systemctl enable opendkim
|
||
service opendkim restart
|
||
service postfix restart
|
||
|
||
********** Настройка SPF **********
|
||
Например, SPF-запись «example.com. TXT «v=spf1 +a +mx -all»» говорит о том, что отправлять письма от имени домена «example.com» могут сервера, указанные в A и MX-записях этого домена, а письма, отправленные от других серверов должны быть удалены (Fail).
|
||
Содержимое TXT файла для записи в домен
|
||
Имя домена пустое:
|
||
Содержимое: v=spf1 +a +mx -all
|
||
|
||
|
||
********** Настройка DMARC https://www.unisender.com/ru/glossary/dmarc/**********
|
||
Содержимое TXT файла для записи в домен
|
||
Имя домена: _dmarc
|
||
Содержимое: v=DMARC1; p=none;
|
||
|
||
!!! Для тестирования сервера на прохождение спам фильтра пишем письмо на https://www.mail-tester.com/ или https://spamtest.smtp.bz !!!
|
||
********** web интерфейс для postfix — Roundcube **********
|
||
cd /var/www/html
|
||
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz
|
||
tar xzvf roundcubemail-1.6.5-complete.tar.gz
|
||
chown -R www-data:www-data /var/www/html/Roundcube
|
||
sudo apt-get install aspell aspell-en dbconfig-common fonts-glyphicons-halflings javascript-common libaspell15 libjs-bootstrap libjs-bootstrap4 libjs-codemirror libjs-jquery libjs-jquery-minicolors libjs-jquery-ui libjs-jstimezonedetect libjs-popper.js libjs-sizzle node-jquery php-auth-sasl php-mail-mime php-masterminds-html5 php-net-sieve php-net-smtp php-net-socket php-pspell php7.4-pspell
|
||
https://bigfoottrade.kz/Roundcube/installer/
|
||
language — ru_RU
|
||
Предварительно создать базу:
|
||
https://bigfoottrade.kz/Roundcube
|
||
http://77.240.38.108/Roundcube
|
||
****************************************************************************************************
|
||
Установка sendmail для почты на php
|
||
sudo apt-get install php-mail
|
||
sudo apt-get install sendmail
|
||
sudo sendmailconfig
|
||
Проверить доменное имя:
|
||
sudo mcedit /etc/hosts
|
||
Настраиваем PHP:
|
||
sudo mcedit /etc/php/8.1/apache2/php.ini
|
||
Прописав:
|
||
sendmail_path = /usr/sbin/sendmail -t -i
|
||
Или если используем ssmtp то (ниже есть настройка для внешнего почтового сервера):
|
||
sendmail_path = /usr/sbin/ssmtp -t
|
||
|
||
Перезагружаем апач:
|
||
sudo service apache2 restart
|
||
****************************************************************************************************
|
||
Настройка переадресации почты:
|
||
sudo apt-get install postfix
|
||
В файл /etc/postfix/main.cf
|
||
recipient_bcc_maps = hash:/etc/postfix/virtual
|
||
В файл /etc/postfix/virtual записать:
|
||
@bigfoottrade.kz irigm@mail.ru
|
||
@bigfoottrade.kz instruments@asia.com
|
||
поле чего:
|
||
postmap /etc/postfix/virtual
|
||
postfix reload
|
||
Также добавить в фаирволл:
|
||
sudo ufw allow Postfix
|
||
sudo ufw allow 'Postfix SMTPS'
|
||
|
||
sudo ufw deny Postfix
|
||
sudo ufw deny 'Postfix SMTPS'
|
||
****************************************************************************************************
|
||
Использование для почты внешнего сервера например mail.ru (в php и других программах)
|
||
sudo apt-get install mailutils
|
||
sudo apt-get install ssmtp
|
||
Потом заходим в настройки и меняем параметры
|
||
sudo mcedit /etc/ssmtp/ssmtp.conf
|
||
|
||
Для yandex.ru должно быть такое:
|
||
root=no_reply@bigfoottrade.kz
|
||
mailhub=smtp.yandex.ru:465
|
||
#hostname=localhost
|
||
UseTLS=YES
|
||
AuthUser=no_reply@bigfoottrade.kz
|
||
AuthPass=Rp1ZB1nB340kSQAoPor3
|
||
FromLineOverride=YES
|
||
Debug=NO
|
||
Для локального сервера istt.kz должно быть такое:
|
||
root=no-reply@istt.kz
|
||
mailhub=mail.istt.kz:465
|
||
#hostname=localhost
|
||
UseTLS=YES
|
||
AuthUser=no-reply@istt.kz
|
||
AuthPass=je6&HHCEmJ
|
||
FromLineOverride=YES
|
||
Debug=NO
|
||
|
||
А в файле sudo mcedit /etc/ssmtp/revaliases прописать:
|
||
administrator:no_reply@bigfoottrade.kz:smtp.yandex.ru:465
|
||
www-data:no_reply@bigfoottrade.kz:smtp.yandex.ru:465
|
||
igor:no_reply@bigfoottrade.kz:smtp.yandex.ru:465
|
||
root:no_reply@bigfoottrade.kz:smtp.yandex.ru:465
|
||
zabbix:no_reply@bigfoottrade.kz:smtp.yandex.ru:465
|
||
Тестируем отправку в консоли:
|
||
echo test_message | ssmtp irigm@mail.ru
|
||
Логи находятся в папке sudo mcedit /var/log/maillog
|
||
****************************************************************************************************
|
||
Старую версию агента/сервера из репазитория можно установить так:
|
||
cd /usr/src
|
||
wget http://repo.zabbix.com/zabbix/2.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_2.2-1+trusty_all.deb
|
||
sudo dpkg -i zabbix-release_2.2-1+trusty_all.deb
|
||
sudo apt-get update
|
||
sudo apt-get install zabbix-agent
|
||
service zabbix-agent start
|
||
****************************************************************************************************
|
||
Устанавливаю zabbix сервер 5.2 https://techexpert.tips/zabbix/zabbix-5-install-ubuntu-linux/ на Ubuntu 18.04
|
||
sudo apt update && sudo apt upgrade
|
||
sudo apt install apache2
|
||
sudo apt install php php-cli php-common php-pgsql
|
||
Скачиваю настройки репозитория для zabbix для Ubuntu server 18.04 bionic x64:
|
||
wget -P ~ https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1%2Bubuntu18.04_all.deb
|
||
Добавляю репозиторий заббикса:
|
||
sudo dpkg -i ./zabbix-release_5.2-1+ubuntu18.04_all.deb
|
||
Устанавливаю необходимые пакеты:
|
||
sudo apt update
|
||
sudo apt install zabbix-server-pgsql zabbix-frontend-php zabbix-apache-conf zabbix-agent zabbix-get
|
||
Создаю начальную базу, через WEB интерфейс, название базы: zabbix пароль z123456
|
||
CREATE DATABASE transit
|
||
WITH OWNER = postgres
|
||
TEMPLATE = template0
|
||
ENCODING = 'UTF8'
|
||
TABLESPACE = pg_default
|
||
LC_COLLATE = 'ru_RU.UTF-8'
|
||
LC_CTYPE = 'ru_RU.UTF-8'
|
||
CONNECTION LIMIT = -1;
|
||
Импортируем изначальную схему и данные:
|
||
zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix
|
||
Настраиваем логин пароль:
|
||
mcedit /etc/zabbix/zabbix_server.conf
|
||
Прописываем:
|
||
DBPassword=z123456
|
||
Проверяю настройку PHP: mcedit /etc/php/7.2/apache2/php.ini
|
||
date.timezone = Asia/Almaty
|
||
Затем:
|
||
sudo service apache2 restart
|
||
Запускаем процессы сервера и агента
|
||
sudo service zabbix-server start
|
||
sudo update-rc.d zabbix-server enable
|
||
sudo systemctl restart zabbix-server zabbix-agent apache2
|
||
sudo systemctl enable zabbix-server zabbix-agent apache2
|
||
Логи при такой установке в:
|
||
/var/log/zabbix
|
||
Пробуем зайти
|
||
http://94.247.128.218/zabbix
|
||
|
||
Проходимся по WEB настройке и авторизуемся: Admin с паролем zabbix там создаём узел сети и добавляем нужные шаблоны.
|
||
Поменял пароль на: ze0bra
|
||
|
||
|
||
|
||
|
||
|
||
Настройка E-mail для оповещений при помощи скрипта http://efsol-it.blogspot.com/2014/05/zabbix-email.html:
|
||
Узнаём куда нужно ложить скрипты:
|
||
cat /etc/zabbix/zabbix_server.conf | grep alertscripts
|
||
Выдало:
|
||
# AlertScriptsPath=/usr/lib/zabbix/alertscripts
|
||
|
||
|
||
Записал туда этот путь: /usr/local/etc/zabbix/alertscripts
|
||
|
||
Скрипт для отправки почты (закинул в 2 пуми в alertscripts и externalscripts):
|
||
#!/bin/bash
|
||
to="$1"
|
||
subject="$2"
|
||
body="$3"
|
||
echo $body | mail -s $subject $to
|
||
exit 0
|
||
Прописываем права для скрипта:
|
||
chown zabbix.zabbix /usr/local/etc/zabbix/alertscripts/email.sh
|
||
chmod +x /usr/local/etc/zabbix/alertscripts/email.sh
|
||
Потом внастройках Администрирование -> Способы оповещений -> Создать способ оповещения
|
||
После того как создали в настройках пользователя присваиваем оповещение.
|
||
Потом активируем действия в "Настройка -> действия"
|
||
Перезапускаем
|
||
sudo service zabbix-server restart
|
||
|
||
****************************************************************************************************
|
||
Для копирования библиотек запустить:
|
||
mvn dependency:copy-dependencies -DoutputDirectory=${project.build.directory}/libs
|
||
Потом эти библиотеки хранить рядом с jar
|
||
|
||
Скомпилировать в "IntelliJ IDEA -> Maven -> package" создастца TransitToRabbitMQ-1.0-SNAPSHOT.jar
|
||
Используем команду "-cp" а не "-jar" так как в манифесте нет описания главного класса:
|
||
/usr/bin/java -jar /opt/TransitToRabbitMQ.jar
|
||
/usr/bin/java -cp /opt/TransitToRabbitMQ.jar kz.istt.app.Forwarding
|
||
Для создания сервиса для запуска .jar необходимо создать файл Transit_RabbitMQ_Forwarding.service:
|
||
|
||
|
||
|
||
[Unit]
|
||
Description=Forwarding RabbitMQ DATA
|
||
After=syslog.target
|
||
|
||
[Service]
|
||
WorkingDirectory=/opt/
|
||
ExecStart=/usr/bin/java -cp /opt/TransitToRabbitMQ.jar kz.istt.app.Forwarding
|
||
User=tomcat
|
||
Group=tomcat
|
||
UMask=0007
|
||
RestartSec=120
|
||
Restart=always
|
||
SuccessExitStatus=143
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
|
||
[Journal]
|
||
SystemMaxUse=64M
|
||
|
||
|
||
Устанавливаем владельца:
|
||
sudo chown tomcat:tomcat -R /opt/
|
||
Смотрим что выдаёт:
|
||
sudo journalctl -e -u Transit_RabbitMQ_Forwarding
|
||
|
||
****************************************************************************************************
|
||
Установка GeoServer на Tomcat
|
||
Скачиваем WAR с сайта http://geoserver.org/release/stable/
|
||
cd /tmp
|
||
curl -O https://nav.dl.sourceforge.net/project/geoserver/GeoServer/2.23.2/geoserver-2.23.2-war.zip
|
||
Извлекаю tomcat:
|
||
sudo mkdir /opt/tomcat/geoserver
|
||
sudo apt-get install unzip
|
||
sudo unzip geoserver-2*war.zip
|
||
mv geoserver.war ROOT.war
|
||
cp ROOT.war /opt/tomcat/geoserver
|
||
sudo chown tomcat:tomcat -R /opt/tomcat/geoserver
|
||
Добавляем в sudo mcedit /opt/tomcat/conf/server.xml перед <Host name="localhost" appBase="webapps" следующий текст:
|
||
<Host name="geoserver2.locust.kz" appBase="geoserver" unpackWARs="true" autoDeploy="true">
|
||
<Alias>geoserver2.ccalm.org</Alias>
|
||
</Host>
|
||
|
||
Стандартные логин и пароль администратора admin и geoserver (поменял на geoserver1)
|
||
Мастер пароль поменял с geoserver на geoserver1 http://uspdmanager.istt.kz:8080/geoserver
|
||
|
||
Разрешаем запись для генерации тайлов:
|
||
|
||
|
||
При переносе на другой сервер скопировать папку /opt/tomcat/webapps/geoserver/data
|
||
|
||
Расширения такие как gs-web-wps-2.11.0.jar закинуть в папку: /opt/tomcat/webapps/geoserver/WEB-INF/lib
|
||
|
||
Если перенаправлять через HAProxy с HTTPS на HTTTP то GeoServer будет глючить так как на строне клиента пытается подстраиваться под протокол, поэтому нужно включать HTTPS и на Tomcat!
|
||
|
||
****************************************************************************************************
|
||
***** Настройка https ssl для tomcat *****
|
||
Купил SSL сертификат в www.gogetssl.com сгенерировав на сайте SHA-256 CSR and Private Key.
|
||
Подтвердил владение, выслали 2 файла в архиве: integration-gateway_org.ca-bundle, integration-gateway_org.crt
|
||
Переписал Private ключ в текстовый файл locust_kz.key
|
||
Также прислали сертификаты на почту: "Sectigo RSA Domain Validation Secure Server CA", "USERTrust RSA Certification Authority", "AAA Certificate Services" и использую CA сертификат.
|
||
|
||
Либо при помощи самоподписанного сертификата, генерим с алиасом geoserver и паролем qw0qw1qw2:
|
||
keytool -genkey -keyalg RSA -alias geoserver -keystore /opt/tomcat/conf/ssl/keystore.jks -storepass qw0qw1qw2 -validity 3650 -keysize 2048
|
||
Проверяем что ключь создан корректно:
|
||
keytool -list -keystore /opt/tomcat/conf/ssl/keystore.jks -storepass qw0qw1qw2
|
||
|
||
Преобразую в хранилище pkcs12:
|
||
openssl pkcs12 -export -in [my_certificate.crt] -inkey [my_key.key] -out [keystore.p12] -name [new_alias] -CAfile [my_ca_bundle.crt] -caname root
|
||
openssl pkcs12 -export -in integration-gateway_org.crt -inkey integration-gateway_org.key -out keystore.p12 -name new_alias -CAfile integration-gateway_org.ca-bundle -caname root
|
||
openssl pkcs12 -export -in locust_kz.crt -inkey locust_kz.key -out keystore.p12 -name new_alias -CAfile locust_kz.ca-bundle -caname root
|
||
openssl pkcs12 -export -in ccalm_org.crt -inkey ccalm_org.key -out ccalm_org.p12 -name ccalm_org -CAfile ccalm_org.ca-bundle -caname root
|
||
Задал пароль: qw0qw1qw2 для хранилища ключей
|
||
|
||
Преобразую в хранилище java:
|
||
keytool -importkeystore -deststorepass [new_keystore_pass] -destkeypass [new_key_pass] -destkeystore [keystore.jks] -srckeystore [keystore.p12] -srcstoretype PKCS12 -srcstorepass [pass_used_in_p12_keystore] -alias [alias_used_in_p12_keystore]
|
||
keytool -importkeystore -deststorepass qw0qw1qw2 -destkeypass qw0qw1qw2 -destkeystore keystore.jks -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass qw0qw1qw2 -alias new_alias
|
||
keytool -importkeystore -deststorepass qw0qw1qw2 -destkeypass qw0qw1qw2 -destkeystore ccalm_org.jks -srckeystore ccalm_org.p12 -srcstoretype PKCS12 -srcstorepass qw0qw1qw2 -alias ccalm_org
|
||
Импорт ключа в хранилище (теперь в нём 2 ключа для locust.kz и для ccalm.org):
|
||
keytool -importkeystore -srckeystore ccalm_org.p12 -destkeystore keystore.jks -srcstoretype pkcs12 -alias ccalm_org
|
||
|
||
keytool -list -v -keystore keystore.jks
|
||
|
||
Настроить томкат, добавив текст который ниже в: sudo mcedit /opt/tomcat/conf/server.xml
|
||
|
||
<Connector port="443"
|
||
protocol="org.apache.coyote.http11.Http11NioProtocol"
|
||
sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"
|
||
maxThreads="150"
|
||
SSLEnabled="true"
|
||
scheme="https"
|
||
secure="true"
|
||
defaultSSLHostConfigName="locust.kz">
|
||
<SSLHostConfig hostName="locust.kz">
|
||
<Certificate certificateKeystoreFile="conf/keystore.jks"
|
||
certificateKeystorePassword="qw0qw1qw2"
|
||
certificateKeyAlias="new_alias"
|
||
type="RSA" />
|
||
</SSLHostConfig>
|
||
<SSLHostConfig hostName="ccalm.org">
|
||
<Certificate certificateKeystoreFile="conf/keystore.jks"
|
||
certificateKeystorePassword="qw0qw1qw2"
|
||
certificateKeyAlias="ccalm_org"
|
||
type="RSA" />
|
||
</SSLHostConfig>
|
||
</Connector>
|
||
|
||
Также при помощи authbind разрешить не-root программе быть назначенными младшим портам:
|
||
sudo apt-get install authbind
|
||
sudo touch /etc/authbind/byport/443
|
||
sudo chmod 500 /etc/authbind/byport/443
|
||
sudo chown tomcat /etc/authbind/byport/443
|
||
|
||
****************************************************************************************************
|
||
Для создания сервиса создайте service-файл /etc/systemd/system/zholak_gps.service (замените poc-smsc на имя вашего сервиса):
|
||
|
||
sudo touch /etc/systemd/system/PServerARNAVI.service
|
||
sudo chmod 664 /etc/systemd/system/PServerARNAVI.service
|
||
sudo mcedit /etc/systemd/system/PServerARNAVI.service
|
||
|
||
И пишем в этот файл следующий текст:
|
||
|
||
|
||
|
||
[Unit]
|
||
Description=zholak_ftp
|
||
|
||
[Service]
|
||
WorkingDirectory=/var/opt/servers/arnavi/
|
||
ExecStart=/var/opt/servers/arnavi/PServerARNAVI PServerARNAVI.ini
|
||
|
||
RestartSec=10
|
||
Restart=always
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
|
||
Для перепрочтения настроек выполнить:
|
||
sudo systemctl daemon-reload
|
||
Затем можно выполнять команды:
|
||
sudo systemctl start geoserver2
|
||
sudo systemctl start SServerWialonIPS_transit
|
||
sudo systemctl start PServerWialonIPS_transit_u
|
||
sudo systemctl start PServerWialonIPS
|
||
sudo systemctl start SServerARNAVI
|
||
sudo systemctl start SServerWialonIPS
|
||
sudo systemctl start PServerARNAVI
|
||
sudo systemctl start PServerEGTS_transit
|
||
sudo systemctl start PServerARNAVI_STATIONS_TEST
|
||
sudo systemctl start SServerTKSTAR_STATIONS
|
||
sudo systemctl start PServerTKSTAR_STATIONS
|
||
sudo systemctl start SServerMQTT
|
||
sudo systemctl start PServerMQTT
|
||
sudo systemctl start SServerEGTS_transit
|
||
sudo systemctl start SServerEGTS_transit_3241
|
||
sudo systemctl start Transit_RabbitMQ_Forwarding
|
||
sudo systemctl start Transit_RabbitMQ_Forwarding_RUS
|
||
sudo systemctl start Transit_RabbitMQ_Read
|
||
sudo systemctl start SServerMT300_msp
|
||
sudo systemctl start PServerMT300_msp
|
||
sudo systemctl start SServerTeltonika
|
||
sudo systemctl start PServerTeltonika
|
||
sudo systemctl start SServerJointech
|
||
sudo systemctl start PServerJointech
|
||
|
||
sudo systemctl stop SServerEGTS_transit
|
||
sudo systemctl stop SServerARNAVI_STATIONS_TEST
|
||
sudo systemctl stop zholak_ftp
|
||
sudo systemctl stop geoserver2
|
||
sudo systemctl stop Transit_RabbitMQ_Forwarding_RUS
|
||
sudo systemctl stop SServerJointech
|
||
sudo systemctl stop PServerJointech
|
||
sudo systemctl stop PServerWialonIPS_transit
|
||
|
||
sudo systemctl restart SServerWialonIPS_transit
|
||
sudo systemctl restart zholak_ftp
|
||
sudo systemctl restart PServerARNAVI
|
||
sudo systemctl restart PServerARNAVI_TEST
|
||
sudo systemctl restart PServerMT300_msp
|
||
sudo systemctl restart SServerTeltonika
|
||
sudo systemctl restart PServerTeltonika
|
||
sudo systemctl restart Transit_RabbitMQ_Forwarding
|
||
sudo systemctl restart Transit_RabbitMQ_Forwarding_RUS
|
||
sudo systemctl restart Transit_RabbitMQ_Read
|
||
sudo systemctl restart SServerJointech
|
||
|
||
systemctl status geoserver2
|
||
systemctl status PServerARNAVI
|
||
systemctl status SServerARNAVI_STATIONS
|
||
systemctl status Virtuasudo systemctl start PServerWialonIPS_transitlTerminal
|
||
systemctl status SServerARNAVI_STATIONS_TEST
|
||
systemctl status SServerTKSTAR_STATIONS
|
||
systemctl status PServerTKSTAR_STATIONS
|
||
systemctl status SServerARNAVI
|
||
systemctl status SServerWialonIPS
|
||
systemctl status PServerEGTS_transit
|
||
systemctl status PServerARNAVI
|
||
systemctl status PServerWialonIPS
|
||
systemctl status SServerMQTT
|
||
systemctl status PServerMQTT
|
||
systemctl status SServerEGTS_transit
|
||
systemctl status SServerEGTS_transit_3241
|
||
systemctl status SServerWialonIPS_transit
|
||
systemctl status PServerWialonIPS_transit
|
||
systemctl status PServerWialonIPS_transit_u
|
||
systemctl status Transit_RabbitMQ_Forwarding
|
||
systemctl status Transit_RabbitMQ_Forwarding_RUS
|
||
systemctl status Transit_RabbitMQ_Read
|
||
systemctl status SServerMT300_msp
|
||
systemctl status PServerMT300_msp
|
||
systemctl status SServerTeltonika
|
||
systemctl status PServerTeltonika
|
||
systemctl status SServerJointech
|
||
systemctl status PServerJointech
|
||
|
||
Чтобы добавить сервис в автозагрузку, необходимо активировать его:
|
||
sudo systemctl enable geoserver2
|
||
sudo systemctl enable SServerEGTS_transit
|
||
sudo systemctl enable SServerEGTS_transit_3241
|
||
sudo systemctl enable PServerEGTS_transit
|
||
sudo systemctl enable SServerWialonIPS_transit
|
||
sudo systemctl enable PServerWialonIPS_transit_u
|
||
sudo systemctl enable VirtualTerminal
|
||
sudo systemctl enable SServerARNAVI_STATIONS
|
||
sudo systemctl enable PServerARNAVI_STATIONS
|
||
sudo systemctl enable PServerARNAVI_STATIONS_TEST
|
||
sudo systemctl enable SServerTKSTAR_STATIONS
|
||
sudo systemctl enable PServerTKSTAR_STATIONS
|
||
sudo systemctl enable SServerMQTT
|
||
sudo systemctl enable PServerMQTT
|
||
sudo systemctl enable SServerMT300_msp
|
||
sudo systemctl enable PServerMT300_msp
|
||
sudo systemctl enable Transit_RabbitMQ_Forwarding
|
||
sudo systemctl enable Transit_RabbitMQ_Forwarding_RUS
|
||
sudo systemctl enable Transit_RabbitMQ_Read
|
||
sudo systemctl enable SServerJointech
|
||
sudo systemctl enable PServerJointech
|
||
|
||
systemctl enable SServerARNAVI
|
||
systemctl enable SServerWialonIPS
|
||
systemctl enable PServerARNAVI
|
||
systemctl enable PServerWialonIPS
|
||
|
||
Чтобы проверить логи сервиса, выполните:
|
||
journalctl -u zholak_gps
|
||
journalctl -u SServerWialonIPS_transit
|
||
journalctl -u PServerWialonIPS_transit
|
||
journalctl -u geoserver2
|
||
****************************************************************************************************
|
||
Команды Linux
|
||
pwd - получить имя текущей директории
|
||
cd - изменить текущую директорию
|
||
ls - распечатать информацию о файлах или директориях
|
||
cat - слить или вывести файлы-аргументы на стандартный вывод
|
||
cp - копировать файлы
|
||
mv - переместить (переименовать) файлы
|
||
ln - создать ссылку на файл
|
||
rm - удалить файлы
|
||
rmdir - удалить директорию
|
||
mkdir - создать директорию
|
||
echo - вывести аргументы командной строки на стандартный вывод
|
||
ps - узнать номера выполняемых процессов
|
||
kill - "убить" выполняемый процес по его номеру
|
||
man - выдать справку об использовании и ключах команды
|
||
****************************************************************************************************
|
||
Удалённая отладка c++ приложения на Ubuntu при помощи GDB-gdbserver debug
|
||
Устанавливаем на удалённой машине:
|
||
sudo apt install gdbserver
|
||
|
||
Для того чтобы не писать каждый раз пароль авторизуемся по ключю
|
||
Для этого генерим ключик локально:
|
||
ssh-keygen -t rsa -b 2048
|
||
Значения по умолчанию оставил пустыми, сгенерился в /home/username/.ssh/id_rsa
|
||
Копируем ключик на нужную машину командай:
|
||
ssh-copy-id -p 22 administrator@10.101.1.3
|
||
|
||
Для копирования и запуска программы на целевую машину создаём скрипт копирования и запуска:
|
||
|
||
#!/bin/bash
|
||
echo "*** copy file to server ***"
|
||
#scp -P 2222 /mnt/O_DRIVE/projects/Workspace_C++/GServer/Debug/GServer administrator@192.168.0.83:/var/www/server
|
||
scp -P 2222 /mnt/O_DRIVE/projects/Workspace_C++/MServer/Debug/MServer administrator@192.168.0.83:/var/www/server
|
||
#scp /mnt/O_DRIVE/projects/Workspace_C++/VTerminal/Debug/VTerminal administrator@192.168.0.83:/var/www/uspdmanager.istt.kz
|
||
|
||
echo "*** exec program on server ***"
|
||
|
||
#ssh -p 2222 administrator@192.168.0.83 gdbserver 192.168.0.83:10000 /var/www/server/GServer
|
||
ssh -p 2222 administrator@192.168.0.83 gdbserver 192.168.0.83:10000 /var/www/server/MServer
|
||
#ssh administrator@192.168.0.83 gdbserver 192.168.0.83:10000 /var/www/uspdmanager.istt.kz/VTerminal e101
|
||
|
||
Скрипт можно не делать так как в Eclipse это можно автоматизировать при помощи "C/C++ Remote Application".
|
||
|
||
|
||
****************************************************************************************************
|
||
Настройка kannel для отправки SMS через SMPP (http://alexkorvin.blogspot.com/2011/05/sms-kannel-centos-55.html)
|
||
Устанавливаю kannel
|
||
sudo apt-get install kannel
|
||
|
||
bearerbox – главный демон, который держит связь по SMPP в качестве клиента, работает с 3g-донглами, слушает порт для подключения других демонов.
|
||
opensmppbox – демон, который работает как SMPP сервер для подключения других клиентов. Тоже подключается к bearerbox и работает через него.
|
||
|
||
sudo mcedit /etc/kannel/kannel.conf
|
||
|
||
|
||
Скрипт автостарта в ubuntu
|
||
Автор: Zeboton
|
||
Иногда нужно чтобы при загрузке Ubuntu выполнила какие-либо действия (к примеру, запустила какую-нибудь программу). Как же это сделать?
|
||
Всё просто как 3 копейки!
|
||
1. Нужно создать файл с командами, которые нужно выполнить при старте системе:
|
||
view source
|
||
print
|
||
?
|
||
1.
|
||
sudo nano /etc/init.d/autostart.script
|
||
|
||
Как понятно, autostart.script это название файла в котором будут записаны команды и оно может быть любым, но не должно совпадать с именами уже существующих файлов в папке /etc/init.d/.
|
||
В первой строке файла должно быть указано какая оболочка или интерпретатор будет выполнять команды в файле. Если вы хотите использовать те же команды, что и в терминале, то файл должен начинаться со строки:
|
||
view source
|
||
print
|
||
?
|
||
1.
|
||
#!/bin/bash
|
||
|
||
2. Нужно разрешить файлу выполняться:
|
||
view source
|
||
print
|
||
?
|
||
1.
|
||
sudo chmod +x /etc/init.d/autostart.script
|
||
|
||
3. Рассказываем системе что этот файл нужно исполнять при старте системы:
|
||
view source
|
||
print
|
||
?
|
||
1.
|
||
sudo update-rc.d autostart.script defaults 95
|
||
|
||
Где 95 это порядок в очереди исполнения. Подробнее можно узнать из
|
||
view source
|
||
print
|
||
?
|
||
1.
|
||
man update-rc.d
|
||
|
||
Перезапускаем систему и радуемся результату
|
||
|
||
P.S.
|
||
Для удаления из автостарта нужно выполнить:
|
||
view source
|
||
print
|
||
?
|
||
1.
|
||
sudo update-rc.d autostart.script remove
|
||
****************************************************************************************************
|
||
Подключение стронних SSL сертификатов, допустим с gogetssl.com
|
||
После покупки сертификата в .pem файл нужно переписать такие ключи и сертификаты как:
|
||
1) PrivateKey
|
||
2) Сертификат (Certificate) Использую только bigfoottrade_kz.crt
|
||
3) Цепочка сертификатов (Chain of Trust)
|
||
Сертификат для подписи приватного ключа (Certificate Signing Request(CSR)) использовать не надо, он больше не нужен.
|
||
|
||
Пробую собрать pem файл из того что скачал с сайта gogetssl.com (зайдя в раздел подробннее о сертификате)
|
||
cat istransit_kz.key istransit_kz.crt istransit_kz.ca> istransit_kz.pem
|
||
Потом зайти проверить через mcedit что символы перехода не из вины
|
||
|
||
****************************************************************************************************
|
||
Устанавливаю python на Ubuntu 18.04
|
||
|
||
sudo apt update
|
||
sudo apt-get install build-essential python3-all-dev
|
||
sudo apt-get install libhdf5-dev
|
||
sudo apt-get install gdal-bin
|
||
sudo apt-get install python3-gdal
|
||
sudo apt-get install python3-h5py
|
||
sudo apt-get install python3-requests
|
||
sudo apt-get install python3-pip
|
||
|
||
|
||
|
||
sudo pip3 install --upgrade pip
|
||
sudo pip3 install requests
|
||
pip install --upgrade requests
|
||
sudo pip3 install ease_grid
|
||
|
||
****************************************************************************************************
|
||
Настраиваю статический сетевой IP адрес в Ubuntu 22.04:
|
||
Для этого открываем: sudo mcedit /etc/netplan/00-installer-config.yaml
|
||
И меняем:
|
||
network:
|
||
ethernets:
|
||
enp0s3:
|
||
dhcp4: true
|
||
version: 2
|
||
На:
|
||
network:
|
||
ethernets:
|
||
enp0s3:
|
||
dhcp4: no
|
||
addresses:
|
||
- 192.168.0.138/24
|
||
gateway4: 192.168.0.253
|
||
nameservers:
|
||
addresses:
|
||
- 8.8.8.8
|
||
- 8.8.4.4
|
||
version: 2
|
||
****************************************************************************************************
|
||
В старой ubuntu 16.04 IP настраивались так: sudo nano /etc/network/interfaces
|
||
iface eth0 inet static
|
||
address 192.168.200.57
|
||
netmask 255.255.255.0
|
||
gateway 192.168.200.1
|
||
auto eth0
|
||
|
||
Или так для DHCP
|
||
iface eth0 inet dhcp
|
||
auto eth0
|
||
|
||
Обновляю интерфейс не перезагружая:
|
||
sudo systemctl restart networking
|
||
|
||
Для ubuntu 18.04 20.04 и далее настройки в etc\netplan
|
||
Для ЖОЛАК настраивал мост так:
|
||
network:
|
||
ethernets:
|
||
enp1s0:
|
||
addresses: []
|
||
dhcp4: true
|
||
dhcp6: false
|
||
optional: true
|
||
enp2s0:
|
||
addresses: []
|
||
dhcp4: false
|
||
dhcp6: false
|
||
optional: true
|
||
enp3s0:
|
||
addresses: []
|
||
dhcp4: false
|
||
dhcp6: false
|
||
optional: true
|
||
enp4s0:
|
||
addresses: []
|
||
dhcp4: false
|
||
dhcp6: false
|
||
optional: true
|
||
bridges:
|
||
br0:
|
||
interfaces: [enp2s0,enp3s0,enp4s0]
|
||
addresses: [192.168.1.10/24]
|
||
dhcp4: false
|
||
dhcp6: false
|
||
optional: true
|
||
version: 2
|
||
|
||
Применение конфигурации:
|
||
sudo netplan apply
|
||
****************************************************************************************************
|
||
--sudo apt update
|
||
--sudo apt install libosmocore
|
||
Устанавливаю библиотеку OpenBSC:
|
||
sudo apt update
|
||
sudo apt install libosmocore-dev
|
||
sudo apt-get install build-essential libtool libtalloc-dev shtool autoconf automake git-core pkg-config make gcc libpcsclite-dev
|
||
----------------------------------------
|
||
https://security-bits.de/research/cellular/lab_setup
|
||
Установка SimpleHLR согласно: https://osmocom.org/projects/osmonitb/wiki/Simplehlr
|
||
sudo apt install php php-sqlite3
|
||
https://osmocom.org/projects/osmo-hlr/wiki/OsmoHLR
|
||
|
||
|
||
Пробую скомпилить: https://github.com/moiji-mobile/hlr эти исходники по 32 битную версию Линукса (На форумах говорят проблемы были по 64 битную версию поэтому автор и сделал по 32 бита)
|
||
Снадеждой что тут поддерживает TCAP/MAP так как: OsmoHLR does not support the classic TCAP/MAP protocol but rather implements the more light-weight GSUP protocol.
|
||
sudo apt-get install git-all
|
||
sudo apt-get install libtalloc-dev
|
||
sudo apt-get install libusb-dev
|
||
sudo apt-get install libusb-1.0-0-dev
|
||
sudo apt-get install libmnl-dev
|
||
sudo apt-get install libsctp-dev
|
||
git clone https://github.com/moiji-mobile/hlr
|
||
Потом запустил SH файл, скомпилилась libosmocore и что? Она типа с TCAP/MAP?
|
||
Узнаём версию библиотеки:
|
||
----------------------------------------
|
||
Установка libosmoabis https://osmocom.org/projects/libosmo-abis/wiki/Libosmo-abis
|
||
Это библиотека, содержащая общий / разделяемый код, относящийся к интерфейсу A-bis между BTS и BSC. Он реализует драйверы для карт E1 на основе mISDN и DAHDI, а также для некоторых диалектов A-bis / IP.
|
||
sudo apt-get install libortp-dev
|
||
git clone git://git.osmocom.org/libosmo-abis.git
|
||
cd libosmo-abis/
|
||
autoreconf -i
|
||
./configure
|
||
make
|
||
sudo make install
|
||
sudo ldconfig -i
|
||
cd ..
|
||
----------------------------------------
|
||
Установка libosmo-abis (libosmoabis)
|
||
sudo apt-get install libortp-dev
|
||
sudo apt-get install -y dahdi-linux
|
||
sudo apt-get install dahdi
|
||
git clone git://git.osmocom.org/libosmo-abis.git
|
||
cd libosmo-abis/
|
||
autoreconf -i
|
||
./configure
|
||
make
|
||
sudo make install
|
||
sudo ldconfig -i
|
||
cd ..
|
||
----------------------------------------
|
||
Пробую установить: git://git.osmocom.org/osmo-hlr это тот который не работает через TCAP/MAP а только через GSUP
|
||
sudo apt-get install libpcsclite-dev
|
||
sudo apt-get install build-essential libtool libtalloc-dev libsctp-dev shtool autoconf automake git-core pkg-config make gcc python-minimal
|
||
sudo apt-get install libpcsclite-dev
|
||
|
||
git clone git://git.osmocom.org/osmo-hlr
|
||
autoreconf -i
|
||
./configure
|
||
make
|
||
make install
|
||
----------------------------------------
|
||
Настройка osmo-hlr согласно: https://nickvsnetworking.com/gsm-with-osmocom-part-7-the-hlr-home-location-register-and-friends/
|
||
Как установили то запускаем сервис:
|
||
systemctl start osmo-hlr
|
||
Подключается через telnet и продолжаем настройку
|
||
telnet localhost 4258
|
||
----------------------------------------
|
||
Установка libtasn1 версии 4.9
|
||
wget https://ftp.gnu.org/gnu/libtasn1/libtasn1-4.9.tar.gz
|
||
tar xvf libtasn1-4.9.tar.gz
|
||
cd libtasn1-4.9
|
||
./configure --prefix=/usr/local/libtasn1/4_9
|
||
make
|
||
make check
|
||
make install
|
||
----------------------------------------
|
||
Устанавливаю gnutls по инструкции https://noknow.info/it/os/install_gnutls_from_source:
|
||
sudo apt-get install -y libtasn1-bin (У меня показало 4.13-2 а затребовало 4.9)
|
||
sudo apt-get install -y nettle-dev (У меня показало что установленна версия: 3.4-1 поэтому ставлю версию gnutls-3.5.19.tar.xz)
|
||
wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.4/gnutls-3.4.17.tar.xz
|
||
wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.5/gnutls-3.5.19.tar.xz
|
||
wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.5/gnutls-3.5.19.tar.xz
|
||
wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.9.tar.xz
|
||
wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-3.7.0.tar.xz
|
||
tar xvf gnutls-3.6.9.tar.xz
|
||
cd gnutls-3.6.9
|
||
./configure --prefix=/usr/local/gnutls/3_6_9
|
||
make
|
||
make check
|
||
make install
|
||
----------------------------------------------------------------
|
||
Проверяем установлен ли libosmocore
|
||
dpkg -L libosmocore
|
||
Для установки версии разработчика libosmocore из репозитория:
|
||
sudo apt-get install libosmocore-dev
|
||
Для удаления libosmocore
|
||
sudo apt-get remove libosmocore
|
||
Либо с удалением зависимостей: sudo apt-get remove --auto-remove libosmocore
|
||
Либо для полного удаления включая зависемости и конфигурационные файлы: sudo apt-get purge libosmocore
|
||
Пробую откомпилить и установить: libosmocore из исходников (версия: 1.4.0.326-8c33d)
|
||
sudo apt-get install git build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls28-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev libpam0g-dev ntp
|
||
sudo apt-get install synaptic
|
||
sudo apt install libgnutls-dev
|
||
sudo apt-get install -y doxygen
|
||
sudo apt-get install -y libmnl-dev
|
||
git clone git://git.osmocom.org/libosmocore.git
|
||
cd libosmocore/
|
||
autoreconf -i
|
||
./configure
|
||
make
|
||
sudo make install
|
||
sudo ldconfig -i
|
||
|
||
****************************************************************************************************
|
||
Настройка IPSEC VPN тунель IKEv2 PSK на Ubuntu с использование StrongSwan: https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-server-with-strongswan-on-ubuntu-22-04
|
||
|
||
Генерим секретный ключь
|
||
openssl rand -hex 32
|
||
Выдаст примерно такое:
|
||
23fa1e30aa1623371253e84e7d0dad9d33b1e8fc69253c247cf0297c009e5a9e
|
||
|
||
|
||
|
||
Подключиться можно так:
|
||
https://thesafety.us/vpn-setup-ikev2-ubuntu21
|
||
|
||
|
||
|
||
****************************************************************************************************
|
||
Установка и настройка openvpn на Ubuntu 16.04 согласно документу: https://timeweb.com/ru/community/articles/openvpn-na-ubuntu-16-04-ustanovka-1 https://www.digitalocean.com/community/tutorials/openvpn-ubuntu-16-04-ru
|
||
|
||
Устанавливаем утилиту для синхронизации времени:
|
||
apt-get install chrony
|
||
systemctl enable chrony --now
|
||
cp /usr/share/zoneinfo/Asia/Almaty /etc/localtime
|
||
|
||
Установка OpenVPN:
|
||
sudo apt-get install openvpn easy-rsa unzip
|
||
|
||
Настройка центра сертификации easy-rsa
|
||
Копируем шаблонную директорию в нужное нам место
|
||
make-cadir ~/openvpn-ca
|
||
Дальше заходим в созданную папку и редактируем файл vars
|
||
mcedit vars
|
||
И в нем поменять значения в конце файла на свои, пример:
|
||
export KEY_COUNTRY="US"
|
||
export KEY_PROVINCE="NY"
|
||
export KEY_CITY="New York City"
|
||
export KEY_ORG="DigitalOcean"
|
||
export KEY_EMAIL="admin@example.com"
|
||
export KEY_OU="Community"
|
||
export KEY_NAME="server"
|
||
|
||
Создание центра сертификации:
|
||
Убедитесь что вы в папке openvpn-ca и выполните команду:
|
||
source vars
|
||
Теперь нужно удалить все ненужные данные для того, чтобы почистить рабочую среду:
|
||
./clean-all
|
||
Переходим к построению корня центра сертификации:
|
||
./build-ca
|
||
|
||
Создаём сертификаты:
|
||
./build-key-server server
|
||
./build-dh
|
||
openvpn --genkey --secret keys/ta.key
|
||
|
||
|
||
Создание сертификата клиента и пары ключей (для каждого подключаемого клиента нужно повторить генерацию)
|
||
Для того чтобы создался файл без пароля:
|
||
source vars
|
||
./build-key client1
|
||
****************************************************************************************************
|
||
BananaPI SSH создать директорию в: /var/run/sshd и перезагрузить SSH или ОС также нужно подправить файл /usr/lib/tmpfiles.d/sshd.confи удалив /var из строки: d /var/run/sshd 0755
|
||
service ssh start
|
||
/usr/lib/tmpfiles.d/sshd.conf
|
||
d /var/run/sshd 0755 root root
|
||
BananaPI WIFI: sudo nmtui и выбрать подходящую точку доступа для подключения
|
||
****************************************************************************************************
|
||
Компиляция DAHDI Asterisk http://linux.mixed-spb.ru/asterisk/install_dahdi.php
|
||
git clone -b next git://git.asterisk.org/dahdi/linux dahdi-linux
|
||
cd dahdi-linux
|
||
make
|
||
make install
|
||
****************************************************************************************************
|
||
Настройка TLS для Mosquitto MQTT брокера на windows (команды ниже выполнять в LINUX) https://mcuoneclipse.com/2017/04/14/enable-secure-communication-with-tls-and-the-mosquitto-broker/
|
||
1) Создаю CA пару ключей
|
||
openssl genrsa -des3 -out m2mqtt_ca.key 2048
|
||
Задал пароль: q123456
|
||
2) Создаю сертификат для ключа m2mqtt_ca.key
|
||
openssl req -new -x509 -days 3650 -key m2mqtt_ca.key -out m2mqtt_ca.crt
|
||
Если выдаст: Unable to load config info from /usr/local/ssl/openssl.cnf то добавить переменную окружения OPENSSL_CONF со значением C:\Program Files\OpenSSL\openssl.cnf
|
||
set OPENSSL_CONF=o:\projects\Workspace_PHP\Apache24\conf\openssl.cnf
|
||
3) Create Mosquitto Broker Key Pair
|
||
openssl genrsa -out m2mqtt_srv.key 2048
|
||
|
||
4) Create Certificate Request from CA
|
||
openssl req -new -out m2mqtt_srv.csr -key m2mqtt_srv.key
|
||
5) Verify and Sign the Certificate Request
|
||
openssl x509 -req -in m2mqtt_srv.csr -CA m2mqtt_ca.crt -CAkey m2mqtt_ca.key -CAcreateserial -out m2mqtt_srv.crt -days 3650
|
||
Дальше копируем файлы в папку mosquitto
|
||
<mosquitto>/certs/m2mqtt_ca.crt
|
||
<mosquitto>/certs/m2mqtt_srv.crt
|
||
<mosquitto>/certs/m2mqtt_srv.key
|
||
Далее открываем <mosquitto>/mosquitto.conf и
|
||
listener 1883 0.0.0.0
|
||
listener 8883 0.0.0.0
|
||
cafile C:\Program Files\mosquitto\certs\m2mqtt_ca.crt
|
||
certfile C:\Program Files\mosquitto\certs\m2mqtt_srv.crt
|
||
keyfile C:\Program Files\mosquitto\certs\m2mqtt_srv.key
|
||
Дальше перезапускаем mosquitto
|
||
Проверить кто занял порт:
|
||
netstat -ab
|
||
|
||
Для получения отпечастка сертификата выполнить:
|
||
openssl x509 -in m2mqtt_srv.crt -noout -fingerprint -sha1 -inform pem
|
||
|
||
Для преобразования в pem файл выполнить:
|
||
openssl rsa -in m2mqtt_srv.key -text > m2mqtt_srv.key.pem
|
||
openssl x509 -inform PEM -in m2mqtt_srv.crt > m2mqtt_srv.crt.pem
|
||
****************************************************************************************************
|
||
Установка home-assistanto c Supervisor на Ubuntu Server 20.04, Linux Mint(и малинки) по мативам https://pikabu.ru/story/ustanovka_home_assistant_supervised_v_docker_na_ubuntu_2004_na_besplatnom_vps_servere_ot_oracle_testovaya_sistema_umnogo_doma_7980354
|
||
sudo apt-get update
|
||
sudo apt-get upgrade -y
|
||
sudo apt autoremove -y
|
||
sudo apt-get install -y software-properties-common apparmor-utils apt-transport-https avahi-daemon ca-certificates curl dbus jq network-manager socat
|
||
Деактивируем и отключаем ModemManager:
|
||
sudo systemctl disable ModemManager
|
||
sudo systemctl stop ModemManager
|
||
На всякий случай перезагружаем систему
|
||
reboot
|
||
Устанавливаем Docker:
|
||
curl -fsSL get.docker.com | sudo sh
|
||
Загружаем скрипт "supervised-installer":
|
||
curl -Lo installer.sh https://raw.githubusercontent.com/home-assistant/supervised-installer/master/installer.sh
|
||
И запускаем установку одним из способов:
|
||
- установщик сам выбирает директории (папки установки): sudo bash installer.sh
|
||
- мы выбираем директории (папки установки - нужно сначала создать)***: sudo bash installer.sh -p /home -d $PREFIX/hassio (это пример, подробнее на фото)
|
||
Разварачивание HA может занять 5 минут
|
||
****************************************************************************************************
|
||
Установка Docker на Ubuntu 22.04 по мотивам: https://infoit.com.ua/linux/kak-ustanovit-docker-na-linux-mint-20/
|
||
Обновляем и устанавливаем зависимости:
|
||
sudo apt update
|
||
sudo apt install curl software-properties-common ca-certificates apt-transport-https -y
|
||
wget -O- https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor | sudo tee /etc/apt/keyrings/docker.gpg > /dev/null
|
||
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable"| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||
sudo apt update
|
||
sudo apt install docker-ce -y
|
||
sudo systemctl status docker
|
||
Устанавливаем Docker Compose с сервера:
|
||
Так старая версия установится: sudo apt-get install docker-compose
|
||
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||
chmod +x /usr/local/bin/docker-compose
|
||
docker-compose --version
|
||
После установки будет создана группа докеров. Добавьте своего пользователя в группу, которая будет запускать команды докеров:
|
||
sudo usermod -aG docker $USER
|
||
После этого проверьте установку Docker, используя следующую команд
|
||
sudo docker --version
|
||
docker compose version
|
||
|
||
|
||
**********PORTAINER**********
|
||
Также можно установить удобный интерфейс для управления докер контейнерами PORTAINER по документации из: https://timeweb.cloud/tutorials/docker/ustanovka-i-ispolzovanie-portainer и видео: https://www.youtube.com/watch?v=EmtNCo7SGbQ
|
||
cd /opt
|
||
sudo mkdir portainer
|
||
cd ./portainer
|
||
sudo mcedit docker-compose.yml
|
||
И прописываем в файл:
|
||
|
||
version: "3.3"
|
||
services:
|
||
twportainer:
|
||
image: portainer/portainer-ce:latest
|
||
container_name: portainer
|
||
environment:
|
||
- TZ=Europe/Moscow
|
||
volumes:
|
||
- /var/run/docker.sock:/var/run/docker.sock
|
||
- /opt/portainer/portainer_data:/data
|
||
ports:
|
||
- "8000:8000"
|
||
- "9443:9443"
|
||
restart: always
|
||
|
||
version: "3.3": Указывает версию Docker-compose, которую вы используете. Версия 3.3 подходит для большинства современных приложений.
|
||
services: В этой секции описываются запускаемые сервисы.
|
||
twportainer: Имя сервиса. Используется в качестве идентификатора.
|
||
image: portainer/portainer-ce:latest: Определяет образ, который будет использоваться. Здесь используется последняя версия Community Edition.
|
||
container_name: twportainer: Назначает имя контейнера, чтобы было легче его идентифицировать.
|
||
environment: Позволяет задать переменные окружения. Например, - TZ=Europe/Moscow устанавливает временную зону контейнера.
|
||
volumes:
|
||
/var/run/docker.sock:/var/run/docker.sock позволяет Portainer взаимодействовать с Docker на вашем хосте;
|
||
/opt/twportainer/portainer_data:/data создает постоянное хранилище данных.
|
||
ports:
|
||
"8000:8000" и "9443:9443" открывают соответствующие порты для доступа к Portainer. 9443 используется для HTTPS подключения.
|
||
restart: always: Гарантирует, что контейнер будет автоматически перезапускаться при необходимости, например, после перезагрузки сервера.
|
||
|
||
Разрешаем пользователю запускать докер:
|
||
sudo usermod -aG docker $USER
|
||
Теперь можно запустить конфигурацию командой:
|
||
sudo docker-compose up -d
|
||
|
||
Открываем: https://127.0.0.1:9443
|
||
После предложения задания пароля для пользователя admin задал такой пароль на дом компе: &b2C6nyN2,qUNM]
|
||
****************************************************************************************************
|
||
Собственный DynDNS на Linux для observer.kz для начала устанавливаем BIND 9.13 and later по этому мануалу https://www.dmosk.ru/miniinstruktions.php?mini=bind-ubuntu и по этому для новой версии https://www.netss.by/?p=26
|
||
sudo apt-get update
|
||
sudo apt-get install bind9 dnsutils
|
||
sudo apt-get install bind9utils
|
||
Добавляем сервис в автозапуск
|
||
systemctl enable bind9
|
||
Проверяем что сервис работает
|
||
nslookup dmosk.ru 127.0.0.1
|
||
Открываем настройки:
|
||
mcedit /etc/bind/named.conf.options
|
||
Для глобальных запросов добавляем строку: allow-query { any; };
|
||
Также добавляем в этот файл DNS сервера пересылки, на них будут перенаправляться запросы если локальный не содержит данных
|
||
//forwarders {
|
||
// 8.8.8.8;
|
||
// 8.8.4.4;
|
||
//};
|
||
Проверяем настройки командой (ответ должен быть пустым):
|
||
sudo named-checkconf
|
||
Перезагружаем:
|
||
sudo systemctl restart bind9
|
||
Проверяю версию BIND:
|
||
named -v
|
||
Выдало: BIND 9.16.1-Ubuntu (Stable Release) <id:d497c32>
|
||
Можно проверить какой IP выдаст на DNS запрос
|
||
dig locust.kz A
|
||
|
||
На этом базовая настройка закончена. Наш сервер готов принимать и отдавать запросы и работать, как кэширующий dns.
|
||
|
||
|
||
|
||
|
||
Далее создаём клиента согласно: https://help.ubuntu.ru/wiki/динамический_днс_своими_руками
|
||
|
||
Перейдем в него.
|
||
cd /etc/bind/
|
||
Генерируем пару ключь для обмена информацией между клиентом и сервером:
|
||
sudo tsig-keygen -a hmac-sha512 dirt.kz > dirt.kz.key
|
||
sudo tsig-keygen -a hmac-sha512 locust.kz > locust.kz.key
|
||
Для загрузки ключа добавляем его файл mcedit /etc/bind/named.conf строчку с указанием файла, где определен ключ.
|
||
include "/etc/bind/dirt.kz.key";
|
||
include "/etc/bind/locust.kz.key";
|
||
Следующим шагом необходимо в файл mcedit /etc/bind/named.conf.local прописать доменную зону, которой мы оперируем.
|
||
zone "dirt.kz" {
|
||
type master;
|
||
allow-update {key dirt.kz;};
|
||
file "/var/cache/bind/dirt.kz";
|
||
};
|
||
|
||
zone "locust.kz" {
|
||
type master;
|
||
allow-update {key locust.kz;};
|
||
file "/var/cache/bind/locust.kz";
|
||
};
|
||
|
||
|
||
В файле "mcedit /var/cache/bind/dirt.kz" должны быть прописанны записи домена где:
|
||
В файле "mcedit /var/cache/bind/locust.kz" должны быть прописанны записи домена где:
|
||
|
||
Поле $ORIGIN для подставки имени в знак @, поэтому знак @ не используется просто так в тексте
|
||
Если используется символ @ то он заменяется на то что было прописанно в $ORIGIN смотреть в: https://help.dyn.com/how-to-format-a-zone-file/
|
||
SOA — Начало полномочий подробней смотри в https://k.psu.ru/wiki/BIND9_(методическое_пособие)#SOA
|
||
NS — Сервер имён
|
||
A — рекорд
|
||
MX — Почта для обмена
|
||
CN — Каноническое имя
|
||
PTR — указатель
|
||
И таким содержимым:
|
||
|
||
$ORIGIN dirt.kz
|
||
$TTL 604800
|
||
@ IN SOA bigfoottrade.kz. root.bigfoottrade.kz. (
|
||
8 ; Serial
|
||
604800 ; Refresh
|
||
86400 ; Retry
|
||
2419200 ; Expire
|
||
604800 ) ; Negative Cache TTL
|
||
;
|
||
@ IN NS bigfoottrade.kz.
|
||
|
||
Второй файл для locust.kz:
|
||
|
||
$ORIGIN .
|
||
$TTL 604800 ; 1 week
|
||
locust.kz IN SOA bigfoottrade.kz. irigm.mail.ru. (
|
||
134 ; serial
|
||
604800 ; refresh (1 week)
|
||
86400 ; retry (1 day)
|
||
1419200 ; expire (2 weeks 2 days 10 hours 13 minutes 20 seconds)
|
||
604800 ; minimum (1 week)
|
||
)
|
||
NS bigfoottrade.kz.
|
||
$TTL 3600 ; 1 hour
|
||
A 5.76.254.182
|
||
$ORIGIN locust.kz.
|
||
* A 127.0.0.1
|
||
|
||
|
||
Правлю права доступа:
|
||
sudo chown -R bind:bind /etc/bind
|
||
|
||
Если настройки были первоначальными то стоит удалить файл /var/cache/bind/locust.kz.jnl и переинициализировать его командой:
|
||
sudo rndc reconfig
|
||
Потом следует вызвать:
|
||
sudo systemctl restart bind9
|
||
Команда выше также переписывет накопившиеся данные из /var/cache/bind/locust.kz.jnl в /var/cache/bind/locust.kz так что после обновления если охото быстрей взглянуть на текстовое значение следует повторно вызвать эту команду
|
||
После настроек сервера перезагружаем его:
|
||
sudo named-checkconf
|
||
sudo rndc reload
|
||
sudo systemctl restart bind9
|
||
sudo rndc status
|
||
journalctl | grep bind
|
||
sudo journalctl -u bind9 -n 50
|
||
|
||
|
||
Создаю скрипт /etc/ddns/ddns.sh для обновления доменных зон удалённо с доступом по ключу:
|
||
|
||
Файл из примера:
|
||
#!/bin/bash
|
||
TTL=3600
|
||
SERVER=ns.dyndns.my
|
||
HOSTNAME=dhost.dyndns.my
|
||
ZONE=dyndns.my
|
||
KEYFILE=Kdyndns.my.+157+48025.private
|
||
new_ip_address=`curl http://dyndns.my/ip.php` #Этот файлик создадим позднее на сервере!
|
||
cd /etc/ddns
|
||
nsupdate -v -k $KEYFILE << EOF
|
||
server $SERVER
|
||
zone $ZONE
|
||
update delete $HOSTNAME A
|
||
update add $HOSTNAME $TTL A $new_ip_address
|
||
send
|
||
EOF
|
||
|
||
Мой модифицированный файл для обновления IP в Bind9 DNS сервису по созданному файлу ip.txt, файл ip.txt создаётся в PHP скрипте который описан ниже:
|
||
#!/bin/bash
|
||
TTL=3600
|
||
SERVER=127.0.0.1
|
||
HOSTNAME=*.dirt.kz
|
||
ZONE=dirt.kz
|
||
KEYFILE=/etc/bind/dirt.kz.key
|
||
|
||
new_ip_address=
|
||
FILE=/etc/ddns/ip.txt
|
||
if test -f "$FILE"; then
|
||
new_ip_address=`cat $FILE`
|
||
rm $FILE
|
||
fi
|
||
|
||
len=${#new_ip_address}
|
||
if [ $len -gt 3 ]
|
||
then
|
||
echo "New IP address = $new_ip_address"
|
||
else
|
||
echo "Not find IP address"
|
||
exit
|
||
fi
|
||
|
||
cd /etc/ddns
|
||
sudo nsupdate -v -k $KEYFILE << EOF
|
||
server $SERVER
|
||
zone $ZONE
|
||
update delete $HOSTNAME A
|
||
update add $HOSTNAME $TTL A $new_ip_address
|
||
update delete dirt.kz A
|
||
update add dirt.kz $TTL A $new_ip_address
|
||
send
|
||
EOF
|
||
echo "OK"
|
||
|
||
Так как PHP работает за HAProxy то немного модифицировал скрипт который сохраняет IP обратившегося клиента в файл, а именно использую "x-forwarded-for" для передачи IP адреса клиента:
|
||
<?php
|
||
|
||
echo '<pre>'; print_r(getallheaders()); echo '</pre>';
|
||
|
||
// PROBLEM IS each browser has different "x-forwarder-for" some "X-Forwarder-for" and some browser gave you 2x ip "x.x.x.x, x.x.x.x"
|
||
foreach ( getallheaders() as $k => $v) {
|
||
if ( strtolower($k) == 'x-forwarded-for' ) {
|
||
$tmp = explode(', ', $v);
|
||
if ( $tmp[count($tmp)-1] != '' )
|
||
$_SERVER['REMOTE_ADDR'] = $tmp[count($tmp)-1];
|
||
}
|
||
}
|
||
|
||
if(isset($_GET["key"]) && $_GET["key"]=='4fygxNq539NFfUm6SOd2vn52GwL7o7NA'){
|
||
$myfile = fopen("/etc/ddns/ip.txt", "w");
|
||
fwrite($myfile, $_SERVER['REMOTE_ADDR']);
|
||
fclose($myfile);
|
||
}
|
||
|
||
echo $_SERVER['REMOTE_ADDR'];
|
||
|
||
?>
|
||
|
||
Проверяем что находит IP по доменному имени
|
||
nslookup dirt.kz 127.0.0.1
|
||
|
||
****************************************************************************************************
|
||
DynDNS на PowerDNS авторитативный сервер DNS на Ubuntu 22.04 согласно инстркции https://phoenixnap.com/kb/powerdns-ubuntu:
|
||
Можно было-бы использовать не 53 порт, но провайдер не даёт указывать порт при настройке DNS серверов (не знаю какие локальные проблемы могут возникнуть если задать не 53 порт)
|
||
Устанавливаем сам PowerDNS https://doc.powerdns.com/authoritative/installation.html
|
||
sudo apt-get install pdns-server
|
||
sudo apt-get install pdns-backend-pgsql
|
||
Подключаюсь к базе и создаю схему базу со схемой из: https://doc.powerdns.com/authoritative/backends/generic-postgresql.html
|
||
Настраиваю соединение с базой данных в:
|
||
sudo mcedit /etc/powerdns/pdns.d/pdns.local.gpgsql.conf
|
||
Со следующим содержимым:
|
||
launch+=gpgsql
|
||
# gmysql parameters
|
||
gpgsql-host=127.0.0.1
|
||
gpgsql-port=5432
|
||
gpgsql-dbname=powerdns
|
||
gpgsql-user=powerdns
|
||
gpgsql-password=y7HMHi0ATxx1VC3UU5WG
|
||
gpgsql-dnssec=no
|
||
Задаю права доступа к файлу:
|
||
sudo chown pdns: /etc/powerdns/pdns.d/pdns.local.gpgsql.conf
|
||
sudo chmod 640 /etc/powerdns/pdns.d/pdns.local.gpgsql.conf
|
||
На всякий случай делаю резервные копии исходных файлов настрое:
|
||
cd /etc/powerdns
|
||
sudo cp named.conf named.conf.bak
|
||
sudo cp pdns.conf pdns.conf.bak
|
||
Наспройку файла pdns.conf авторитетный сервер, есть такой пример который следует изучить: https://raw.githubusercontent.com/trinv/PowerDNS/a56b9122f4a2de9c1f789009f09b9831f74d8bf1/pdns.template.master.conf (естественно без 1й табуляции):
|
||
#allow-recursion=0.0.0.0/0 не включил так как не предполагаю использоват как рккурсивный DNS
|
||
webserver=yes
|
||
webserver-address=0.0.0.0 #Если 0.0.0.0 то слушаем все имеющиеся
|
||
webserver-allow-from=5.76.254.182 #если из любой сети то так: ::/0, 0.0.0.0/0 но я поставил только домашний
|
||
webserver-port=8090
|
||
|
||
Перезагружаем и пытаемся открыть
|
||
sudo systemctl stop pdns.service
|
||
http://77.240.38.137:8090
|
||
Проверяю соединение к базе перезапустив PowerDNS:
|
||
sudo systemctl stop pdns.service
|
||
sudo pdns_server --daemon=no --guardian=no --loglevel=9
|
||
Если всё норм выполняем:
|
||
sudo systemctl restart pdns
|
||
sudo systemctl enable pdns
|
||
sudo systemctl status pdns
|
||
Проверяем что порт 53 открыт для DNS:
|
||
sudo ss -alnp4 | grep pdns
|
||
Проверяем отправляя запрос к dns серверу
|
||
dig @127.0.0.1 google.com
|
||
ping google.com
|
||
проверяем кто слушает на порту 53
|
||
sudo netstat -tulnp | grep :53
|
||
|
||
Для примера авторитетный для домена example.com то в базе данных должны быть такие настройки:
|
||
|
||
|
||
|
||
|
||
********** рекурсивный DNS от PowerDNS, тоже 53 порт и будет конфликт, поэтому на одном IP можно настроить PowerDNS чтобы он выполнял функцию рекурсивного резольвера **********
|
||
Чтобы работал резольвер от PowerDNS а не тот который от ubuntu:
|
||
sudo apt-get install pdns-recursor -y
|
||
sudo mcedit /etc/powerdns/recursor.conf
|
||
И там прописать:
|
||
forward-zones=.=8.8.8.8;8.8.4.4
|
||
Также нужно настроить sudo mcedit /etc/resolv.conf и прописать туда (так как файл символическая ссылка то сервис systemd-resolved нужно остановить иначе он его перезапишет) это чтобы программы перенаправляли запросы поднятому резольверу:
|
||
nameserver 127.0.0.1
|
||
Чтобы запросы переходили на pdns-recursor
|
||
Затем перезагружаем:
|
||
sudo systemctl restart pdns-recursor
|
||
Проверяем что преобразование DNS нормально работает:
|
||
dig @127.0.0.1 google.com
|
||
|
||
********** Отключаю systemd-resolved иначе он будет конфликтовать с PowerDNS **********
|
||
Редактирую /etc/netplan/ для того чтобы прописать поднятый DNS сервер на 127.0.0.1 (не знаю сработает ли так как отключу systemd-resolved)
|
||
sudo netplan apply
|
||
Смотрим что сгенерировалось автоматически в resolv.conf после модификации файла
|
||
cat /etc/resolv.conf
|
||
|
||
Проверяем что интернет не перестал работать:
|
||
ping changelogs.ubuntu.com
|
||
Может быть что команда выше пытается по IP6 работать тогда попробовать по
|
||
ping -4 changelogs.ubuntu.com
|
||
Либо так:
|
||
ping6 changelogs.ubuntu.com
|
||
Взглянем на текущие DNS сервера, у меня такое выдало: DNS Servers: 195.210.46.195 195.210.46.132 на команду ниже:
|
||
resolvectl status
|
||
Отредактировал файл /etc/systemd/resolved.conf заменив nameservers на 8.8.8.8 и 8.8.4.4
|
||
Проверяем структуру файла командой: sudo yamllint /etc/netplan/50-cloud-init.yaml
|
||
Применяем настройки:
|
||
sudo netplan apply
|
||
Проверяем что настройки изменились:
|
||
resolvectl status
|
||
Изменил /etc/systemd/resolved.conf настроив так:
|
||
[Resolve]
|
||
DNS=8.8.8.8 8.8.4.4
|
||
FallbackDNS=1.1.1.1 1.0.0.1
|
||
Потом перезагрузил:
|
||
sudo systemctl restart systemd-resolved
|
||
|
||
Проверяем что заняло порт 53 командой:
|
||
sudo lsof -i :53
|
||
Выдало:
|
||
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
|
||
systemd-r 670 systemd-resolve 13u IPv4 20070 0t0 UDP localhost:domain
|
||
systemd-r 670 systemd-resolve 14u IPv4 20071 0t0 TCP localhost:domain (LISTEN)
|
||
Останавливаем systemd-resolved (поисковик IP по домену по умолчанию от Ubuntu)
|
||
sudo systemctl stop systemd-resolved
|
||
sudo systemctl disable systemd-resolved
|
||
|
||
|
||
|
||
********** PowerAdmin **********
|
||
Устанавливаю PowerAdmin согласно: https://phoenixnap.com/kb/powerdns-ubuntu#ftoc-heading-6
|
||
sudo apt install libpq-dev
|
||
sudo apt install python3-dev
|
||
sudo apt install python3-flask
|
||
sudo apt install python3-pip
|
||
pip install flask-mail && pip install Flask-Migrate && pip install flask-session && pip install python-ldap && pip install flask-login && pip install qrcode[pil] && pip install pytimeparse && pip install dnspython && pip install flask-seasurf && pip install flask-session-captcha && pip install zxcvbn && pip install authlib && pip install pyotp && pip install flask-login && pip install lima && pip install flask-assets && pip install lima && pip install psycopg2 && pip install asyncpg
|
||
|
||
sudo apt install -y git libmysqlclient-dev libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-https python3-venv build-essential curl
|
||
sudo apt install -y nodejs
|
||
sudo apt install -y yarn
|
||
Clone the PowerDNS Admin Git repository to /opt/web/powerdns-admin
|
||
git clone https://github.com/PowerDNS-Admin/PowerDNS-Admin.git /opt/web/powerdns-admin
|
||
cd /opt/web/powerdns-admin
|
||
python3 -mvenv ./venv
|
||
source ./venv/bin/activate
|
||
pip install --upgrade pip
|
||
pip install -r requirements.txt
|
||
Конфигугрируем PowerDNS Admin.
|
||
Для начала копирую пример конфигураци, потом открываю его в редакторе:
|
||
cp /opt/web/powerdns-admin/configs/development.py /opt/web/powerdns-admin/configs/production.py
|
||
mcedit /opt/web/powerdns-admin/configs/production.py
|
||
И редактируем следующие строки:
|
||
#import urllib.parse
|
||
SECRET_KEY = 'e951e5a1f4b94151b360f47edf596dd0'
|
||
SQLA_DB_PASSWORD = 'changeme'
|
||
Cекретный ключ можно сгенерировать при помощи такой команды: python3 -c "import os; print(os.urandom(16))"
|
||
Также настраиваю подключение к базе данных (сам строку составил):
|
||
SQLALCHEMY_DATABASE_URI = 'postgresql://powerdns:y7HMHi0ATxx1VC3UU5WG@127.0.0.1/powerdnsadmin'
|
||
Остальное коментирую:
|
||
#SQLA_DB_USER = 'powerdns'
|
||
#SQLA_DB_PASSWORD = 'y7HMHi0ATxx1VC3UU5WG'
|
||
#SQLA_DB_HOST = '127.0.0.1'
|
||
#SQLA_DB_NAME = 'powerdnsadmin'
|
||
#SQLALCHEMY_DATABASE_URI = 'postgres://{}:{}@{}/{}'.format(
|
||
# urllib.parse.quote_plus(SQLA_DB_USER),
|
||
# urllib.parse.quote_plus(SQLA_DB_PASSWORD),
|
||
# SQLA_DB_HOST,
|
||
# SQLA_DB_NAME
|
||
#)
|
||
#SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'pdns.db')
|
||
|
||
|
||
|
||
Экспортируем переменную:
|
||
cd /opt/web/powerdns-admin
|
||
export FLASK_CONF=../configs/production.py
|
||
export FLASK_APP=powerdnsadmin/__init__.py
|
||
Upgrade the database schema:
|
||
flask db upgrade
|
||
|
||
устанавливаем другие зависемости:
|
||
sudo apt install npm
|
||
sudo apt remove yarn
|
||
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
||
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
|
||
sudo apt update
|
||
sudo apt install yarn
|
||
yarn --version
|
||
sudo yarn install --pure-lockfile
|
||
flask assets build
|
||
|
||
Можно запускать:
|
||
./run.py
|
||
|
||
|
||
Проже запустить с использованием SQLite по инструкции из: https://github.com/PowerDNS-Admin/PowerDNS-Admin/blob/master/docs/wiki/install/Running-PowerDNS-Admin-on-Ubuntu-or-Debian.md
|
||
|
||
SALT = '$2b$12$yLUMTIfl21FKJQpTkRQXC0'
|
||
SECRET_KEY = 'e951e5a1f4b94151b360f47edf596dd0'
|
||
|
||
|
||
|
||
****************************************************************************************************
|
||
Установка сервиса обмена сообщениями RabbitMQ – менеджер сообщений (message broker), написан на Erlang, ближайший аналог в AWS – SQS. По документации из: https://rtfm.co.ua/ru/rabbitmq-zapusk-opisanie-primery/
|
||
sudo apt-get update
|
||
sudo apt-get dist-upgrade
|
||
sudo apt install rabbitmq-server
|
||
Посмотреть список используемых плагинов:
|
||
sudo rabbitmq-plugins list
|
||
Активируем плагин rabbitmq_management для наблюдения за системой по HTTP https://www.rabbitmq.com/management.html https://thewebland.net/development/devops/chast-3-interfejs-upravleniya-rabbitmq/#:~:text=RabbitMQ%20Management%20–%20это%20удобный%20интерфейс,и%20отправлять%20%2F%20получать%20сообщения%20вручную.
|
||
sudo rabbitmq-plugins enable rabbitmq_management
|
||
|
||
rabbitmq_management активирует поддержку API на порту 15672: http://192.168.0.144:15672 http://10.1.7.70:15672 http://192.168.0.83:15672
|
||
Но для активации нужно добавить пользователя, смотрим пользователей:
|
||
sudo rabbitmqctl list_users
|
||
sudo rabbitmqctl add_user admin paRabbit! или test test для локального тестового сервера
|
||
sudo rabbitmqctl set_user_tags admin administrator
|
||
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
|
||
Также можно создать пользователя для публикации сообщений но уже это можно сделать через WEB интерфейс: producer lgGDWAJEwI для guest с паролем: efewG!4ev Александра: alex jefruf!43
|
||
|
||
Теперь можно логинется по test test поменять пароль можно: https://kb.vmware.com/s/article/323520#:~:text=Log%20in%20to%20the%20RabbitMQ,host%20where%20RabbitMQ%20is%20installed.
|
||
Или так можно поменять пароль: sudo rabbitmqctl change_password zenoss New-Password
|
||
producer: клиент, выполняющий отправку сообщения
|
||
queue: собственно очередь сообщений
|
||
consumer: клиент, получающий сообщения из очереди
|
||
exchange: получает сообщения от producer, и отправялет их в очереди в соответствии с его типом (см. тут https://www.rabbitmq.com/tutorials/tutorial-three-python.html)
|
||
|
||
Дальше можно пробовать отправлять данные в очередь используя допустим java библиотеку урок: https://www.youtube.com/watch?v=6lPK_LgTZ9Y
|
||
https://www.rabbitmq.com/devtools.html :
|
||
Создаю Maven проект в консоли:
|
||
cd O:\projects\Workspace_Java\
|
||
mvn archetype:generate -DgroupId=kz.istt.app -DartifactId=TransitToRabbitMQ -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
|
||
Открываю его в idea64 и добавляю в POM следующую зависемость из https://mvnrepository.com/artifact/com.rabbitmq/amqp-client:
|
||
<!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client -->
|
||
<dependency>
|
||
<groupId>com.rabbitmq</groupId>
|
||
<artifactId>amqp-client</artifactId>
|
||
<version>5.14.2</version>
|
||
</dependency>
|
||
Также поставил C:\Program Files\Java\jdk-14.0.2 а то не запускалось, также просит рут права для IntelliJ IDEA.
|
||
|
||
Урок создания maven проекта: https://devcolibri.com/unit/урок-1-подготовка-и-создание-maven-проекта/
|
||
или https://www.jetbrains.com/idea/guide/tutorials/working-with-maven/creating-a-project/
|
||
Добавил в POM файл:
|
||
<repositories>
|
||
<repository>
|
||
<name>RabbitMQ</name>
|
||
<url>https://repo1.maven.org/maven2/com/rabbitmq/amqp-client/5.16.0</url>
|
||
<id>com.rabbitmq</id>
|
||
<releases>
|
||
<enabled>false</enabled>
|
||
</releases>
|
||
<snapshots>
|
||
<enabled>true</enabled>
|
||
</snapshots>
|
||
</repository>
|
||
</repositories>
|
||
|
||
<dependencies>
|
||
<dependency>
|
||
<groupId>com.rabbitmq</groupId>
|
||
<artifactId>amqp-client</artifactId>
|
||
<version>5.16.0</version>
|
||
</dependency>
|
||
</dependencies>
|
||
|
||
|
||
|
||
Перезагружаем:
|
||
sudo service rabbitmq-server restart
|
||
|
||
****************************************************************************************************
|
||
Установка Shovels Plugin для RabbitMQ (лопата) по мотивам из: https://www.rabbitmq.com/docs/shovel
|
||
|
||
Активирую плагин командой:
|
||
sudo rabbitmq-plugins enable rabbitmq_shovel
|
||
sudo rabbitmq-plugins enable rabbitmq_shovel_management
|
||
|
||
Настраиваю Shovels Dynamic плагин в RabbitMQ через командную строку:
|
||
|
||
sudo rabbitmqctl set_parameter shovel kaz_to_kaz '{
|
||
"src-protocol": "amqp091",
|
||
"src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation",
|
||
"src-queue": "TO_KAZ",
|
||
"dest-protocol": "amqp091",
|
||
"dest-uri": "amqp://admin:paRabbit!@10.101.1.11:20000/playground",
|
||
"dest-exchange": "swap",
|
||
"dest-exchange-key": ".KAZ.",
|
||
"ack-mode": "on-confirm",
|
||
"publish-properties": {
|
||
"delivery_mode": 2
|
||
}
|
||
}'
|
||
|
||
Для Росии такие настройки:
|
||
|
||
sudo rabbitmqctl set_parameter shovel kaz_to_rus '{
|
||
"src-protocol": "amqp091",
|
||
"src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation_rus",
|
||
"src-queue": "TO_RUS",
|
||
"dest-protocol": "amqp091",
|
||
"dest-uri": "amqp://iktt_kaz:jkrjHL7xj7PrW1D@192.168.89.133:20000/playground",
|
||
"dest-exchange": "swap",
|
||
"dest-exchange-key": "KZ",
|
||
"ack-mode": "on-confirm",
|
||
"publish-properties": {
|
||
"delivery_mode": 2
|
||
}
|
||
}'
|
||
|
||
Для Беларусии такие настройки:
|
||
|
||
sudo rabbitmqctl set_parameter shovel kaz_to_blr '{
|
||
"src-protocol": "amqp091",
|
||
"src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation_blr",
|
||
"src-queue": "TO_BLR",
|
||
"dest-protocol": "amqp091",
|
||
"dest-uri": "amqp://KZ_IKTT:DK34xDNlZQfQ551k@192.168.90.133:20000/plumber",
|
||
"dest-exchange": "eec.swap",
|
||
"dest-exchange-key": "KZ",
|
||
"ack-mode": "on-confirm",
|
||
"publish-properties": {
|
||
"delivery_mode": 2
|
||
}
|
||
}'
|
||
|
||
Для Армении такие настройки:
|
||
|
||
sudo rabbitmqctl set_parameter shovel kaz_to_arm '{
|
||
"src-protocol": "amqp091",
|
||
"src-uri": "amqp://admin:password@127.0.0.1:20000/transportation_arm",
|
||
"src-queue": "TO_ARM",
|
||
"dest-protocol": "amqp091",
|
||
"dest-uri": "amqp://kz_istt:password@192.168.89.158:20000/transportation",
|
||
"dest-exchange": "swap_kz",
|
||
"dest-exchange-key": "KZ_ISTT",
|
||
"ack-mode": "on-confirm",
|
||
"publish-properties": {
|
||
"delivery_mode": 2
|
||
}
|
||
}'
|
||
|
||
Для Кыргызстана (таможенная инфраструктура)
|
||
|
||
sudo rabbitmqctl set_parameter shovel kaz_to_kgz '{
|
||
"src-protocol": "amqp091",
|
||
"src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation_kgz",
|
||
"src-queue": "TO_KGZ",
|
||
"dest-protocol": "amqp091",
|
||
"dest-uri": "amqp://kz_istt:uzZNYbVTElMDXnfwQx16@192.168.70.133:20000/transportation_kaz",
|
||
"dest-exchange": "swap",
|
||
"dest-exchange-key": "KAZ",
|
||
"ack-mode": "on-confirm",
|
||
"publish-properties": {
|
||
"delivery_mode": 2
|
||
}
|
||
}'
|
||
|
||
Удалять так:
|
||
sudo rabbitmqctl clear_parameter shovel kaz_to_kgz
|
||
|
||
Для отправки из Киргизии нам то такие настройки:
|
||
|
||
sudo rabbitmqctl set_parameter shovel kgz_to_kaz '{
|
||
"src-protocol": "amqp091",
|
||
"src-uri": "amqp://admin:pfta2OFt@127.0.0.1:20000/transportation_kaz",
|
||
"src-queue": "TO_KAZ",
|
||
"dest-protocol": "amqp091",
|
||
"dest-uri": "amqp://kg_amap:qrd2fjEjkegdi7bfb@192.168.70.134:20000/transportation_kgz",
|
||
"dest-exchange": "swap",
|
||
"dest-exchange-key": "KGZ",
|
||
"ack-mode": "on-confirm",
|
||
"publish-properties": {
|
||
"delivery_mode": 2
|
||
}
|
||
}'
|
||
|
||
Удалять так:
|
||
sudo rabbitmqctl clear_parameter shovel kgz_to_kaz
|
||
|
||
|
||
Чтобы проверить текущие параметры Shovel:
|
||
sudo rabbitmqctl list_parameters
|
||
А также можно взглянуть что создалось через WEB интерфейс
|
||
|
||
Не забывать что Exchange: swap должен быть не "direct" а как "topic" иначе маршрутизация не сработает.
|
||
|
||
****************************************************************************************************
|
||
Установка wxWidgets на Linux mint, скачал 3.0.5 по инструкции из https://www.binarytides.com/install-wxwidgets-ubuntu/
|
||
sudo apt-get install libgtk-3-dev build-essential checkinstall
|
||
mkdir gtk-build
|
||
cd gtk-build
|
||
../configure --disable-shared --enable-unicode
|
||
make
|
||
sudo make install
|
||
sudo ldconfig
|
||
sudo checkinstall
|
||
****************************************************************************************************
|
||
Wildfly (JBoss) https://helpingbox.net/ru/установите-и-настройте-wildfly-jboss-в-ubuntu-18-04-lts
|
||
****************************************************************************************************
|
||
Установка Redmine на Ubuntu 22.04 по https://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_50x_on_Ubuntu_2004_with_Apache2
|
||
|
||
Потом скопировать и подправить на PostgreSQL
|
||
admin admin поменял на admin deSert!123
|
||
|
||
Готово теперь можно авторизоваться через WEB интерфейс
|
||
Username: admin
|
||
Password: admin
|
||
****************************************************************************************************
|
||
Установка расширения https://github.com/michelp/pgjwt на ubuntu сервер
|
||
Для компиляции устанавливаю (На тестовую машину, не боевую):
|
||
sudo apt-get update
|
||
sudo apt-get install postgresql-server-dev-14
|
||
apt install ca-certificates curl gnupg lsb-release
|
||
Остановился на том что потребовало установить докер при компиляции: https://www.cherryservers.com/blog/how-to-install-and-use-docker-compose-on-ubuntu-20-04
|
||
sudo apt-get install docker-compose-plugin
|
||
sudo apt-get install docker-compose-plugin
|
||
Клонирую репозиторий:
|
||
sudo apt install git
|
||
git clone https://github.com/michelp/pgjwt.git
|
||
Потом
|
||
make
|
||
Ошибка на мейке...
|
||
install
|
||
****************************************************************************************************
|
||
Install Redis по мативам: https://timeweb.cloud/tutorials/redis/ustanovka-i-nastrojka-redis-dlya-raznyh-os
|
||
sudo apt-get update
|
||
sudo apt install redis
|
||
redis-cli --version
|
||
sudo systemctl status redis
|
||
Config:
|
||
sudo mcedit /etc/redis/redis.conf
|
||
И меняем в конфигурации на: supervised systemd
|
||
Также желательно проверить настройку чтобы слушался только IP: 127.0.0.1
|
||
bind 0.0.0.0
|
||
|
||
Также в поле SECURITY нужно установить пароль, сгенерированный при помощи:
|
||
openssl rand 25 | openssl base64 -A
|
||
Примерно такой должен быть получиться:
|
||
requirepass 9F3/NKWeOjd815vkadT2DcgVHf6fEpVQXw==
|
||
|
||
Перезагружаем:
|
||
sudo systemctl restart redis-server
|
||
Проверяем Redis:
|
||
redis-cli
|
||
Или так проверяем:
|
||
redis-cli -h 127.0.0.1 -p 6379 -a 9F3/NKWeOjd815vkadT2DcgVHf6fEpVQXw==
|
||
И пишем: ping
|
||
|
||
Проверяем какие порты прослушиваются на компе:
|
||
sudo netstat -lnp | grep redis
|
||
|
||
****************************************************************************************************
|
||
Для настройки локального сервера имен DNS сервер в место Bind9 теперь Dnsmasq так как он проще, понадобилось для haproxy
|
||
sudo apt-get install dnsmasq
|
||
sudo apt-get install resolvconf
|
||
sudo apt-get install net-tools
|
||
sudo apt-get install net-tools
|
||
На ошибку "failed to create listening socket for port 53: Address already in use" не обрашаем внимания это норма.
|
||
Настраиваем пакеты:
|
||
sudo mcedit /etc/dnsmasq.conf
|
||
Там будет всё закоментированно, добавляем это:
|
||
no-resolv
|
||
server=8.8.8.8
|
||
listen-address=127.0.0.1
|
||
bind-interfaces
|
||
Далее добавляем пути в /etc/hosts пример
|
||
127.0.0.1 jwt.local
|
||
Перезагружаеи
|
||
sudo /etc/init.d/dnsmasq restart
|
||
Проверяем:
|
||
telnet 127.0.0.1 53
|
||
dig @127.0.0.1 -p 53 jwt.local
|
||
****************************************************************************************************
|
||
Установка GitLab на Ubuntu сервер по https://itslinuxfoss.com/install-gitlab-ubuntu-22-04/
|
||
sudo apt update && sudo apt upgrade -y
|
||
sudo apt install tzdata curl ca-certificates openssh-server
|
||
sudo apt install curl debian-archive-keyring lsb-release ca-certificates apt-transport-https software-properties-common -y
|
||
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
|
||
sudo apt install gitlab-ce
|
||
Также для CI/CD устанавливаем runner, выполняет команды из .gitlab-ci.yml описание: https://habr.com/ru/companies/slurm/articles/306596/
|
||
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
|
||
sudo apt-get install gitlab-runner
|
||
Редактируем имя хоста:
|
||
sudo mcedit /etc/gitlab/gitlab.rb
|
||
И прописываем туда
|
||
external_url 'http://gitlab.local:8081'
|
||
Затем:
|
||
sudo gitlab-ctl reconfigure
|
||
Как завершиться, проверяем:
|
||
sudo gitlab-ctl status
|
||
Должно выдать быть что-то в роде:
|
||
run: alertmanager: (pid 92581) 18s; run: log: (pid 92343) 80s
|
||
run: gitaly: (pid 92590) 18s; run: log: (pid 91561) 189s
|
||
run: gitlab-exporter: (pid 92551) 20s; run: log: (pid 92078) 98s
|
||
run: gitlab-kas: (pid 92520) 22s; run: log: (pid 91845) 175s
|
||
run: gitlab-workhorse: (pid 92531) 21s; run: log: (pid 91985) 117s
|
||
run: grafana: (pid 92610) 17s; run: log: (pid 92471) 38s
|
||
run: logrotate: (pid 91486) 202s; run: log: (pid 91494) 201s
|
||
run: nginx: (pid 91993) 114s; run: log: (pid 92013) 110s
|
||
run: node-exporter: (pid 92540) 21s; run: log: (pid 92049) 104s
|
||
run: postgres-exporter: (pid 92601) 18s; run: log: (pid 92367) 76s
|
||
run: postgresql: (pid 91693) 184s; run: log: (pid 91704) 183s
|
||
run: prometheus: (pid 92560) 20s; run: log: (pid 92297) 88s
|
||
run: puma: (pid 91904) 132s; run: log: (pid 91917) 129s
|
||
run: redis: (pid 91521) 196s; run: log: (pid 91538) 193s
|
||
run: redis-exporter: (pid 92553) 20s; run: log: (pid 92217) 94s
|
||
run: sidekiq: (pid 91922) 126s; run: log: (pid 91934) 122s
|
||
Теперь можно задать логин пользователя (команда долго инициализируется)
|
||
sudo gitlab-rake "gitlab:password:reset"
|
||
Пользователь: root пароль: q12!qwW@ww
|
||
Пробуем зайти по http://gitlab.local:8081 прописав домен в hosts
|
||
|
||
Для настройки непрерывного развёртывания испотльзовать инструкцию: https://serverspace.ru/support/help/nastrojka-konvejera-nepreryvnogo-razvertyvaniya--gitlab-ubuntu-20-22/?utm_source=google.com&utm_medium=organic&utm_campaign=google.com&utm_referrer=google.com
|
||
|
||
Клонирование через токен так:
|
||
https://oauth2:PERSONAL_ACCESS_TOKEN@git.istt.kz/locust/org.ccalm.jwt.git
|
||
https://oauth2:glpat-MCMi4iPS8GQzUusT3XUC@git.istt.kz/locust/org.ccalm.jwt.git
|
||
|
||
https://oauth2:glpat-fseNuqu3Ftb7zwjv-kbT@git.istt.kz/locust/org.ccalm.dbms.git
|
||
https://oauth2:glpat-5fJzjVymFqVumq6FC1yq@git.istt.kz/locust/org.ccalm.main
|
||
https://oauth2:glpat-sKQh2x88gsmZbBCz4SfJ@git.istt.kz/transit/dispatcher/kz.istransit.dispatcher
|
||
|
||
|
||
|
||
|
||
****************************************************************************************************
|
||
Установка nginx по инсткукции с сайта: https://www.8host.com/blog/sozdanie-samopodpisannogo-ssl-sertifikata-dlya-nginx-v-ubuntu-18-04/
|
||
sudo apt-get update
|
||
sudo apt-get install nginx
|
||
Настройка самоподписанного сертификата для SSL nginx
|
||
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
|
||
Самой важной строкой является Common Name (введите FQDN или свое имя). Как правило, в эту строку вносят доменное имя, с которым нужно связать сервер. В случае если доменного имени нет, внесите в эту строку IP-адрес сервера.
|
||
sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096
|
||
Создаём файл:
|
||
sudo mcedit /etc/nginx/conf.d/ssl.conf
|
||
И вписываем в него:
|
||
|
||
server {
|
||
listen 8091 ssl http2;
|
||
listen [::]:8091 ssl http2;
|
||
|
||
server_name istransit.kg;
|
||
|
||
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
|
||
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
|
||
ssl_dhparam /etc/nginx/dhparam.pem;
|
||
|
||
root /opt/www/istransit.kg;
|
||
index index.html index.htm;
|
||
|
||
location / {
|
||
try_files $uri $uri/ =404; # Попытка найти файл или возвращение 404
|
||
}
|
||
}
|
||
|
||
|
||
sudo systemctl restart nginx
|
||
|
||
Также есть такие команды:
|
||
nginx -s stop — быстрое завершение
|
||
nginx -s quit — плавное завершение
|
||
nginx -s reload — перезагрузка конфигурационного файла
|
||
nginx -s reopen — переоткрытие лог-файлов
|
||
|
||
Создаю виртуальный хост:
|
||
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/istransit.kz
|
||
sudo mcedit /etc/nginx/sites-available/aistransit.kz
|
||
|
||
Модифицируем текст настройки:
|
||
server {
|
||
listen 8081;
|
||
listen [::]:8081;
|
||
|
||
root /opt/www/istransit.kz;
|
||
index index.html;
|
||
|
||
server_name istransit.kz www.istransit.kz;
|
||
|
||
location / {
|
||
try_files $uri $uri/ =404;
|
||
}
|
||
}
|
||
|
||
Теперь можно включить виртуальный хост:
|
||
sudo ln -s /etc/nginx/sites-available/istransit.kz /etc/nginx/sites-enabled/
|
||
Проверяем правильность конфигурации:
|
||
sudo nginx -t
|
||
Перезапускаем:
|
||
sudo systemctl restart nginx
|
||
|
||
****************************************************************************************************
|
||
Как установить и настроить Elasticsearch, Logstash, Kibana (ELK Stack) на Ubuntu, Debian, Centos: https://portforwarded.com/install-elastic-elk-stack-8-x-on-ubuntu-22-04-lts/ или https://serveradmin.ru/ustanovka-i-nastroyka-elasticsearch-logstash-kibana-elk-stack/
|
||
|
||
sudo apt update && sudo apt upgrade -y
|
||
Установи java как это делается смотри выше
|
||
sudo apt-get install nginx curl gnupg2 wget -y
|
||
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
|
||
sudo apt-get install apt-transport-httpssudo
|
||
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
|
||
sudo apt update
|
||
sudo apt-get install elasticsearch
|
||
Если не удалось подключить ключи к репозиторию то скачиваем deb пакет в ручную:
|
||
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.2-amd64.deb
|
||
|
||
sudo systemctl enable elasticsearch
|
||
sudo systemctl start elasticsearch
|
||
|
||
sudo mcedit /etc/elasticsearch/elasticsearch.yml
|
||
И там раскоментить и прописать строку: network.host: 0.0.0.0
|
||
Также там поправить на: xpack.security.enabled: false
|
||
|
||
sudo systemctl restart elasticsearch
|
||
|
||
Проверяю версию Elasticsearch
|
||
sudo ufw allow 9200/tcp
|
||
curl -X GET "http://localhost:9200/"
|
||
|
||
У меня выдало:
|
||
{
|
||
"name" : "igor-System-Version",
|
||
"cluster_name" : "elasticsearch",
|
||
"cluster_uuid" : "Li0_4xz2QTuy8ET7qRLTgg",
|
||
"version" : {
|
||
"number" : "8.13.2",
|
||
"build_flavor" : "default",
|
||
"build_type" : "deb",
|
||
"build_hash" : "16cc90cd2d08a3147ce02b07e50894bc060a4cbf",
|
||
"build_date" : "2024-04-05T14:45:26.420424304Z",
|
||
"build_snapshot" : false,
|
||
"lucene_version" : "9.10.0",
|
||
"minimum_wire_compatibility_version" : "7.17.0",
|
||
"minimum_index_compatibility_version" : "7.0.0"
|
||
},
|
||
"tagline" : "You Know, for Search"
|
||
}
|
||
|
||
**********Теперь устанавливаем Kibana**********
|
||
sudo apt-get install kibana -y
|
||
sudo systemctl start kibana
|
||
sudo systemctl enable kibana
|
||
Создаём административного пользователя:
|
||
sudo su
|
||
echo "admin:`openssl passwd -apr1`" | tee -a /etc/nginx/htpasswd.users
|
||
Выдало:
|
||
Дома: admin:$apr1$sFyWSvZH$E8tL1Zbo.i8q2vSsVy1HK/
|
||
На в виртуалке работа пароль 123456 выдало: admin:$apr1$/n5ACpeE$WZBtYrZOgZ10GfdT4YFD31
|
||
Далее создаём в Nginx виртуальный хост, создав конфигурационный файл для сервиса кибаны:
|
||
sudo mcedit /etc/nginx/sites-available/kibana
|
||
|
||
server {
|
||
listen 80;
|
||
|
||
server_name kibana.example.com;
|
||
|
||
auth_basic "Restricted Access";
|
||
auth_basic_user_file /etc/nginx/htpasswd.users;
|
||
|
||
location / {
|
||
proxy_pass http://localhost:5601;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Upgrade $http_upgrade;
|
||
proxy_set_header Connection 'upgrade';
|
||
proxy_set_header Host $host;
|
||
proxy_cache_bypass $http_upgrade;
|
||
}
|
||
}
|
||
|
||
Разрешаем виртуальный хост для проксирования:
|
||
sudo ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/
|
||
sudo systemctl restart nginx
|
||
sudo systemctl status nginx
|
||
|
||
Теперь кибана должна открыться по адресу: kibana.example.com если не открылась перезагружаем комп
|
||
|
||
*********Устанавливаю logstash**********
|
||
sudo apt install logstash
|
||
|
||
sudo systemctl restart logstash.service
|
||
sudo systemctl enable logstash.service
|
||
sudo systemctl status logstash.service
|
||
|
||
|
||
|
||
По документу из: https://habr.com/ru/articles/236341/ и из https://coderlessons.com/tutorials/devops/uznaite-logstash/logstash-kratkoe-rukovodstvo
|
||
Настраиваю logstash открываю потр для отправки логов из Java приложения log4j:
|
||
|
||
Так как установили через репозиторий то для включения плагина Log4j он включается командой:
|
||
sudo su
|
||
/usr/share/logstash/bin/logstash-plugin install logstash-input-log4j
|
||
|
||
Так как logstash загрузает все конфигурации из деректории то создаю новый файл для log4j
|
||
mcedit /etc/logstash/conf.d/log4j.conf
|
||
И теперь можно настроить для приёма log4j логов:
|
||
|
||
input {
|
||
log4j {
|
||
mode => server
|
||
host => "0.0.0.0"
|
||
port => 5044
|
||
type => "log4j"
|
||
}
|
||
}
|
||
output {
|
||
elasticsearch {
|
||
hosts => ["http://localhost:9200"]
|
||
index => "igor-%{+YYYY.MM.dd}"
|
||
#index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
|
||
#user => "elastic"
|
||
#password => "changeme"
|
||
}
|
||
}
|
||
|
||
Затем нужно перезагрузить:
|
||
sudo systemctl restart logstash.service
|
||
|
||
*********Устанавливаю filebeat**********
|
||
apt install filebeat
|
||
|
||
|
||
|
||
****************************************************************************************************
|
||
**********Устанавливаю Loki в месте с Grafana и другими компонентами (Promtail)**********
|
||
Согласно документации из: https://grafana.com/docs/loki/latest/get-started/quick-start/ Для Лва: https://www.youtube.com/watch?v=PBfKDyNPBug
|
||
|
||
Создаём директорию в:
|
||
cd /opt
|
||
mkdir loki
|
||
cd loki
|
||
wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/loki-config.yaml -O loki-config.yaml
|
||
wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/promtail-local-config.yaml -O promtail-local-config.yaml
|
||
wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/docker-compose.yaml -O docker-compose.yaml
|
||
|
||
Меням настройки, прописав в самый конец файла: loki-config.yaml следующее:
|
||
auth_enabled: false
|
||
|
||
|
||
Запускаем:
|
||
sudo docker compose up -d
|
||
Если нужно то для остановки можно выполнить следующую команду:
|
||
sudo docker compose down
|
||
|
||
Пробуем открыть графану:
|
||
http://127.0.0.1:3000/ Логин: admin и пароль admin потом сгенерил пароль: gL%$FXVUrjP7zFf
|
||
|
||
|
||
Теперь можно отправить тестовую строку в логи label “foo=bar2” and a single log line “fizzbuzz”:
|
||
|
||
curl -H "Content-Type: application/json" \
|
||
-s -X POST "http://127.0.0.1:3100/loki/api/v1/push" \
|
||
--data-raw '{"streams": [{ "stream": { "foo": "bar2" }, "values": [ [ "1717279123945000000", "fizzbuzz" ] ] }]}'
|
||
|
||
|
||
|
||
|
||
**********Устанавливаю Promtail**********
|
||
По мотивам: https://tech.pansolusi.com/2023/08/04/installing-promtail-on-ubuntu/
|
||
|
||
cd /opt
|
||
mkdir promtail
|
||
cd promtail
|
||
curl -O -L "https://github.com/grafana/loki/releases/download/v2.9.7/promtail-linux-amd64.zip"
|
||
unzip "promtail-linux-amd64.zip"
|
||
promtail -version
|
||
sudo mcedit /opt/promtail/promtail-local-config.yaml
|
||
|
||
И записываем в файл:
|
||
|
||
server:
|
||
http_listen_port: 9080
|
||
grpc_listen_port: 0
|
||
|
||
positions:
|
||
filename: /tmp/positions.yaml
|
||
|
||
clients:
|
||
- url: 'http://localhost:3100/loki/api/v1/push'
|
||
basic_auth:
|
||
username: alexander
|
||
password: eakrdutpnhjaE2EFrAoi
|
||
|
||
scrape_configs:
|
||
- job_name: system
|
||
static_configs:
|
||
- targets:
|
||
- localhost
|
||
labels:
|
||
job: varlogs
|
||
__path__: /var/log/*log
|
||
- targets:
|
||
- localhost
|
||
labels:
|
||
job: nginx
|
||
__path__: /var/log/nginx/*log
|
||
|
||
|
||
Создаём сервис для запуска Promtail
|
||
sudo mcedit /etc/systemd/system/promtail.service
|
||
И записываем:
|
||
|
||
[Unit]
|
||
Description=Promtail client for sending logs to Loki
|
||
After=network.target
|
||
[Service]
|
||
ExecStart=/opt/promtail/promtail -config.file=/opt/promtail/promtail-local-config.yaml
|
||
Restart=always
|
||
TimeoutStopSec=3
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
|
||
Запускаем:
|
||
sudo service promtail start
|
||
sudo service promtail stop
|
||
sudo service promtail restart
|
||
sudo service promtail status
|
||
sudo systemctl enable promtail
|
||
|
||
Смотрим логи:
|
||
sudo journalctl -u promtail.service
|
||
|
||
Теперь можно смотреть в графане логи: http://127.0.0.1:3000/ с label = file
|
||
Также можно взглянуть на простой WEB интерфейс promtail: http://127.0.0.1:9080
|
||
|
||
**********Устанавливаю Prometheus согласно инструкции из https://ruvds.com/ru/helpcenter/kak-ustanovit-prometheus-na-ubuntu/ **********
|
||
Установка Prometheus
|
||
sudo apt update &&
|
||
sudo apt upgrade -y &&
|
||
sudo useradd --no-create-home --shell /bin/false prometheus &&
|
||
sudo mkdir /etc/prometheus &&
|
||
sudo mkdir /var/lib/prometheus &&
|
||
sudo chown prometheus:prometheus /etc/prometheus &&
|
||
sudo chown prometheus:prometheus /var/lib/prometheus &&
|
||
cd /tmp &&
|
||
wget https://github.com/prometheus/prometheus/releases/download/v3.1.0/prometheus-3.1.0.linux-amd64.tar.gz &&
|
||
tar xvf prometheus-3.1.0.linux-amd64.tar.gz &&
|
||
sudo cp prometheus-3.1.0.linux-amd64/prometheus /usr/local/bin/ &&
|
||
sudo cp prometheus-3.1.0.linux-amd64/promtool /usr/local/bin/ &&
|
||
sudo chown prometheus:prometheus /usr/local/bin/prometheus &&
|
||
sudo chown prometheus:prometheus /usr/local/bin/promtool &&
|
||
rm -rf prometheus-3.1.0.linux-amd64.tar.gz prometheus-3.1.0.linux-amd64
|
||
Настройка Prometheus
|
||
Создайте файл конфигурации prometheus.yml:
|
||
sudo mcedit /etc/prometheus/prometheus.yml
|
||
Прописал туда настройки:
|
||
|
||
global:
|
||
scrape_interval: 15s
|
||
|
||
scrape_configs:
|
||
- job_name: 'prometheus'
|
||
static_configs:
|
||
- targets: ['localhost:9090']
|
||
|
||
Созданём systemd-сервис:
|
||
sudo mcedit /etc/systemd/system/prometheus.service
|
||
|
||
|
||
[Unit]
|
||
Description=Prometheus
|
||
Wants=network-online.target
|
||
After=network-online.target
|
||
|
||
[Service]
|
||
User=prometheus
|
||
Group=prometheus
|
||
Type=simple
|
||
ExecStart=/usr/local/bin/prometheus \
|
||
--config.file /etc/prometheus/prometheus.yml \
|
||
--storage.tsdb.path /var/lib/prometheus/
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
|
||
|
||
Запускаю сервис:
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl start prometheus
|
||
sudo systemctl enable prometheus
|
||
sudo systemctl status prometheus
|
||
```sh
|
||
sudo systemctl restart prometheus
|
||
```
|
||
|
||
Пробуем открыть по адресу:
|
||
http://192.168.200.84:9090
|
||
|
||
Теперь настраиваем сбор логов при помощи node exporter (по мотивам из https://it-dev-journal.ru/articles/monitoring-linux-servera-s-prometheus-node-exporter):
|
||
Последний билд: https://github.com/prometheus/node_exporter/releases
|
||
|
||
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
|
||
tar xf node_exporter-*.tar.gz
|
||
cd node_exporter-1.8.2.linux-amd64
|
||
sudo cp node_exporter /usr/local/bin
|
||
sudo useradd --no-create-home --home-dir / --shell /bin/false node_exporter
|
||
|
||
Создаём сервис:
|
||
sudo mcedit /etc/systemd/system/node_exporter.service
|
||
|
||
[Unit]
|
||
Description=Prometheus Node Exporter
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=node_exporter
|
||
Group=node_exporter
|
||
ExecStart=/usr/local/bin/node_exporter
|
||
|
||
SyslogIdentifier=node_exporter
|
||
Restart=always
|
||
|
||
PrivateTmp=yes
|
||
ProtectHome=yes
|
||
NoNewPrivileges=yes
|
||
|
||
ProtectSystem=strict
|
||
ProtectControlGroups=true
|
||
ProtectKernelModules=true
|
||
ProtectKernelTunables=yes
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl start node_exporter
|
||
sudo systemctl enable node_exporter
|
||
sudo systemctl status node_exporter
|
||
|
||
Теперь Node exporter будет выдавать метрики по адресу
|
||
wget http://localhost:9100/metrics -O -
|
||
wget --user=prometheus --password=PUaAMOhUEOmDmcsJDFWA https://geoserver2.ccalm.org/metrics -O -
|
||
|
||
|
||
Настраиваем HAProxy и basic авторизацию (если писать: insecure-password то пароль не захеширован если написать password то должен быть в md5 лил SHA-*):
|
||
userlist prometheus_list
|
||
user prometheus insecure-password PUaAMOhUEOmDmcsJDFWA
|
||
|
||
acl v_metrics path_beg /metrics
|
||
acl v_basic_auth http_auth(prometheus)
|
||
http-request auth realm Metrics if v_metrics !v_basic_auth
|
||
use_backend metrics if v_metrics
|
||
|
||
backend metrics
|
||
balance roundrobin
|
||
server web1 127.0.0.1:9100 check
|
||
option httpchk
|
||
|
||
|
||
Теперь нужно отредактировать файл sudo mcedit /etc/prometheus/prometheus.yml, добавив новый job_name в scrape_configs с этим адресом.
|
||
|
||
- job_name: 'node_exporter_metrics'
|
||
scrape_interval: 10s
|
||
static_configs:
|
||
- targets: ['localhost:9100']
|
||
|
||
Перезагружаем prometheus чтобы он начал собирать метрики
|
||
```sh
|
||
sudo systemctl restart prometheus
|
||
```
|
||
|
||
Смотрим:
|
||
http://192.168.200.84:9090/targets
|
||
|
||
|
||
Далее устанавливаем графану и добавляем графики для мониторинга
|
||
sudo apt-get install -y software-properties-common
|
||
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
|
||
sudo apt-get install -y gnupg
|
||
sudo apt-get install -y apt-transport-https
|
||
sudo wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
|
||
sudo apt-get update
|
||
sudo apt-get install grafana
|
||
Запустите и включите сервис Grafana:
|
||
sudo systemctl start grafana-server
|
||
sudo systemctl enable grafana-server
|
||
Проверьте статус:
|
||
sudo systemctl status grafana-server
|
||
Открываем:
|
||
http://192.168.200.84:3000 Логин: admin Пароль: admin
|
||
|
||
Заходим в: Home->Connections->Data sources->Add data source
|
||
|
||
Для Node Exporter есть шаблоны:
|
||
Node Exporter Full (ID: 1860) — Полный дашборд для мониторинга серверов с использованием Node Exporter.
|
||
Prometheus (ID: 10991) — Дашборд для мониторинга самого Prometheus.
|
||
Linux Server Monitoring (ID: 10244) — Дополнительный дашборд для мониторинга серверов на Linux.
|
||
|
||
Если вам нужно больше вариантов, вы всегда можете найти готовые дашборды на официальном сайте https://grafana.com/grafana/dashboards/
|
||
|
||
Заходим в графану и в правом верхенем углу жмём + потом Import Dashboard
|
||
|
||
|
||
**********Если нужно то Grafana может быть установленна отдельно **********
|
||
Установка GrafanaLoki через Docker Engine и Docker Compose на Ubuntu 24.04
|
||
|
||
Для установки графаны через докер:
|
||
cd /opt
|
||
sudo mkdir grafana
|
||
cd ./grafana
|
||
sudo mcedit docker-compose.yml
|
||
И прописываем в файл:
|
||
|
||
version: "3.3"
|
||
services:
|
||
grafana:
|
||
image: grafana/grafana-enterprise
|
||
container_name: grafana
|
||
restart: unless-stopped
|
||
ports:
|
||
- '3000:3000'
|
||
loki:
|
||
image: grafana/loki:latest
|
||
container_name: loki
|
||
restart: unless-stopped
|
||
ports:
|
||
- "3100:3100"
|
||
|
||
Затем для запуска контейнера выполняем:
|
||
sudo docker-compose up -d
|
||
Если нужно то для остановки можно выполнить следующую команду:
|
||
sudo docker-compose down
|
||
|
||
Пробуем открыть графану:
|
||
http://127.0.0.1:3000/ Логин: admin и пароль admin потом сгенерил пароль: gL%$FXVUrjP7zFf
|
||
****************************************************************************************************
|
||
Настраиваю Promtail agent для винды для сбора логов c Windows:
|
||
Скачал: https://github.com/grafana/loki/releases в разделе Assets файл promtail-windows-386.exe.zip
|
||
Переместите файл promtail.exe в каталог, например, C:\Program Files\promtail
|
||
Добавьте этот каталог в PATH, чтобы можно было запускать Promtail из командной строки.
|
||
Создаём файл конфигурации в C:\Program Files\promtail promtail-config.yaml со следующим содержимым:
|
||
|
||
server:
|
||
http_listen_port: 9080
|
||
grpc_listen_port: 0
|
||
|
||
positions:
|
||
filename: C:\Program Files\promtail\positions.yaml
|
||
|
||
clients:
|
||
- url: http://192.168.200.106:3100/loki/api/v1/push
|
||
|
||
scrape_configs:
|
||
- job_name: dbms_logs
|
||
static_configs:
|
||
- targets:
|
||
- localhost
|
||
labels:
|
||
job: dbms_logs
|
||
__path__: O:\MyDocuments\projects\Workspace_JavaWin\com.geovizor.dbms\logs\kz_mcp_dbms.log
|
||
|
||
- job_name: jwt_logs
|
||
static_configs:
|
||
- targets:
|
||
- localhost
|
||
labels:
|
||
job: jwt_logs
|
||
__path__: O:\MyDocuments\projects\Workspace_JavaWin\com.geovizor.jwt\logs\kz_mcp_jwt.log
|
||
|
||
|
||
Замените C:\path\to\positions.yaml и C:\path\to\log\files\*.log на соответствующие вашему окружению пути.
|
||
promtail.exe --config.file=promtail-config.yaml
|
||
|
||
****************************************************************************************************
|
||
Установка графаны через докер Grafana в Docker, по мотивам нейросети DeepSeek:
|
||
Установка Docker:
|
||
sudo apt update
|
||
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
|
||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||
sudo apt update
|
||
sudo apt install -y docker-ce docker-ce-cli containerd.io
|
||
Установка Docker Compose:
|
||
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||
sudo chmod +x /usr/local/bin/docker-compose
|
||
Добавляем текущему пользователю группу чтобы он мог работать с докером:
|
||
sudo usermod -aG docker $USER
|
||
|
||
Проверка установки:
|
||
docker --version
|
||
docker-compose --version
|
||
|
||
Создайте директорию, где будут храниться данные Grafana:
|
||
sudo mkdir /opt/grafana
|
||
sudo mkdir /opt/grafana/data
|
||
sudo mkdir /opt/grafana/data/grafana-storage
|
||
sudo mkdir /opt/grafana/config
|
||
sudo chown -R 472:472 /opt/grafana/data/grafana-storage
|
||
sudo chmod -R 775 /opt/grafana/data/grafana-storage
|
||
cd /opt/grafana
|
||
mcedit docker-compose.yml
|
||
И записываем в него такие настройки:
|
||
|
||
services:
|
||
grafana:
|
||
image: grafana/grafana:latest
|
||
container_name: grafana
|
||
restart: unless-stopped
|
||
ports:
|
||
- "3000:3000"
|
||
volumes:
|
||
- /opt/grafana/data/grafana-storage:/var/lib/grafana # Монтируем директорию хоста в контейнер
|
||
environment:
|
||
- GF_SECURITY_ADMIN_USER=admin
|
||
- GF_SECURITY_ADMIN_PASSWORD=admin
|
||
|
||
Запускаем графану с логами для тестов:
|
||
docker-compose -f /opt/grafana/docker-compose.yml up
|
||
Теперь запускае в фоновом режиме:
|
||
docker-compose -f /opt/grafana/docker-compose.yml up -d
|
||
docker-compose -f /opt/grafana/docker-compose.yml down
|
||
Проверяем работу:
|
||
docker-compose -f /opt/grafana/docker-compose.yml ps
|
||
|
||
|
||
****************************************************************************************************
|
||
Устанавливаю Gitea по мативам: https://linuxize.com/post/how-to-install-gitea-on-ubuntu-20-04/
|
||
sudo apt update
|
||
sudo apt install sqlite3
|
||
sudo apt install git
|
||
git --version
|
||
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git
|
||
VERSION=1.22
|
||
sudo wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64
|
||
sudo mv /tmp/gitea /usr/local/bin
|
||
sudo chmod +x /usr/local/bin/gitea
|
||
Создаём директории для хранения данных:
|
||
sudo mkdir -p /var/lib/gitea/{custom,data,log}
|
||
sudo chown -R git:git /var/lib/gitea/
|
||
sudo chmod -R 750 /var/lib/gitea/
|
||
sudo mkdir /etc/gitea
|
||
sudo chown root:git /etc/gitea
|
||
sudo chmod 770 /etc/gitea
|
||
|
||
sudo wget https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/systemd/gitea.service -P /etc/systemd/system/
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl enable --now gitea
|
||
sudo systemctl status gitea
|
||
Отобразило что можно зайти по: http://localhost:3000/
|
||
Выбираем Database Type: SQLite3 остальные настройки можно оставить по умолчанию
|
||
Установил и задал логин: irigm@mail.ru пароль: PF"Ey7#7]mUZ49s
|
||
|
||
Устанавливаем параметры только чтение:
|
||
sudo chmod 750 /etc/gitea
|
||
sudo chmod 640 /etc/gitea/app.ini
|
||
|
||
По мотивам на сайте ещё описывается как сделать проксирование через nginx
|
||
А также как сделать отправку почты
|
||
А также как обновит если что
|
||
|
||
**********CI/CD**********
|
||
Устанавливаю по инструкции из: https://gitea.com/gitea/act_runner
|
||
Скачиваю act_runner с https://about.gitea.com/products/runner/ в директорию: /usr/local/bin
|
||
Задаём права:
|
||
sudo chown root:root /usr/local/bin/act_runner
|
||
Проверяю версию:
|
||
act_runner --version
|
||
Выдало: v0.2.6
|
||
Записываем в конец файла /etc/gitea/app.ini следующие настройки:
|
||
[actions]
|
||
ENABLED=true
|
||
|
||
Потом:
|
||
sudo systemctl restart gitea
|
||
Далее переходим в настройки проекта в пункт "Действия": "Создать новый раннер"
|
||
Там был токен: CIaWAmzI4jYUCRnQcUCdBFPkg4FPGspnjdpqiqXl
|
||
|
||
Создаю каталог:
|
||
/etc/act_runner
|
||
|
||
Генерю конфиг по умолчанию:
|
||
act_runner generate-config > config.yaml
|
||
|
||
Регистрирую новый runner
|
||
act_runner register
|
||
|
||
В WEB интерфейсе gitea появится но похоже от туда можно только удалить.
|
||
|
||
Можно попробовать запустить runner:
|
||
act_runner daemon
|
||
|
||
Регистрация с конфигурационным файлом:
|
||
act_runner -c config.yaml register
|
||
|
||
Запуск с конфигурационным файлом
|
||
act_runner -c config.yaml daemon
|
||
|
||
Можно запустить act_runner как сервис, создав файл: sudo mcedit /etc/systemd/system/act_runner.service но нужно создать ползоветеля без привилений, такого: act_runner
|
||
Но у меня почему то не запустилось...
|
||
Так:
|
||
sudo adduser --disabled-password act_runner
|
||
sudo passwd act_runner
|
||
su act_runner
|
||
|
||
Давать права не обязательно: sudo chown root:root /usr/local/bin/act_runner
|
||
|
||
[Unit]
|
||
Description=Gitea Actions runner
|
||
Documentation=https://gitea.com/gitea/act_runner
|
||
After=docker.service
|
||
|
||
[Service]
|
||
ExecStart=/usr/local/bin/act_runner daemon --config /etc/act_runner/config.yaml
|
||
ExecReload=/bin/kill -s HUP $MAINPID
|
||
WorkingDirectory=/var/lib/act_runner
|
||
TimeoutSec=0
|
||
RestartSec=10
|
||
Restart=always
|
||
User=act_runner
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
|
||
|
||
Запускаем как сервис:
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl enable act_runner
|
||
sudo systemctl restart act_runner
|
||
sudo systemctl stop act_runner
|
||
sudo systemctl start act_runner
|
||
sudo systemctl status act_runner
|
||
|
||
Посмотреть на лог:
|
||
grep "act_runner" /var/log/syslog
|
||
|
||
|
||
|
||
|
||
# .gitea/workflows/publish.yml
|
||
on:
|
||
push:
|
||
branches:
|
||
- main
|
||
workflow_dispatch:
|
||
|
||
jobs:
|
||
run_pull:
|
||
name: run pull
|
||
runs-on: igor
|
||
steps:
|
||
- name: CreateDate
|
||
run: touch /home/igor/runner/$(date +"%Y-%m-%d_%H-%M-%S").txt
|
||
|
||
****************************************************************************************************
|
||
Устанавливаю из Node.js из не стандартного репозитория так как там v12.22.9 а нужно >= 18 версия
|
||
Удаляем старое:
|
||
sudo apt-get remove nodejs npm
|
||
Устанавливаем новое:
|
||
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
|
||
sudo apt-get install -y nodejs
|
||
node -v
|
||
npm -v
|
||
****************************************************************************************************
|
||
LDAP — легковесный протокол доступа к каталогам (Для адрестной книги)
|
||
sudo apt install slapd ldap-utils
|
||
sudo dpkg-reconfigure slapd
|
||
|
||
Настраиваем в файле: /etc/ldap/ldap.conf
|
||
BASE dc=domain,dc=com
|
||
URI ldap://ldap01.domain.com
|
||
|
||
****************************************************************************************************
|
||
Простой инструмент для мониторинга ресурсов сервера:
|
||
sudo apt install netdata
|
||
systemctl restart netdata
|
||
sudo mcedit /etc/netdata/netdata.conf
|
||
# bind socket to IP = 127.0.0.1
|
||
bind socket to IP = 0.0.0.0
|
||
systemctl restart netdata
|
||
Можно открывать по адресу:
|
||
http://10.101.1.3:19999/
|
||
http://10.101.1.6:19999/
|
||
****************************************************************************************************
|
||
Install .NET SDK or .NET Runtime on Ubuntu
|
||
sudo apt-get update
|
||
sudo apt-get install -y dotnet-sdk-8.0
|
||
sudo apt-get install -y aspnetcore-runtime-8.0
|
||
sudo apt-get install -y dotnet-runtime-8.0
|
||
sudo apt install zlib1g
|
||
Теперь можно запустить C# ASP.NET Core
|
||
****************************************************************************************************
|
||
ssl genkeypair spring boot java
|
||
Генерим самоподписанный SSL сертификат:
|
||
keytool -genkeypair -alias weather -keyalg RSA -keystore keystore.jks -keysize 2048 -validity 3650
|
||
Потом прописать настройки:
|
||
|
||
server:
|
||
port: 8081
|
||
ssl:
|
||
key-store: classpath:keystore.jks
|
||
key-store-password: QyKtWPZB
|
||
key-store-type: JKS
|
||
key-alias: weather
|
||
|
||
****************************************************************************************************
|
||
Для разрешения поиска через Samba и NetBIOS:
|
||
sudo apt update
|
||
sudo apt install samba
|
||
sudo systemctl restart smbd
|
||
sudo systemctl enable smbd
|
||
|