Роман Теличко

Заметки веб-разработчика/админа

Тег debian

Установка и оптимизация Raspbian на Raspberry Pi

// Март 11, 2018 | 2370 просмотров | комментариев (0)

Начнём с Википедии, если для вас эти слова в новинку 🙂

Raspberry Pi — одноплатный компьютер размером с банковскую карту, изначально разработанный как бюджетная система для обучения информатике, впоследствии получивший намного более широкое применение и популярность, чем ожидали его авторы. Разрабатывается Raspberry Pi Foundation. Всего за пять лет было продано более 12,5 миллионов устройств.

Raspberry Pi 3 Model B

  1. Скачиваем и устанавливаем Raspbian на SD-карту
  2. Первая загрузка
  3. Настраиваем сеть
  4. Закрываем всё ненужное с помощью iptables
  5. Оптимизируем дисковые операции
  6. Оптимизируем оперативную память

Читать далее…

Установка pgAdmin4 в Ubuntu 16.04

// Декабрь 2, 2016 | 27807 просмотров | 5 комментариев

pgAdmin4Обновился графический интерфейс для управления СУБД PostgreSQL — pgAdmin 4. Будем надеяться что новая версия не будет так сильно «сыпаться» 🙂
Пока ещё нет ни deb-пакета, ни ссылок на репозиторий, но попробовать уже хочется 🙂

Так что сегодня я расскажу как поставить pgAdmin4 в режиме клиента (pgAdmin4 Desktop)
Читать далее…

Потоковая репликация в PostgreSQL 9.6

// Ноябрь 27, 2016 | 16528 просмотров | комментариев (0)

Потоковая репликация (streaming replication) является передачей записей из WAL (Write-Ahead Log) от мастера к репликам. Писать при этом можно только в мастер, но читать можно как с мастера, так и с реплик. В итоге мы получаем не просто горизонтальное масштабирование, а ещё и отказоустойчивую архитектуру (failover).
Приступим к настройке реплики.

  1. Начальные условия
  2. Устанавливаем PostgreSQL 9.6 в Debian 8 (jessie) на оба сервера
  3. Настраиваем мастер (master)
  4. Настраиваем слейв (slave)
  5. Всё работает? Всё работает!
  6. А давайте что-то поломаем?!
  7. Догоняем прежний мастер до актуального состояния и возвращаем ему прежний статус

Начальные условия

Возьмём 2 сервера (в моём случаи — виртуальные машины) с чистым Debian 8.6 (jessie) amd64.

  1. master: 192.168.0.100
  2. slave: 192.168.0.200

Читать далее…

Делаем ввод паролей в терминале видимым

// Август 11, 2016 | 678 просмотров | комментариев (0)

Каждый раз, когда вы используете sudo — терминал попросит вас ввести пароль пользователя.
Это отличная мера безопасности, тут никто не спорит. Но терминал не предлагает никакой визуальной обратной связи при вводе пароля. Это часто сбивает с толку.
Добавить такую связь довольно просто в результате чего мы будем при вводе видеть «звездочки».

  1. Открываем терминал (часто сочетанием клавиш Ctrl+Alt+T) и вводим
    sudo vi /etc/sudoers
  2. Находим строчку
    Defaults env_reset

    и заменяем её на

    Defaults env_reset,pwfeedback

    visible_passwd_sudoers

  3. Сохраняем наш файл через :wq! (для программы vi)
  4. И вот, теперь вы видим такой результат при вводе:
    visible_passwd_result

Удачи!

PostgreSQL 9.5 в Ubuntu 15.10+

// Февраль 15, 2016 | 1116 просмотров | комментариев (0)

Добавляем в /etc/apt/sources.list адрес к репозиторию с последним PostgreSQL:

sudo -s
echo "deb https://apt.postgresql.org/pub/repos/apt/ `lsb_release -s -c`-pgdg main" >> /etc/apt/sources.list

Получаем «волшебный» ключик:

sudo wget --quiet -O - https://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc|sudo apt-key add -

