Установка Redis в Ubuntu 18.04

Настраиваем сервер — http://zztest.ru/?p=140.

https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04

При запуске команды

systemctl reload redis.service

возникает ошибка, видимо нужно вызывать

service redis restart

Настройка доступа по ip

Страндартными средствами нельзя создать белый лист ip-адресов. Используем UFW.

sudo nano /etc/redis/redis.conf

Ищем и меняем:

bind 0.0.0.0 # открытие во внешнюю сеть
requirepass foobared # установка пароля
service redis restart
ufw allow from 10.7.87.51 to any port 6379
sudo ufw enable

Выключение/запуск

/etc/init.d/redis-server stop
/etc/init.d/redis-server start

Включение mod_status в Apache 2 для Docker

По умолчанию, в официальном docker hub apache php mod_status включен и настроен, но к нему нужно открыть доступ.

Для этого нужно зайти в контейнер и включить server-status

docker exec -it container_name /bin/bash
nano /etc/apache2/mods-available/status.conf

В блоке server-status нужно закомментировать Require local.

После нужно обновить конфиг

service apache2 reload

Если используется .htaccess нужно добавить правило RewriteCond %{REQUEST_URI} !=/server-status. Например:

RewriteEngine on
RewriteCond %{REQUEST_URI} !=/server-status
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

Внимание! После всех операций нужно вернуть как было, дабы не публиковать серверную информацию.

Начальная настройка сервера c Ubuntu 16.04

Создание sudo пользователя

adduser roots
usermod -aG sudo roots

Настройка авторизации по открытому ключу

Генерация ключей на локальной машине

Для Windows нужна puttygen с официального сайта. Нажимаем Generate, водим мышкой, passphase вводить не обязательно. Сохраняем приватный ключ, публичный ключ копируем из поля Public key for pasting into OpenSSH authorized_keys file.

Копирование публичного ключа на сервер

su - roots
mkdir ~/.ssh && chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys # добавляем в конец публичный ключ
chmod 600 ~/.ssh/authorized_keys

Отключение входа по паролю

sudo nano /etc/ssh/sshd_config

Раскомментируем строку PasswordAuthentication, удалив # в начале строки, затем изменяем значение на no.
Меняем port с 22 на любой другой, не больше 65535.
Устанавливаем PermitRootLogin no.

sudo systemctl reload sshd

Дополнительно можно ограничить доступ по IP через AllowUsers.

Настройка базового файрвола

Документация

sudo ufw allow ... # ssh port
sudo ufw enable
sudo ufw status # должен появиться список, в котором открыт только нужный порт

Источники

Начальная настройка сервера c Ubuntu 16.04 — Digital Ocean
Настройки безопасности SSH — Ru Highload

Установка и настройка PostgreSQL 10 на Ubuntu 16.04

Настраиваем сервер — http://zztest.ru/?p=140.

Установка

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'

Команду ниже нужно запускать под рутом:

sudo su - root
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \apt-key add -
exit
sudo apt-get update
sudo apt-get -y install postgresql-10

Разрешаем подключение к PostgreSQL по сети

sudo nano /etc/postgresql/10/main/postgresql.conf
listen_addresses = '*' # лучше указать список IP-адресов
port = ...
sudo nano /etc/postgresql/10/main/pg_hba.conf
host all all 19.25.87.19/32 md5 # добавить в конец, подсеть для подключения
# дополнительные подсети, например для администрирования и для боевой среды
sudo systemctl restart postgresql
sudo ufw allow ... # port

Восстановление из pg_dumpall

При необходимости, дамп нужно скачать

scp root@10.7.121.149:/var/www/ad/docker/postgres_server/share/postgres.dump /tmp/postgres.dump

Если я правильно понимаю это, по умолчанию пользователь postgres заблокирован, для разблокировки нужно задать ему пароль.

ВНИМАНИЕ! Во время восстановления к базе уже можно обращаться, но это может нарушить ее целостность, т.к. индексы еще могут не создаться. Поэтому запросы к бд лучше не производить.

sudo su - postgres
psql
\password postgres # задать пароль для пользователя
\q
psql -f /tmp/postgres.dump
exit

Настройка производительности

http://pgtune.leopard.in.ua/

https://ruhighload.com/%D0%A2%D1%8E%D0%BD%D0%B8%D0%BD%D0%B3+%D0%B1%D0%B0%D0%B7%D1%8B+postgres

SSL on/off

Выключение при не постоянных соединениях дает значительный прирост.

synchronous_commit

Отключение данного параметра дает значительный прирост скорости при изменении данных с небольшими рисками.

Настройка ролей

На основе https://www.8host.com/blog/ispolzovanie-rolej-i-upravlenie-dostupom-v-postgresql/

sudo su - postgres

Источники

Установка и настройка PostgreSQL 10 на Linux Ubuntu Server —
Заметки IT специалиста

How To Secure PostgreSQL Against Automated Attacks — Digital Ocean

Docker cron with environment variables

При запуске cron в docker возникает много сложностей. О части из них хорошо написано в этой статье. Но в той статье как мне показалось, предложен сложный путь решения проблемы с переменными окружения.

Попробуем это сделать проще.

Читать далее Docker cron with environment variables

Docker tips

Удаление неиспользуемых volume-s:

docker volume ls -qf dangling=true | xargs -r docker volume rm

Для запуска nano внутри контейнера

export TERM=xterm

Запуск утилиты psql в интерактивном режиме официального PostgreSQL образа:

docker exec -it container_name psql -U postgres