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!

Хай щастить!

Debian Jessie: Торрентокачалка с WEB интерфейсом (rtorrent + php5-fpm + rutorrent + nginx)

Итак, давно хочу на свой самосборный простенький NAS на Intel Atom поставить торентокачалку с WEB интерфейсом. NAS стоит высоко под потолком, ни монитора ни клавиатуры не имеет, поэтому WEB управлялка — то что надо 🙂
Вот решил немного покнопкодавить с толком и настроить rtorrent + rutorrent. Для тех кто не в курсе что это, коротко опишу:
rtorrent — консольный torrent-клиент, имеет встроенный RPC, весьма гибок в настройке и функционален
rutorrent — WEB интерфейс для rtorrent написанный на PHP, JS и jQuery и еще бог знает чем … ох уж эти современные WEB-решения 🙂

Напомню что эта статья из цикла Debian Jessie: Мой маленький HowTo, для полноты понимания рекомендую пролистать статьи 1, 2, 3.

Сначала в настройках своей локальной DNS зоны я создал запись A — torrent.my.local, если у вас нету DNS сервера или вы не хотите его использовать, есть 2 варианта:
1. прописать в файле hosts пару ip — name для корректного резолва будущего сервера торрентов
2. ходить на web-интерфейс будущего торент-сервера по ip
Рекомендую всетаки установить и настроить bind и использовать DNS 🙂

Как и положено вначале — установим базово необходимые пакеты rtorrent и screen:

nas:~$ sudo apt-get install rtorrent screen

В Unix есть хорошее правило — запускать процессы от специально созданных для этого пользователей, я тоже стараюсь ему следовать.
Создадим юзера torrent, «под ним» будет работать rtorrent, пул php-fpm и rutorrent:

nas:~$ sudo useradd --comment "User for Torrent" --create-home --shell /usr/sbin/nologin torrent

На просторах инета валяется готовый init скрипт для запуска rtorrent в screen-е в виде сервиса linux. Он правда чуть устарел, в идеале надо будет соорудить такойже для systemd, но попервах сгодится и он. Вариант более чем рабочий!

Переходим в директорию /etc/init.d:

nas:~$ cd /etc/init.d

Качаем init-скрипт:

nas:/etc/init.d$ sudo wget -c https://wtorrent.googlecode.com/files/rtorrentInit.sh

Даем ему права на выполнение:

nas:/etc/init.d$ sudo chmod +x rtorrentd

Минимально необходимые правки — поменять юзера, по умолчанию root, что не есть гуд!:

nas:/etc/init.d$ sudo vim rtorrentd
#Do not put a space on either side of the equal signs e.g.
# user = user
# will not work
# system user to run as
user="torrent"

Добавляем в автозагрузку, чтобы стартовало при загрузке системы:

nas:/etc/init.d$ sudo update-rc.d rtorrentInit.sh defaults

Создаем файл конфигурации приложения rtorrent, программа ищет его в хомя пользователя, поэтому такой путь:

nas:~$ sudo vim /home/torrent/.rtorrent.rc

Минимально рабочий конфиг rtorrent, возможно в процессе использования чтото будет меняться — закину сюда:

# Диапазон рабочих портов torrent клиента
# Если вы за NAT не забываем "пробросить" порты
port_range = 32001-32001

# Включаем DHT
dht = auto

# UDP порт для DHT
dht_port = 32000

# Обмен пирами
peer_exchange = yes

# Использовать ли UDP трекеры
use_udp_trackers = yes

# Директория в которую по-умолчанию будут загружаться файлы
directory = /srv/hitachi/torrents

# Глобальные ограничения по скорости
upload_rate = 80
download_rate = 800

# "Шифруемся" если это возможно
encryption = allow_incoming,try_outgoing,enable_retry

# Директория для записи сессий rTorrent
session = /srv/seagate/.torrent_sessions

# Задаем путь к сокету RPC для управления через WEB
scgi_local = /home/torrent/.sockets/scgi.socket

