Debian Jessie: Установка и настройка Nginx

Это статья из цикла стетей моего небольшого HowTo по Debian Jessie.

Тут мы коротко рассмотрим установку и базовую настройку популярного веб сервера nginx, подготовим его для будущего использования по прямому назначению.

Для начала установим nginx (используются стандартные репы Debian Jessie):

gw:~$ sudo apt-get install nginx-extras

И поехали …
Читать полностью

Debian Jessie: Настройка apache2 + libapache2-mod-php5

Это статья из цикла стетей моего небольшого HowTo по Debian Jessie.

В данной статье мы установим и базово настроим apache2 — один из компонентов самой простой и популярной схемы WEB hosting-ов:

nginx -> apache2 -> mod_php5

Новичкам часто непонятно, зачем в современном вебе досих пор используется apache? Ведь Nginx якобы эффективно отдает статику (png, jpg, css, js … etc), а php-fpm отлично работает с php-кодом и подружить их вместе не составляет труда. Но тут есть небольшая ложка дегтя в виде файлов .htaccess/.htpasswd которые не умеет обрабатывать nginx, а apache умеет 🙂 Данные файлики очень часто используются web-мастерами для различного рода настроек, таких например как реврайты, права доступа, опции php и тд. Простыми словами, это дает пользователю возможность самому, без перезапуска сервисов, настраивать множество нюансов связанных как с apache так и с php. В отличии от этого, перенастройка компонентов связки Nginx + PHP-FPM возможна только со стороны админа и требует перезапуска сервиса. Читать полностью

Debian Jessie: Настройка MySQL Server (mariadb-server)

Это статья из цикла стетей моего небольшого HowTo по Debian Jessie.
Из популярных сборок mysql на сегодня я предпочитаю mariadb. С радостью воспринял тот факт что в официальных репах Debian Jessie предлагается 10-й релиз mariadb-server.
Напомню что описывал как добавить все официальные репозитарии в Debian Jessie.
Установим необходимые пакеты:

gw:~$ sudo apt-get install mariadb-server

В процессе установки спросит пароль root на mysql-server. Вводим 2 раза, желательно сложный. После инсталляции сервис будет запущен и добавлен в автозагрузку автоматически, учтите это 🙂
Поехали дальше … Читать полностью

Debian Jessie: Базовая настройка фаервола (iptables)

Это статья из цикла стетей моего небольшого HowTo по Debian Jessie.
Итак, на данном этапе мы уже порядочно продвинулись с настройками нашего сервера. Мы уже настроили ftp, dhcp, ntp, ssh и вплотную подошли к настройке web-сервера. Но перед этим я бы хотел написать коротенькую заметку про iptables. Это первая настройка фаервола, поэтому тут все будет очень лаконично, чуть позже, после настройки web-сервера мы вернемся к этому вопросу и немного углубимся в тему iptables и безопастности.
Очень рекомендую глянуть пример простейшей настройки iptables на официальном wiki Debian
Ну поехали … Читать полностью

Debian Jessie: DNS Server — установка и настройка Bind9

Это заметка из цикла стетей моего небольшого HowTo по Debian Jessie.

Для начала установим необходимые пакеты:

gw~$ sudo apt-get install bind9 bind9-host bind9utils

А также добавим bind9 в автозагрузку:

gw~$ sudo systemctl enable bind9

Дальше настройка.
Опишу несколько вариантов, чтоб дать возможность каждому понять что и как настраивать, а вы уже сами выбирайте что вам больше подходит:
1. Кэширующий DNS сервер
2. Внутренние зоны
3. Внешние зоны
4. Передача/прием зон (настройка режима master/slave)

Поехали … Читать полностью

