Как стать автором
Обновить

Microsoft и Canonical добавят поддержку systemd в подсистему Windows для Linux

Настройка Linux *Системное администрирование *Софт

Microsoft и Canonical объединились, чтобы добавить поддержку systemd в подсистему Windows для Linux, что позволяет устанавливать большее количество совместимых приложений.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 2.8K
Комментарии 3

Набор заметок. Производительность и защита, от сайта до системы

Разработка веб-сайтов *
Из песочницы
Краткий анонс

Собирался добавить пару предположений на счет авторизации и регистрации на сайте, но то ли от недосыпания, то ли от многочисленных выпитых сегодня чашек кофе меня потянуло в дебри. Набросал некоторые заметки. Возможно кто-то из Вас найдет что-то новое для себя, возможно кто-то подскажет новое правило для кого-то, возможно кто-то поправит меня тем самым дав и мне урок, и другим. Ниже идут некоторые заметки работы с БД, еще ниже уже несколько заметок про работу самого сервера и т.д.
Читать дальше →
Всего голосов 44: ↑31 и ↓13 +18
Просмотры 4K
Комментарии 33

Запуск worker'ов сервиса с помощью systemd

Разработка под Linux *
Tutorial
После выхода Ubuntu 16.04 (новый LTS релиз), systemd стал реальностью всех основных дистрибутивов Linux, использующихся на серверах. Это означает, что можно закладываться на расширенные возможности systemd, не рискуя оставить часть пользователей приложения «за бортом».

Этот пост о том, как реализовать многоворкерное приложение средствами systemd.

Abstract: Использование шаблонов сервисов и target'ов для запуска нескольких инстансов сервиса (реализация «воркеров»). Зависимость PartOf. Немного про [install] секцию у unit'ов.

Вступление


Многие языки программирования с плохой или никакой многопоточностью (Python, Ruby, PHP, довольно часто C/C++) используют концепцию «воркера». Вместо того, чтобы городить сложные отношения между тредами внутри приложения, они запускают несколько однопоточных копий приложения, каждое из которых берёт на себя кусок нагрузки. Благодаря опции SO_REUSEPORT есть даже возможность «вместе» слушать на одном и том же порту, что покрывает большинство задач, в которых возникает потребность в воркерах (собственно, обычные серверные приложения, реализующие API или обслуживающие веб-сайт).

Но такой подход требует наличия «супервизора», который отвечает за запуск копий, следит за их состоянием, обрабатывает ошибки, завершает при всякого рода stop/reload и т.д. При кажущейся тривиальности — это совершенно не тривиальная задача, полная нюансов (например, если один из воркеров попал в TASK_UNINTERRUPTIBLE или получил SIGSTOP, то могут возникнуть проблемы при restart у не очень хорошо написанного родителя).

Есть вариант запуска без супервизора, но в этом случае задача reload/restart перекладывается на администратора. При модели «один процесс на ядро» перезапуск сервиса на 24-ядерном сервере становится кандидатом в автоматизацию, которая в свою очередь требует обработки всех тех же самых SIGSTOP и прочих сложных нюансов.

Одним из вариантов решения проблемы является использование шаблонов сервисов systemd вместе с зависимостью от общего target'а.
Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Просмотры 21K
Комментарии 20

Автозапуск Яндекс.Диска как службы systemd в Fedora 19

Настройка Linux *Системное администрирование *
Из песочницы
Захотелось тут делать на Яндекс.Диск резервные копии. Операционная система у меня Russian Fedora 19 x64. Запуск через rc.local был удален еще из предыдущих выпусков Fedora как устаревший, и я решил делать все по уму — запускать Яндекс.Диск как системную службу. Стандартный запуск служб в Fedora 19 это systemd, начинаем двигаться в этом направлении. Использую официальный консольный клиент Яндекс.Диска ( да код закрытый, но работает намного шустрее чем webdav, и не надо ломать голову с синхронизацией).
Читать дальше →
Всего голосов 9: ↑7 и ↓2 +5
Просмотры 12K
Комментарии 6

Systemd — стандартная система инициализации в Debian GNU/Linux

Open source *
В третьем голосовании по выбору системы инициализации по умолчанию проект Debian GNU/Linux выбрал Systemd. Таким образом, Systemd теперь будет поставляться в большинстве наиболее популярных дистрибутивов GNU/Linux.