## @@ Shedules @@ ##
# Периодически проверка и удаление сесий, если торрент удален
schedule = watch_untied,5,5, ((remove_untied))
# Остановить загрузки если Free Disk Space < 1024MB
schedule = low_diskspace,5,60,close_low_diskspace=1024M

По конфигу поясню чуть с путями, у меня в NAS 3 винчестера:
один под систему,
второй /srv/hitachi — для мусора, туда и буду качать торренты
третий /srv/seagate — тоже для мусора, для уменьшения нагрузки на диск я рознес по разным винтам директории сессий и файлов

Если у вас один винчестер — не переживайте, все это может жить и на одном винчестере. Просто создайте в том же хомяке пользователя torrent директорию для загруженных файлов и для сессий, поправьте в конфиге rtorrent и вуаля … Это я уже с жиру бешусь 🙂

Не забываем на роутере (в моем случае он тоже на Debian Jessie) «пробросить» порт указанный в port_range. В конфиг с правилами iptables впишите для таблицы nat такое:

# NAT Table Rules
*nat
# Torrent Forwarding to NAS UDP/TCP
-A PREROUTING -i eth1 -p udp -m udp --dport 32001 -j DNAT --to-destination 192.168.0.100
-A PREROUTING -i eth1 -p tcp -m tcp --dport 32001 -j DNAT --to-destination 192.168.0.100
COMMIT

Создадим директорию для сокетов, забегая наперед скажу что их будет несколько:

nas:~$ sudo mkdir /home/torrent/.sockets

поскльку и конфиг и директорию для сокетов мы создавали от рута (использовали sudo) — поправим права:

nas:~$ sudo chown -R torrent.torrent /home/torrent

Создадим директорию для сессий и сразу права:

nas:~$ sudo mkdir /srv/seagate/.torrent_sessions
nas:~$ sudo chown -R torrent.torrent /srv/seagate/.torrent_sessions

директория для скачанных файлов и опять права:

nas:~$ sudo mkdir /srv/hitachi/torrents
nas:~$ sudo chown torrent.torrent /srv/hitachi/torrents

Итак, все упомянутые выше директории мы создали, пробуем стартовать rtorrent:

nas:~$ sudo /etc/init.d/rtorrentInit.sh start
Starting rtorrent: rtorrent.
nas:~$

Теперь нужно настроить web часть, для этого нам потребуется nginx и php-fpm.
Установим:

nas:~$ sudo apt-get install git-core php5-fpm php5-curl php5-xcache nginx-full

Переходим в домашнюю директорию пользователя torrent, туда розместим web-приложение rutorrent:

nas:~$ cd /home/torrent/

создадим необходимые директории:

nas:/home/torrent$ sudo mkdir {htdocs,logs}

в директорию htdocs клонируем последнюю стабильную версию ruTorrent:

nas:/home/torrent$ sudo git clone https://github.com/Novik/ruTorrent.git htdocs/

выходим с директории /home/torrent:

nas:/home/torrent$ cd
nas:~$

не забываем снова поправить права:

nas:~$ sudo chown -R torrent.torrent /home/torrent

Настройка php-fpm довольно простая.
Переходим в конфиг пулов:

nas:~$ cd /etc/php5/fpm/pool.d/

по умолчанию есть дефолтный пул www, убедимся в этом:

nas:/etc/php5/fpm/pool.d$ ls -l
total 20
-rw-r--r-- 1 root root 18324 Jun  5 07:19 www.conf
nas:/etc/php5/fpm/pool.d$

он нам пригодится в качестве шаблона, ну а дальше он не нужен — выключаю:

nas:/etc/php5/fpm/pool.d$ sudo cp www.conf torrent.conf
nas:/etc/php5/fpm/pool.d$ sudo mv www.conf www.disabled

вот что получилось в итоге:

nas:/etc/php5/fpm/pool.d$ ls -l
total 40
-rw-r--r-- 1 root root 18324 Jun 30 05:44 torrent.conf
-rw-r--r-- 1 root root 18324 Jun  5 07:19 www.disabled
nas:/etc/php5/fpm/pool.d$

вперед настраивать пул torrent:

nas:/etc/php5/fpm/pool.d$ sudo vim torrent.conf

достаточно простейших настроек, у меня вышло так:

[torrent]
user = torrent
group = torrent

listen = /home/torrent/.sockets/php5-fpm.socket
listen.owner = torrent
listen.group = www-data
listen.mode = 0660

pm = dynamic
pm.max_children = 5
pm.start_servers = 0
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.process_idle_timeout = 60s;

chdir = /

php_admin_value[error_log] = /var/log/php-fpm_torrent.log

выходим из директории настройки пулов php-fpm:

nas:/etc/php5/fpm/pool.d$ cd
nas:~$

и запускаем сервис:

nas:~$ sudo systemctl restart php5-fpm.service

В результате у нас должен создаться сокет php-fpm по заданному в конфиге пути, проверяем его наличие:

nas:~$ ls -l /home/torrent/.sockets/
total 0
srw-rw---- 1 torrent www-data 0 Jun 30 06:42 php5-fpm.socket
srwxr-xr-x 1 torrent torrent  0 Jun 30 06:41 scgi.socket
nas:~$

Теперь настройка nginx
Переходим в директорию с настройками:

nas:~$ cd /etc/nginx/
nas:/etc/nginx$

Открываем основной конфиг текстовым редактором vim:

nas:/etc/nginx$ sudo vim nginx.conf

следуя логике минимализма конфигурации и нагрузки на сервер (у меня же Intel Atom!), в основном конфиге я изменил только 3 параметра:

1. Нагрузки на nginx никакой не будет, зачем 4 воркера жрущих память?
worker_processes 1;

2. SSL включен по умолчанию, у меня доверенная локалка — SSL мне не нужен — комментим

3. Сжатие создает доп нагрузку на CPU, у меня он и так слабенький + работа в локалке. Учитывая вышесказанное, сжатие оставлю, но минимальное

Вот такой получился конфиг:

user www-data;
worker_processes 1;
pid /run/nginx.pid;

events {
    worker_connections 768;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    gzip on;
    gzip_comp_level 1;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

Теперь к настройке конфига приложения, розмещаем по классике в /etc/nginx/sites-available и потом включаем симлинком в sites-enabled.
Напомню что я изначально в своей внутренней зоне создал в DNS запись A для торрента — torrent.my.local

переходим в директорию с конфигами сайтов:

nas:/etc/nginx$ cd sites-available/

И сочиняем конфиг:

nas:/etc/nginx/sites-available$ sudo vim torrent_my_local.conf

у меня получился такой:

server {
   listen 80;
   # Если у вас нету DNS имени сервера и вы будете ходить на сервер по ip
   # используйте следующую опцию, вместо моей:
   # server_name _;
   # а также предварительно выключите дефолтный конфиг:
   # sudo rm /etc/nginx/sites-enabled/default
   server_name torrent.my.local;

   access_log /var/log/nginx/torrent-access.log;
   error_log /var/log/nginx/torrent-error.log;

   root /home/torrent/htdocs;
   index index.html;

   # Very rarely should these ever be accessed outside of your lan
   location ~* \.(txt|log)$ {
    allow 127.0.0.0/8;
    deny all;
   }

   # Deny to any .* files. Like ".git", ".svn" ... etc
   location ~ (^|/)\. {
    return 403;
   }

   location / {
    index index.html;
   }

   # rTorrent RPC
   location /RPC2 {
    include scgi_params;
    scgi_pass unix:/home/torrent/.sockets/scgi.socket;
   }

   # PHP Files
   location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass unix:/home/torrent/.sockets/php5-fpm.socket;
    #fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   }

   # Static Files
   location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|html|txt)$ {
    access_log off;
    expires max;
   }
}