ADBlock — Коллекционирую рукописные правила (:

Ох и напрягает меня реклама, без ADBlock в Интернете уже выжить невозможно. Сразу после установки годного браузера Iceweasel (aka Firefox in Debian) и некоторого необходимого тюнинга руки тянутся к инсталу плагина ADBlock Plus. Но из коробки режет он далеко не всю рекламу, приходится чуток допиливать кастомные правила.
По-быстрому написал парочку блоков для web-мусора что попался на глаза:

!!! Block Counters
*.list.ru/*
*.rambler.ru/*
*.yadro.ru/*
!!! Block Yandex Direct
##div[id^="yandex"]

Надеюсь, будет пополняться 🙂 Кому не лень — кидайте в комменты свои правила 🙂

Хай щастить!

Debian Jessie: Установка и настройка DHCP сервера (isc-dhcp-server)

Во вводной статье про свою тестовую сеть я перечислял необходимые сервисы, одним из которых является DHCP. Устанавливать и настраивать данный сервис я буду на сервере gw.my.local
Дело это не сложное, перед началом рекомендую полистать предыдущие публикации из моего маленького howto по Debian Jessie.
Для начала необходимо установить пакет isc-dhcp-server

gw:~ $ sudo apt-get install isc-dhcp-server

Сервис не запустится до тех пор пока в настройках не указать интерфейс на котором будет работать DHCP-сервер. Обслуживать он будет нашу локальную сеть, а значит запускать его нужно только на интерфейсе с линком в локальную сеть. Читать полностью

Debian Jessie: Вводная статья для небольшого HowTo

Итак, начиная свой маленький HowTo по Debian Jessie неплохо бы для начала определиться, а что мы собственно настраиваем? Что хотим получить в итоге?
Я сделал небольшую иллюстрацию на эту тему, визуально нашу задачу проще понять:
Моя тестовая сеть
А теперь задача: нужно построить простую плоскую локальную сеть с доступом в Интернет.
В локальной сети обязательно должны присутствовать такие сервисы:

  • DNS (локальная зона + кэширование внешних зон)
  • DHCP сервер
  • SMB сервер (для машин с OS Windows)
  • NFS сервер (для машин с OS Linux)
  • WEB сервер
  • BackUP сервер

Локальную сеть можно поделить на 2 части, Ethernet и Wi-Fi. Wi-Fi роутер будет работать в режиме «Точка доступа». Настройку точки доступа, в моем случае это была Cisco Aironet 1200 Series, я описывал ранее.
Что касается сервисов, то их розмещение у меня регламентировалось наличием железа. В моем распоряжении оказалась пара простеньких самосборных сервреров на Intel Atom. Я розпределил сервисы между ними вот так:
1. gw.my.local — роутер, DHCP-сервер, DNS-сервер, FTP-сервер, WEB-сервер (полноценный хостинг: Nginx + php-fpm + MySQL). В качестве OS был выбран Debian Jessie, установленный на софтовый RAID1 (зеркало).
2. nas.my.local — файлопомойка: SMB-сервер, NFS-сервер, WEB-сервер для torrent клиента, BackUP-сервер.

Конкретные пошаговые howto по сервисам будут приведены отдельными статьями. Конечто уже готово, коечто будет опубликовано чуть позже. В конечнои итоге я собираюсь опубликовать все статьи из этого списка.

А теперь немного околоайтишного бреда … Что это, зачем это, почему это?
Ответ простой — мой опыт в IT говорит о том что в Украине катастрофически не хватает специалистов способных легко, просто и быстро настроить необходимые для работы компании любого масштаба сервисы. Часто нехватает денег на серверное железо, не говоря уже про лицензии на общепринятый софт от Microsoft да еще и антивирус. В моей практике были реальные случаи когда обычный PC с конфигурацией Celeron 700MHz + 256MB RAM + IDE HDD 40GB + 2 x 100Mb/s LAN’s 3 года обеспечивал небольшой офис ( до 100 сотрудников ) доступом в интернет. А все потому что на нем была установлена OpenBSD 🙂 Также на нем был поднят DNS внутренняя зона + кэш мира и VPN PPTP. Да, это обычный простейший шлюз, да можно было бы купить какойто хардварный за 50$ и настроить его. Но в том конкретном случае нужно было оперативно решить задачу доступа небольшой компании в новом офисе в Интернет. А тут под руками старый комп пылится на складе, списанный и никому ненужный, можно сказать, одной ногой в мусорнике. Но не смотря на скромную конфигурацию послужил бизнесу еще несколько лет …
К чему это я? Нет, не к тому чтоб Вы выбросили свои хардварные роутеры D-Link/TP-Link/Cisco, а к тому чтобы стали немножко шире мыслить и видеть разные варианты. Не всегда доступно то чего бы хотелось, но это не значит что нельзя найти достойную замену. Исходить всегда нужно из реальных потребностей, а не от цены решения (как это обычно делают конторы паразитирующие на откатах) или предпочтения бренда или прочей субьективной ерунды. Еще пример из практики: задача от руководства — обеспечить более оперативным инструментом общения чем электронная почта. Пока виндоадмины надували щеки и прикидывали конфигурацию железа для серверов под Lync, при этом чертыхаясь и матерясь … Ибо зачада свалилась как снег на голову, ресурсов нету, а бюджеты уже и так трещат по швам …. я тихо мирно поднял на FreeBSD ejabberd, спокойно … неспеша … Заняло это аж несколько часов в свободные промежутки от основных задач. И потребовало ресурсов аж 2GB RAM и одного виртуального ядра CPU. Места тоже неособо много … около 10GB (чтоб с запасом для логирования). И такое вот скромное решение спасло на тот момент отдел и дало необходимую отсрочку в полгода для закупки железа под поделие мелкософта. Такчто не ведитесь на гигабайты лапша кода который впаривает вам мелкософт, а юзайте простые, легкие и бесплатные решения Open Source 🙂

Хай щастить!

zabbix_agentd […]: unable to create mutex for log file

Нежданно-негаданно нарвался на такую ошибку при запуске zabbix-agent (v 2.4.5) в CentOS 7:

zabbix_agentd [50425]: unable to create mutex for log file
zabbix_agentd [50428]: cannot create Semaphore: [28] No space left on device

Решение простое как двери, нужно добавить SysV IPC semaphores.
Дефолтное значение выглядит так:

[admin@mx1 ~]$ sudo sysctl -a |grep sem
kernel.sem = 250    32000   32  128
[admin@mx1 ~]$

Для меня достаточно было сделать вот так:

[admin@mx1 ~]$ sudo sh -c 'echo "kernel.sem = 250 32000 32 256" > /etc/sysctl.d/10-zabbix.conf'
[admin@mx1 ~]$ sudo sysctl -p /etc/sysctl.d/10-zabbix.conf

И пробуем стартонуть …
Читать полностью

Debian Jessie: Начальная настройка системы

Статья из разряда «Что вы делаете сразу после установки Debian GNU Linux (или другого дистрибутива) на сервер?»
Чуть ниже я опишу свое видение необходимых начальных настроек системы. Также установку некоторых пакетов и коротко опишу их назначение.

Сразу после свежей установки Debian (любого, но в данном случае Jessie) меня раздражают 2 вещи:
1. Отсутствие моего любимого текстового редактора vim. Есть, правда, дико обрезанный в функциональности vim.tiny (по сути это самый обычный олдскульный vi) да nano — печальная картина. Хотя подозреваю что это необходимая мера чтобы вписаться в минималистичные размеры сборки netinstall.
2. «Бедный» конфиг источников пакетов /etc/apt/sources.list Я не против минимализма и чистоты системы от non-free скверны, но можно же хоть закоменченные строчки contrib/non-free репов в конфиг вписать … Unix way елки-палки. Ubuntu, например, имеет в системе изначально довольно широкий список sources.list с закоменченными опциональными репами. Уважаю в этом плане бубунту.

Порядок решения этих неприятностей обратный, сначала составляем жизненно необходимый конфиг /etc/apt/sources.list, а потом уже можно заняться установкой пакетов и всякими настройками системы.

Для удобства использования из консоли я выложил свой sources.list в виде архива по адресу http://diff.org.ua/configs/deb8_sources_list.gz (ниже есть листинг содержимого, если вы имеете красивый доступ в web, а сервер настраиваете через SSH — то лучше сделайте привычный copy/paste прямо из браузера в консоль ssh)
Использовать его очень просто, после входа на сервер по ssh, переходим под root (у нас пока нету sudo, так как в netinstall он не предустановлен):

user@deb:~$ su -
password:
root@deb:~#

скачиваем архив с помощью wget-а (благо он есть по умолчанию даже в netinstall сборке Debian):

root@deb:~$ wget -c http://diff.org.ua/configs/deb8_sources_list.gz

Дальше мы будем заменять системный конфиг, если Вы совсем новичок, рекомендую перед каждой правкой системных конфигов делать бэкап оригинала. Например для /etc/apt/sources.list это может выглядеть так:

root@deb:~# cp /etc/apt/sources.list /etc/apt/sources.list_orig

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

root@deb:~# zcat deb8_sources_list.gz > /etc/apt/sources.list

Убедиться в том что конфиг обновился, можно так:

root@deb:~# cat /etc/apt/sources.list
# Main Debian Jessie Repository - UA Mirror #
deb http://ftp.ua.debian.org/debian/ jessie main contrib non-free
#deb-src http://ftp.ua.debian.org/debian/ jessie main contrib non-free

# Main Security Repository #
#deb http://security.debian.org/ jessie/updates main contrib non-free
#deb-src http://security.debian.org/ jessie/updates main contrib non-free

# Security Updates - UA Mirror #
deb http://ftp.ua.debian.org/debian-security/ jessie/updates main contrib non-free

# Jessie-updates, previously known as 'volatile' - UA Mirror #
deb http://ftp.ua.debian.org/debian/ jessie-updates main contrib non-free
#deb-src http://ftp.ua.debian.org/debian/ jessie-updates main contrib non-free

# Multimedia Updates - UA Mirror #
deb http://ftp.ua.debian.org/debian-multimedia/ jessie main non-free

# Proposed Updates - UA Mirror #
deb http://ftp.ua.debian.org/debian/ jessie-proposed-updates main contrib non-free

# Jessie Backports - UA Mirror #
deb http://ftp.ua.debian.org/debian/ jessie-backports main contrib non-free
root@deb:~#

Как видно, обновился 🙂
После обновления сорс-листа необходимо перечитать источники пакетов, тоесть репозитарии:

root@deb:~# apt-get update

После исправления sources.list у меня возникает вот такая ошибка:

W: GPG error: http://ftp.ua.debian.org jessie InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5C808C2B65558117

Решается она просто, импортом нужного ключа:

root@deb:~# gpg --keyserver pgpkeys.mit.edu --recv-key 5C808C2B65558117
...
root@deb:~# gpg -a --export 5C808C2B65558117 | sudo apt-key add -
OK
root@deb:~#

Также рекомендую выполнить обновление системы такой командой:

root@deb:~# apt-get dist-upgrade

Если APT предложит обновить какието пакеты — смело соглашайтесь (жмите Y на клавиатуре и Enter), на данный момент у нас свежая чистая система — ломаться особо нечему.

Теперь, когда мы настроили sources.list и сделали apt-get update, apt-get dist-upgrade — можно приступать к установке дополнительных полезных пакетов. Вот перечень того что я устанавливаю в первую очередь:
sudo — отличный системный инструмент позволяющий очень гибко настраивать доступ к администрированию системы. Например можно пользователю либо группе дать доступ хоть на одно хоть на несколько админских действий … вплоть до полного root-доступа. Гибко, удобно и просто.
tree — удобная консольная утилита для визуализации содержимого каталогов
mc — консольный двухпанельный олдскульный файловый менеджер. Удобный в работе и весьма функциональный.
screen — нечто наподобии оконного менеджера для консоли. Долго вникал в эту утилиту — но не зря, весьма удобно.
rsync — консольная утилита/сервис для синхронизации файлов
tcpdump — сетевая консольная утилита для просмотра траффика в реальном времени. Чтото типа wireshark.
mtr-tiny — сетевая консольная утилита для троссировки маршрутов. Аля tracert под виндой
vim — очень мощный консольный текстовый редактор
dmidecode — системная утилита для просмотра информации о железе сервера
curl — консольная утилита для работы с web контентом. Аля wget но более функциональная
dnsutils — пакет сетевых DNS утилит. Чаще всего из него я использую утилиты host и dig
git-core — git клиент, для клонирования проектов с git-репозиториев, таких например как github

Для установки данных пакетов использую стандартный инструмент — apt-get:

root@deb:~# apt-get install sudo tree mc screen rsync tcpdump mtr-tiny vim dmidecode curl dnsutils git-core

Ждем пока отработает команда по установке пакетов и потихоньку читаем дальше …

Перво наперво в новой системе я настраиваю sudo. Настройка sudo очень простая.
Открываем основной конфиг:

root@deb:~# visudo

Обычно в Debian даны права sudo для пользователей в группе sudo. Убедимся в этом:

%sudo   ALL=(ALL:ALL) ALL

добавить пользователя в группу sudo (это дает пользователю административные права, будьте осторожны!) можно так:

root@deb:~# gpasswd -a someuser sudo
Adding user someuser to group sudo
root@deb:~#

Если пользователь someuser был залогинен в системе — нужно перелогиниться чтобы применить настройки групп.
Вот и вся настройка, теперь пользователь someuser может с помощью sudo выполнять админские команды со своим паролем, например просмотр messages лога:

deb$ sudo cat /var/log/messages

Мне очень не нравится дэфолтная поддержка IPv6, не то чтобы я был совсем против данной технологии — просто она мне абсолютно не нужна. Да и к тому же портит вид выхлопа таких команд как:

$ ip a
$ ifconfig
$ netstat

и тп

Поддержку IPv6 можно легко выключить, совсем 🙂 Чем и предлагаю заняться.

Отключаем IPv6:
Тут есть 2 варианта, первый — отключить в загрузчике, и второй — с помощью sysctl. Я пользуюсь первым вариантом.
Открываем конфиг загрузчика:

deb$ sudo vim /etc/default/grub

и прописываем в параметр GRUB_CMDLINE_LINUX вот что:

GRUB_CMDLINE_LINUX="ipv6.disable=1"

Обновляем настройки Grub:

deb$ sudo update-grub

После перезагрузки получите систему с выключенным ipv6 🙂 Пока не перегружаемся, это мы сделаем чуть позже …

Небольшая оптимизация APT:
Еще один момент про apt — если вы используете в системе locale отличную от en_US.* то apt тянет все доступные переводы для пакетной базы (украинские, русские, румынские, африканские и тд.), размер их не то чтобы огромный, но приличный — десятки мегабайт в сумме, обвновляются каждый запуск apt-get update … незнаю как вам, но мне такие переводы абсолютно не нужны. Проверить locale можно одноименной командой:
вот так у меня:

deb:~$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
deb:~$

в моем случае ничего делать не надо, если у вас локаль отличная от en_US.* — рекомендую отключить загрузку ненужных переводов, как это делать — я описывал ранее.

Настройка vim:
Две важные настройки без которых я жить не могу 🙂
Открываем основной конфиг:

deb:~$ sudo vim /etc/vim/vimrc

розкомментировать строчки:

syntax on
set background=dark

а вообще vim очень мощный инструмент и настроек у него огромное количество, почитайте о нем на досуге.

Также неплохо бы хоть базово настроить bash, не хочу повторяться, гляньте тут, возможно захотите поменять некоторые параметры 🙂

Настроить timezone можно простой перенастройкой пакета tzdata:

deb:~$ sudo dpkg-reconfigure tzdata

Я там говорил про ребут, пока еще не время 🙂
Сначала рекомендую настроить базовые сервисы, а потом уже можно reboot!

Хай щастить!