Решение может быть пересмотрено путем проведения референдума среди всех разработчиков Debian. В резолюции указано, что в случае, если большинство разработчиков Debian отдадут предпочтение системе инициализации, отличной от systemd, то такое решение будет иметь более высокий приоритет и будет автоматически утверждено техническим комитетом. С учётом большого числа разногласий в сообществе разработчиков, вероятность проведения общего референдума очень высока. (opennet).

Systemd — демон инициализации и системного управления для Linux, разработанный в качестве замены устаревшим sysvinit и bsdinit. Демон использует возможности современного аппаратного обеспечения, выполняя параллельную загрузку сервисов и расходуя меньше ресурсов благодаря отсутствию прослойки командной оболочки.
Читать дальше →
Всего голосов 21: ↑17 и ↓4 +13
Просмотры 16K
Комментарии 39

Ubuntu переходит на systemd

Настройка Linux *
После известного голосования, Майкл Шаттлворт согласился с тем, чтобы в убунту был systemd вместо upstart. (В 14.04 будет upstart, а дальше произойдёт переход на systemd).

Источник: www.markshuttleworth.com/archives/1316
Всего голосов 102: ↑43 и ↓59 -16
Просмотры 17K
Комментарии 22

И объял меня systemd до глубин дистрибутива моего

Настройка Linux *Системное администрирование *
Оно случилось: Debian начал переход на systemd.

Для системных администраторов это выглядит вот так:
localhost# apt-get update;apt-get upgrade
...
The following packages have unmet dependencies:
 systemd-sysv : Breaks: sysvinit-core but 2.88dsf-53 is installed.
The following actions will resolve these dependencies:

     Remove the following packages:
1)     sysvinit-core               

Accept this solution? [Y/n/q/?]


Что это означает? Это означает прохождение рубежа в постепенной миграции на systemd, решение о котором было принято чуть ранее, замена sysv-init на systemd. Пакет sysvinit-core содержит в себе /sbin/init, и его заменяют на другой /sbin/init из состава systemd.

Кто-то видит в происходящем шаг в светлое будущее, где все будут счастливы и почти не надо будет умирать, кто-то видит акт трагичного и смиренного принятия роковой судьбы, тёмной длани Рэдхэта, простирающейся на все дистрибутивы вокруг и устраняющий Фатальный Недостаток других систем запуска, кто-то просто со стоическим отчаянием ждёт ещё больше и больше Поттеринга (Л. Поттеринг — автор systemd, он же автор pulseaudio, он же автор неповторимого стиля изложения новых идей, при которых для старого образа жизни и мышления не остаётся места).

Читать дальше →
Всего голосов 60: ↑49 и ↓11 +38
Просмотры 35K
Комментарии 176

Git и Microsoft SQL Server

Git *Microsoft SQL Server *
Tutorial
Привет всем!

В предыдущем посте было рассказано о трудностях, которые испытывают разработчики при написании SQL-кода (причём актуальны эти проблемы не только для MS SQL Server). Здесь же рассказ о том, как использовать Git для версионного контроля кода SQL Server с помощью SQLFuse. Принцип тот же, что и с обычными файлами, но есть некоторые особенности.



Читать дальше →
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 20K
Комментарии 17

Страсти вокруг systemd и его использования по умолчанию в Debian

Open source *
Группа «давних Unix-админов» открыла сайт debianfork.org. Они призывают сообщество рассмотреть альтернативу форка Debian, потому что этот дистрибутив собирается переходить на демон systemd.

Systemd — демон инициализации других демонов в Linux, который используется вместо SystemV Init (sysvinit). Его особенность — интенсивное распараллеливание запуска служб в процессе загрузки, что позволяет существенно ускорить старт операционной системы. Вероятно, скоро его начнут использовать по умолчанию в Debian.

Это очередной этап давней дискуссии вокруг systemd. Некоторые считают, что он нарушает философию Unix. Более месяца назад (та же?) группа активистов запустила проект BoycottSystemd.org, призывая бойкотировать systemd и дистрибутивы Linux, которые используют этот демон.
Читать дальше →
Всего голосов 88: ↑62 и ↓26 +36
Просмотры 66K
Комментарии 171

Шпаргалка по управлению сервисами CentOS 7 с systemd

Блог компании Infobox
Systemd – менеджер системы и сервисов в операционной системе Linux. При разработке eго стремились спроектировать обратно совместимым со скриптами инициализации SysV init и предоставить полезные функции, такие, как параллельный запуск системных сервисов во время загрузки, активацию демонов по требованию, поддержку снепшотов состояния системы и логику управления сервисами, основанную на зависимостях. В CentOS 7 systemd заменяет Upstart как систему инициализации по умолчанию.