для включения конфига, переходим в директорию /etc/nginx/sites-enabled и создаем симлинк на конфиг torrent_my_local.conf:

nas:/etc/nginx/sites-available$ cd ../sites-enabled/
nas:/etc/nginx/sites-enabled$ sudo ln -s ../sites-available/torrent_my_local.conf

вот что должно получиться в итоге (еще раз, если хотите ходить на сервер по ip, удалите симлинк default из директории /etc/nginx/sites-enabled):

nas:/etc/nginx/sites-enabled$ ls -l
total 0
lrwxrwxrwx 1 root root 34 Jun 30 04:53 default -> /etc/nginx/sites-available/default
lrwxrwxrwx 1 root root 41 Jun 30 06:21 torrent_my_local.conf -> ../sites-available/torrent_my_local.conf
nas:/etc/nginx/sites-enabled$

переходим в хомяк:

nas:/etc/nginx/sites-enabled$ cd
nas:~$

проверяем конфигурацию nginx и перезапускаем его:

nas:~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
nas:~$

теперь можно и перезапустить сервис nginx:

nas:~$ sudo systemctl restart nginx.service

если вы все верно настроили, можно попробовать перейти на сайт torrent.my.local, там уже должна корректно открыться главная страничка rutorrent
Правда web-ка rutorrent ругается:

[30.06.2015 10:54:39] WebUI started.
[30.06.2015 10:54:40] No connection to rTorrent. Check if it is really running. Check $scgi_port and $scgi_host settings in config.php and scgi_port in rTorrent configuration file.

Что вполне логично, так как rutorrent также нуждается в минимальной настройке.
Необходимо внести кое-какие правки в основной конфиг приложения rutorrent:

nas:~$ sudo vim /home/torrent/htdocs/conf/config.php

я поменял там всего несколько параметров:

        $log_file = '/home/torrent/logs/rutorrent-errors.log';
        // Закоментим, так как у нас для RPC используется socket
        //$scgi_port = 5000;
        //$scgi_host = "127.0.0.1";
        // Собственно вот он наш сокет
        $scgi_port = 0;
        $scgi_host = "unix:///home/torrent/.sockets/scgi.socket";
        $profileMask = 0755;

После сохранения файла, идем в браузер и снова открываем нашу страничку rutorrent, теперь видим такую ругань во вкладке log:

[30.06.2015 11:01:55] WebUI started.
[30.06.2015 11:01:55] rss: Some functionality will be unavailable. Webserver user can't access external program (curl).
[30.06.2015 11:01:55] mediainfo: Plugin will not work. rTorrent user can't access external program (mediainfo).
[30.06.2015 11:01:55] rss: Some functionality will be unavailable. rTorrent user can't access external program (curl).
[30.06.2015 11:01:55] screenshots: Plugin will not work. rTorrent user can't access external program (ffmpeg).
[30.06.2015 11:01:58] Unpack plugin: rTorrent user can't access 'unzip' program.
[30.06.2015 11:01:58] Unpack plugin: rTorrent user can't access 'unrar' program.

Для начала поставим программы curl, unzip и unrar:

nas:~$ sudo apt-get install unzip unrar

Снова F5 на вебке, уже ругани меньше:

[30.06.2015 11:08:12] WebUI started.
[30.06.2015 11:08:12] rss: Some functionality will be unavailable. Webserver user can't access external program (curl).
[30.06.2015 11:08:12] mediainfo: Plugin will not work. rTorrent user can't access external program (mediainfo).
[30.06.2015 11:08:12] screenshots: Plugin will not work. rTorrent user can't access external program (ffmpeg).

ffmpeg я точно ставить не буду, просто выключу плагин. Mediainfo — не знаю надо ли оно, поживем-увидим.
Вцелом закинул туда для теста .torrent файлик — качает 🙂 Значит готово. Возможно в процессе эксплуатации вылезут какието баги или в комментариях ктото чтото толковое посоветует — допишу в статью.

Хай щастить!