И теперь всё просто:

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

И можно поставить, если у вас ещё не было:

sudo apt-get install postgresql-9.5

Linux. Установка и настройка анализатора логов Logwatch

// Апрель 30, 2015 | 3089 просмотров | комментариев (1)

logwatch — это анализатор системных логов (журналов), начиная от /var/log/messages и заканчивая логами CISCO-оборудования. Результаты анализа утилита группирует и помещает в отчёт, который может как выводиться в stdout, так и отправляться электронной почтой или сохраняется в файл. Формат отчёта предлагается в трех вариантах: plaintext, HTML или файл, при этом вы можете регулировать уровень детализации отчёта исходя из собственных потребностей.
Сегодня я расскажу вам как его установить и настроить.

Ставится он в Debian/Ubuntu довольно просто:

sudo apt-get install logwatch

После установки копируем файл конфига из довольно странного месторасположения в привычное:

cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/

И открываем на редактирование:

vi /etc/logwatch/conf/logwatch.conf

Настраиваем:

  • Задаём месторасположение временной директории

    TmpDir = /tmp
  • Вид отправки отчета по-умолчанию задаём как

    Output = mail

    чтобы получать отчёты не в stdout (поток стандартного вывода), а на почту.

  • Формат отчёта выбираем HTML, а не plaintext

    Format = html
  • Указываем ваш email, куда будут отправлены ежедневные отчёты

    MailTo = roman@romantelycko.com
  • Задаёт имя и адрес отправителя (потом удобно создать фильтр)

    MailFrom = logwatch@myserver.com
  • Задаём за какой период времени отбирать анализируемые сообщения: all, today или yesterday

    Range = yesterday
  • Определяем уровень детализации отчёта. Может принимать как числовые значения от 0 (минимум детализации) до 10 (максимум). Также можно использовать синонимы: Low, Med и High, которые соответственно равны числовым 0, 5 и 10;

    Detail = Med
  • Задаём имя службы (имя файла из каталога /usr/share/logwatch/scripts/services/), логи которой необходимо анализировать. Если указать значение All, то будут обрабатываться все службы. Более того, можно некоторые из них исключить из отчёта указав перед именем службы минус ("-"). Например включаю в отчёт все службы кроме http и exim:

    Service = All
    Service = "-eximstats"
    Service = "-http"

Внешне вывод в HTML виде выглядит страшненько. Прямо «Привет из 90х».
Лично я сам формат стилизовал следующим образом, хотя можно найти и другие темы в Сети.

Открываем файл HTML-шаблона

vi /usr/share/logwatch/default.conf/html/header.html

И заменяем наш <style>...</style> на следующий:

<style type="text/css">
    body,h1,h2,h3 { 
        margin:0; padding:0; color:#404040;
        font:16px/16px courier,"courier new",Verdana,Arial,sans-serif; 
    }
    a { color:#227596; font-size:14px; }
    ul li a { font-size:18px; line-height:22px; }
    .service { padding:20px 0 0 20px; } 
    .return_link { padding:10px 0 30px 20px; }
    table,tr,td,th { 
        border:0!important; border-collapse:collapse; 
        font:14px/18px courier,"courier new",Verdana,Arial,sans-serif; 
        color:#404040; text-align:left; background: #ffffff; 
    }
    td,th { padding:2px 4px; margin:0; }  
    h1, h1 a, h2, h2 a, h3, h3 a, th { font-size:16px; }
</style>

Проверим работу logwatch. Отчет должен сформироваться и прийти на почту.

/etc/cron.daily/00logwatch

Это всё. Удачи.

Ускоряем Chromium за счёт tmpfs в Linux

// Июнь 6, 2014 | 5774 просмотров | комментариев (1)

Есть довольно простой способ ускорить работу браузера Chromium (Google Chrome) явно указав путь к папке с временными файлами что будет находиться в оперативной памяти (ОЗУ). Этот приём будет особенно полезен владельцам SSD-дисков ресурс перезаписи которых очень ограничен.

Добавляем временное хранилище размером в 1GB (должно хватить), что будет находиться в оперативной памяти (ОЗУ):

sudo mkdir /ram
sudo vi /etc/fstab
tmpfs    /ram    tmpfs    defaults,noatime,mode=1777,size=1024M    0    0

Монтируем:

sudo mount -a

Смотрим:

df -h

Должно быть что-то такое:

Ф. система   Розм     Вик       Дост      Вик%      змонтований на
tmpfs        1,0G     0         1,0G      0%        /ram

Теперь редактируем файл с default-настройками Chromium, явно указывая ему путь к нашему временному хранилищу:

sudo vi /etc/chromium-browser/default

Меняем строчку

CHROMIUM_FLAGS=""

На следующую:

CHROMIUM_FLAGS="--disk-cache-dir=/ram"

Перезапускаем браузер Chromium и смотрим на использование ОЗУ диска:

df -h

Если у вас в колонке «Использовано» что-то большее нуля, то вы всё сделали правильно.

Ф. система   Розм     Вик       Дост      Вик%      змонтований на
tmpfs        1,0G     17M       1008M     2%        /ram

В результате Chromium стал реактивным 🙂
Это всё.
Удачи!

Linux. Список сервисов в автозагрузке

// Июнь 3, 2014 | 10947 просмотров | комментариев (1)

Самый простой и наглядный способ вывести список сервисов/программ, находящихся в автозагрузке, с возможностью их редактирования — это использовать консольную утилиту sysv-rc-conf

Ставим

sudo apt-get install sysv-rc-conf

Запускаем

sudo sysv-rc-conf

и получаем картину:

sysv-rc-conf

Теперь с помощью пробела мы можем включить или выключить автозагрузку сервиса, - — остановит сервис, а +/= — запустит.
Пользуйтесь!

Linux. Настройка двухэтапной аутентификации для пользователя root

// Апрель 15, 2014 | 1810 просмотров | комментариев (0)

Сегодня я расскажу как настроить двухэтапную аутентификацию для пользователя root на вашем сервере по временному одноразовому паролю, что будет генерировать приложение на телефоне или же простая консоль. Смысл в том, что при переходе в суперпользователя на вашем сервере вначале будет запрошен временный (одноразовый) пароль и только затем — пароль рута. Это поможет вам более качественно защитить ваш сервер от несанкционированного доступа.

Начнём с установки OATH Toolkit что уже есть в репозитории Debian.

apt-get install oathtool libpam-oath

Далее нам потребуется сгенерировать случайную строку (секретную фразу) на основе которой и будут генерироваться случайные временные одноразовые ключи. Поэтому стоит держать эту строку в секрете.

head -c 4096 /dev/urandom | md5sum | awk '{print $1}'
6819c89679c56508fec770362e312c4e

В данном примере секретная фраза это 6819c89679c56508fec770362e312c4e.

Теперь нам необходимо создать файл (/etc/users.oath) с описанием алгоритмов работы, пользователя и его секретной фразы.

echo "HOTP/T30 root - 6819c89679c56508fec770362e312c4e" > /etc/users.oath
chown root:root /etc/users.oath
chmod 600 /etc/users.oath

Далее — редактирование файла /etc/pam.d/su.
Вам необходимо дописать после

auth       sufficient pam_rootok.so

строку

auth requisite  pam_oath.so usersfile=/etc/users.oath window=10 digits=6

Где
usersfile — путь к файлу с описанием пользователей и их секретных фраз,
window — размер «окна». Поскольку временный одноразовый ключ создаётся относительно времени, то окно — это расхождение серверного времени от времени клиента/приложения. Одно «окно» — 30 секунд. Т.е. мы задали максимальное расхождение ключей в 5 минут.
digits — необходимое количество цифр во временном одноразовом ключе.

Теперь пробуем получить одноразовый временный пароль с нашей секретной фразой:

oathtool --verbose --totp 6819c89679c56508fec770362e312c4e

На что получим что-то следующее:

Hex secret: 6819c89679c56508fec770362e312c4e
Base32 secret: NAM4RFTZYVSQR7WHOA3C4MJMJY======
Digits: 6
Window size: 0
Step size (seconds): 30
Start time: 1970-01-01 00:00:00 UTC (0)
Current time: 2014-04-15 05:36:28 UTC (1397540188)
Counter: 0x2C6D360 (46584672)

385762

385762 — это и есть наш одноразовый временный пароль, а вот строку Base32 secret мы будем использовать когда будем настраивать приложение для телефона (только вводить мы будем этот код без знаков «=», т.е. как NAM4RFTZYVSQR7WHOA3C4MJMJY).

У Google есть отличная программа для генерирования временных (одноразовых) ключей — Google Authenticator
На официальной странице детально расписано как установить это приложение для телефонов на базе Android, iOS, Blackberry и т.п. поэтому на этом шаге я останавливаться не буду.

И наконец тестируем!

Подключаемся к серверу другим соединением (на всякий случай не закрывайте сессию root!) и пробуем сделать su
Система должна нас вначале спросить одноразовый временный пароль.

$ su
One-time password (OATH) for `root':

Генерируем одноразовый временный пароль либо через консоль с помощью команды oathtool, либо через приложение на вашем телефоне и вводим его.
Если вы всё сделали правильно, то после ввода временного пароля система вам предложит ввести пароль рута.

Это всё. Удачи!

Настройка nginx + php5-fpm под Linux/Debian

// Декабрь 15, 2013 | 24287 просмотров | 29 комментариев

Сегодня я расскажу как настроить связку nginx + php5-fpm под Debian.

Начнём с инсталляции nginx.
И тут же мы сталкиваемся с тем, какой именно пакет ставить, т.к. их существует аж три:

  • nginx-light
  • nginx-full
  • nginx-extras

Отличаются они только поставкой дополнительных модулей.
Вызовем описание пакета nginx-light

aptitude show nginx-light

aptitude покажет какие именно дополнительные модули входят в «лёгкую» версию nginx

STANDARD HTTP MODULES : Core, Access, Auth Basic, Auto Index, Charset, Empty GIF, FastCGI, 
                        Gzip, Headers, Index, Log, Map, Proxy, Rewrite, Upstream. 
OPTIONAL HTTP MODULES : Gzip Precompression, IPv6, SSL, Stub Status.  
THIRD PARTY MODULES   : Echo.

А теперь для сравнения выведем список модулей «расширенной» версии nginx

aptitude show nginx-extras
STANDARD HTTP MODULES : Core, Access, Auth Basic, Auto Index, Browser, Charset, Empty GIF, 
                        FastCGI, Geo, Gzip, Headers, Index, Limit Requests, Limit Zone, Log, 
                        Map, Memcached, Proxy, Referer, Rewrite, SCGI, Split Clients, SSI, 
                        Upstream, User ID, UWSGI.  
OPTIONAL HTTP MODULES : Addition, Debug, Embedded Perl, FLV, GeoIP, Gzip Precompression, 
                        Image Filter, IPv6, MP4, Random Index, Real IP, Secure Link, SSL, 
                        Stub Status, Substitution, WebDAV, XSLT. 
MAIL MODULES          : Mail Core, IMAP, POP3, SMTP, SSL. 
THIRD PARTY MODULES   : Auth PAM, Chunkin, DAV Ext, Echo, Embedded Lua, HttpHeadersMore, 
                        http push, Nginx Development Kit, Upload module, Upload Progress, 
                        Upstream Fair Queue.

Как видите, список модулей и дополнений впечатляет.
С их подробной конфигурацией вы можете ознакомиться здесь и здесь.
Я рекомендую ставить nginx-light, т.к. чем меньше будет доставлено пакетов, тем меньше памяти будет «кушать» ядро nginx. Но также необходимо учитывать нужные модули для работы.
Читать далее…

Страница 1 из 212