В этой статье мы рассмотрим процесс управления сервисами в systemd для пользователя CentOS 7. Эти знания будут полезны и в других дистрибутивах, ведь systemd уже давно используется в Fedora и планируется в Ubuntu 14.10 и Debian 8. Хорошо это или нет — оставим за кадром.

CentOS 7 Systemd Infobox

В процессе чтения статьи вы можете попробовать systemd на классических VPS и облачных VPS от Infobox. Мы стремимся своевременно добавлять поддержку современных ОС, чтобы вы могли использовать последние технологии для более эффективной работы. Сама идея написания статьи родилась после очередного вопроса пользователей об использовании сервисов в CentOS 7.
Читать дальше →
Всего голосов 66: ↑61 и ↓5 +56
Просмотры 314K
Комментарии 10

Первый отчет от проекта Devuan

Блог компании FirstVDS
Перевод
Все мы следили и следим за развитием событий вокруг внедрения systemd в различные дистрибутивы. Не стал исключением и дистрибутив Linux — Debian, вокруг которого разгорелись нешуточные страсти.

Часть сообщества недовольного внедрением systemd в Debian, гордо называющие себя Veteran Unix Admins, откололись от Debian. Они основали свой форк Devuan, целью которого обозначили создание дистрибутива с возможностью выбора системы инициализации и защиты интересов сторонников классической организации работы Debian.


И вот, 22 декабря, практически через месяц после первого анонсирования, появился первый отчет о проделанной работе над проектом. Ниже я опубликую перевод:
Читать дальше →
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 7.5K
Комментарии 3

Игра про автора systemd — Леннарта Поттеринга

Блог компании FirstVDS Open source *
Пока вокруг внедрения systemd в различные дистрибутивы разгораются нешуточные страсти, вплоть до покидания постов в совете, как это было с Debian, некоторые разработчики вместо бесплодных и жарких баталий по переписке занимаются полезным делом.

Кто-то внедряет systemd, кто-то несогласный делает форки, а кто-то — игры.


Читать дальше →
Всего голосов 34: ↑28 и ↓6 +22
Просмотры 21K
Комментарии 49

Разбираемся с установкой и загрузкой Linux на примере ArchLinux

Настройка Linux *Системное администрирование *
Из песочницы
Сначала мы установим Archlinux и превратим его в загрузочный сервер. Прямо оттуда подготовим новую компактную систему, в которую добавим минимальное графическое окружение и самый необходимый функционал (на примере Firefox). Научим нашу систему загружаться по сети даже на компьютерах с UEFI. Затем полностью переведём её в режим «только для чтения» (сделаем «живой»), что позволит нам использовать систему одновременно хоть на пол сотне разномастных компьютеров с одним единственным загрузочным сервером. Это всё будет работать даже внутри дешёвой 100-Мб сети, которую мы дополнительно «разгоним» в пару раз.

Никакие закладки в жестких дисках будут вам не страшны, потому что дисков у нас не будет. Никакие очумелые ручки пользователей ничего не сломают, т. к. после перезагрузки система вернется в первозданное лично вами состояние. Конечно же, вы научитесь и сможете самостоятельно изменять загружаемую систему таким образом, чтобы в ней содержался только нужный вам функционал и ничего лишнего. Между делом мы выясним, как и в каком порядке загружается Linux, а также из чего он состоит. Знания, как известно, — бесценны, поэтому я делюсь ими даром.

Постараюсь без долгих рассуждений пояснять происходящее, иногда забегая немного вперёд, но впоследствии обязательно раскладывая всё по полочкам. Чтобы у вас вообще не возникало проблем с пониманием, предполагаю, что вы уже работали с каким-нибудь готовым дистрибутивом Linux, пробовали писать простые скрипты с помощью nano или другого текстового редактора. Если вы новичок в ArchLinux, то узнаете много нового, а если «старичок», то узнаете поменьше, но, надеюсь, что в любом случае вы ещё сильнее полюбите Linux.

Информации оказалось очень много. И по устоявшейся голливудской традиции впереди вас ждёт сериал в нескольких частях:
продолжение;
окончание.

Сейчас мы установим Archlinux в VirtualBox, который можно будет клонировать и запускать практически на любом компьютере с legacy BIOS без каких-либо дополнительных настроек. Между делом мы познакомимся с основными приёмами работы с systemd, а также узнаем как его использовать для запуска произвольных служб и программ во время загрузки. Ещё мы увидим, какие этапы проходит Linux при загрузке, и напишем собственный обработчик (hook), который поместим в initramfs. Не знаете что такое initramfs? Тогда заходите под кат.
Читать дальше →
Всего голосов 11: ↑6 и ↓5 +1
Просмотры 117K
Комментарии 6

Systemd за пять минут

Блог компании Southbridge
Наша компания занимается администрированием веб-серверов на базе CentOS. Довольно часто наши клиенты используют веб-приложения на базе python, ruby или java. Для автозапуска подобных приложений есть готовые шаблоны для написания стартап-скриптов. Но прогресс не стоит на месте, вышел уже второй релиз CentOS 7 и, следуя старой традиции «не ставить dot-zero релизы на продакшен», мы начинаем предлагать клиентам сервера на базе CentOS 7.1 (1503).

В CentOS7, так же как и в его родителе RHEL7, используется systemd — менеджер системы и служб для Linux, совместимый со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации и много всего прочего.

image

Огромный монстр с множеством возможностей, гибкими настройками и мегабайтами документации…

Но что делать, если стоит задача быстро-быстро, вот прямо вчера, сделать автозапуск некоего сервиса?
Давайте выжмем из документации минимально необходимый набор информации для создания простых старт-стоп скриптов.
Знакомство с systemd
Всего голосов 70: ↑66 и ↓4 +62
Просмотры 513K
Комментарии 58

Управление логгированием в systemd

Блог компании Selectel
Tutorial
Systemd Journal

Демон инициализации systemd де-факто уже стал стандартом в современных Linux-системах. На него перешли многие популярные дистрибутивы: Debian, RHEL/CentOS, Ubuntu (начиная с версии 15.04). В systemd используется принципиально иной (по сравнению с традиционным инструментом syslog) подход к логгированию.
В его основе лежит централизация: специализированный компонент journal cобирает все системные сообщения (сообщения ядра, различных служб и приложений). При этом специально настраивать отправку логов не нужно: приложения могут просто писать в stdout и stderr, a journal сохранит эти сообщения автоматически. Работа в таком режиме возможна и с Upstart, но он сохраняет все логи в отдельный файл, тогда как systemd сохраняет их в бинарной базе, что существенно упрощает  систематизацию и поиск.

Хранение логов в бинарных файлах также позволяет избежать сложностей с использованием парсеров для разных видов логов. При необходимости логи можно без проблем переконвертировать в другие форматы (более подробно об этом будет рассказано ниже).
Journal может работать как совместно с syslog, так и полностью заменить его.
Для просмотра логов используется утилита journalctl. Об особенностях и тонкостях работы с ней мы расскажем в этой статье.
Читать дальше →
Всего голосов 44: ↑41 и ↓3 +38
Просмотры 107K
Комментарии 15

Supervisord и forever больше не нужны. Systemd

Настройка Linux *Системное администрирование *
В статье речь будет идти о systemd, который вошел в Debian 8 jessie. Я пишу о Debian, потому что пользуюсь именно им. Пишу о systemd не потому что его фанат, но некоторые вещи меня действительно радуют.

Так почему же больше не нужны supervisord и forever?
Читать дальше →
Всего голосов 35: ↑25 и ↓10 +15
Просмотры 47K
Комментарии 67

Параллельное выполнение зависимых задач и синхронизация с условными переменными в shell

Блог компании TrueVDS Программирование *Системное программирование *
Как синхронизировать параллельные шелл-процессы, используя named pipes (FIFO-файлы) в качестве условных переменных. Как выполнить параллельно зависимые задач в топологическом порядке с минимумом средств: POSIX shell, mkfifo, POSIX kernel. Как параллельный запуск ускоряет загрузку встраиваемых систем и *BSD (rc-этап FreeBSD с 27 до 7 секунд) или старт приложений в пользовательских контейнерах Docker, LXC и jail. Как это повышает аптайм в отказоустойчивых кластерах Jet9.
Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 12K
Комментарии 10

Изолируем демоны с systemd или «вам не нужен Docker для этого!»

Информационная безопасность *
В последнее время я вижу, как довольно большое количество людей применяет контейнерную виртуализацию только для того, чтобы запереть потенциально небезопасное приложение внутри контейнера. Как правило, используют для этого Docker из-за его распространенности, и не знают ничего лучше. Действительно, многие демоны первоначально запускаются от имени root, а далее либо понижают свои привилегии, либо master-процесс порождает обрабатывающие процессы с пониженными привилегиями. А есть и такие, которые работают исключительно от root. Если в демоне обнаружат уязвимость, которая позволяет получить доступ с максимальными привилегиями, будет не очень приятно обнаружить злоумышленников, уже успевших скачать все данные и оставить вирусов.
Контейнеризация, предоставляемая Docker и другим подобным ПО, действительно спасает от этой проблемы, но также и привносит новые: необходимо создавать контейнер для каждого демона, заботиться о сохранности измененных файлов, обновлять базовый образ, да и сами контейнеры часто основаны на разных ОС, которые необходимо хранить на диске, хотя они вам, в общем-то, и не особо нужны. Что делать, если вам не нужны контейнеры как таковые, в Docker Hub приложение собрано не так, как нужно вам, да и версия устарела, SELinux и AppArmor кажутся вам слишком сложными, а вам бы хотелось запускать его в вашем окружении, но используя такую же изоляцию, которую использует Docker?

Capabilities

В чем отличие обычного пользователя от root? Почему root может управлять сетью, загружать модули ядра, монтировать файловые системы, убивать процессы любых пользователей, а обычный пользователь лишен таких возможностей? Все дело в capabilities — средстве для управления привилегиями. Все эти привилегии даются пользователю с UID 0 (т.е. root) по умолчанию, а у обычного пользователя нет ни одного из них. Привилегии можно как дать, так и отобрать. Так, например, привычная команда ping требует создания RAW-сокета, что невозможно сделать от имени обычного пользователя. Исторически, на ping ставили SUID-флаг, который просто запускал программу от имени суперпользователя, но сейчас все современные дистрибутивы выставляют CAP_NET_RAW capability, которая позволяет запускать ping из-под любого аккаунта.
Получить список установленных capabilities файла можно командой getcap из состава libcap.
% getcap $(which ping)
/usr/bin/ping = cap_net_raw+ep

Флаг p здесь означает permitted, т.е. у приложения есть возможность использовать заданную capability, e значит effective — приложение будет ее использовать, и есть еще флаг iinheritable, что дает возможность сохранять список capabilities при вызове функции execve().
Capabilities можно задать как на уровне ФС, так и просто у отдельного потока программы. Получить capability, которая не была доступна с момента запуска, нельзя, т.е. привилегии можно только понижать, но не повышать.
Также существуют биты безопасности (Secure Bits), их три: KEEP_CAPS позволяет сохранить capability при вызове setuid, NO_SETUID_FIXUP отключает перенастройку capability при вызове setuid, и NOROOT запрещает выдачу дополнительных привилегий при запуске suid-программ.
Читать дальше →
Всего голосов 72: ↑70 и ↓2 +68
Просмотры 46K
Комментарии 34

Заставляем сервис php-fpm 5.6, запущенный через systemd, читать глобальные переменные окружения

PHP *
Это короткий how-to для реализации конфигурации php-сервиса, зависимого от окружения, в котором он запущен. Я буду рад, если кто-то подскажет более изящное решение или поправит в мелочах.

Основная идея


Запускать сервис, микросервисы и зависимые приложения в рамках одной экосистемы, конфигурируемой с помощью переменных окружения.

Проблема

В этой статье слишком много раз повторяется «переменные окружения».
Из коробки php-fpm игнорирует глобальные переменные окружения (getenv function), в то время как php cli их может получать.
Читать дальше →
Всего голосов 17: ↑12 и ↓5 +7
Просмотры 13K
Комментарии 2

Node.js в бою (создание кластера)

Разработка веб-сайтов *Node.JS *
Перевод
Tutorial
Когда вы используете приложения на node.js в продакшене, вам приходится задумываться о стабильности, производительности, безопасности и удобстве поддержки. Данная статья описывает мои мысли о лучших практиках использования node.js в бою.

К окончанию данного руководства вы получите систему из 3 серверов: балансировщик (lb) и 2 сервера приложений (app1 и app2). Балансировщик будет следить за доступностью серверов и распределять между ними траффик. Серверы приложений будут использовать комбинацию systemd и кластеризации node.js для балансировки траффика между несколькими процессами ноды на сервере. Вы сможете выкатывать код с помощью одной команды со своей машины, и при этом не будет перерывов в обслуживании или необработанных запросов.
Все это можно представить в виде схемы:


Читать дальше →
Всего голосов 37: ↑35 и ↓2 +33
Просмотры 67K
Комментарии 17