Статьи из рубрики «administering»
Администрирование web-серверов, Windows, Linux и всё в том же духе
ACL как одно из решений проблемы работы web-сервера под root
Я довольно часто встречал конфигурацию, когда web-сервер работает под root, чтобы обойти жёсткие права доступа, установленные на каталоги пользователей. Рассмотрим на примере: предположим, что пользовательские сайты расположены в /home/<username>/, при этом права на каталог home установлены в 0711 (rwx--x--x), а права на пользовательские каталоги установлены в 0700 (rwx------). Такие права устанавливаются, чтобы изолировать пользователей друг от друга — один пользователь не сможет зайти и посмотреть домашний каталог другого пользователя. Такая мера популярна у администраторов виртуального (shared) хостинга.
Для того, чтобы web-сервер мог нормально обслуживать сайты, обычно используется одно из следующих решений:
- web-сервер работает под учётной записью root;
- права на домашний каталог устанавливаются в 0750 (
rwxr-x---), а пользователь, под которым работает web-сервер, вносится в группу, которой принадлежит пользователь.
Ноя
2009
nginx и gzip_static: еще один способ снизить нагрузку на сервер
Чем меньше размер страниц сайта, тем меньше расход трафика, загрузка канал и выше скорость загрузки страниц. Один из самых распространённых способов уменьшения страниц — сжатие перед отправкой пользователю.
В Apache для этих целей используется mod_deflate, в nginx — ngx_http_gzip_module.html. В других web-серверах используются похожие решения.
Что mod_deflate, что ngx_http_gzip_module используют сжатие «на лету» — файл сжимается перед отдачей пользователю. Но сжатие — операция, нагружающая процессор, и чем выше степень сжатия, тем больше нагрузка. Это не было бы проблемой, если бы один и тот же файл не приходилось сжимать каждый раз заново. Далее »
Ноя
2009
Модуль поддержки tcpwrappers для nginx
TCP Wrappers — система контроля доступа, используемая для ограничения доступа к серверам на UNIX-подобных операционных системах (Linux, BSD). Контроль доступа может осуществляться, например, по имени хоста (полному или частичному), адресу, подсети. Подробности приведены здесь.
TCP Wrappers очень удобно использовать с программами для защиты от червей (BlackHosts, DenyHosts, Fail2ban), в частности, для защиты от HTTP-сканирования.
Огромным достоинством TCP Wrappers является возможность динамической конфигурации списков контроля доступа (что избавляет от необходимости перезапускать защищаемый сервис) и простота файлов конфигурации (это субъективно).
К сожалению, nginx не поддерживает TCP Wrappers из коробки. К счастью, это можно исправить. Далее »
Автор: Vladimir, опубликовано в: C/C++, nginx, Администрирование, Безопасность, комментариев: 2Окт
2009
Борьба со спамом на уровне фильтра пакетов
Два месяца назад я писал об одном очень жестком методе борьбы с последствиями установки плагина Time spent on blog. Теперь этот же самый метод применяем на спам-ботах, которые безуспешно пытаются оставить спам в комментариях.
Отвлекусь от темы и отвечу на вопрос о необходимости применения жестких мер против спамеров: во-первых, они генерируют много паразитного трафика (трафик не бесплатен), во-вторых, они генерируют лишнюю нагрузку на сервер, в-третьих, вода камень точит — любую капчу можно подобрать. Далее »
Автор: Vladimir, опубликовано в: Linux, WordPress, Администрирование, комментариев: 6Июл
2009
dk-filter: util.c:47: dk_sterilize: Assertion `str != ((void *)0)’ failed: Часть 2
Вчера я писал об ошибке в dk-filter, приводящей к гибели процесса, если dk-filter сконфигурирован использовать разные ключи для подписи сообщений от разных отправителей, и ключ для отправителя не найден.
Я предложил два решения: тривиальное (изменить файл конфигурации так, чтобы все отправители начинались со звёздочки) и правильное (пропатчить код демона, ибо фатальное завершение по такой пустяковой ошибке — это неправильно).
Именно о втором решении далее пойдёт речь. Далее »
Автор: Vladimir, опубликовано в: C/C++, Linux, Администрирование, комментариев: нетИюл
2009
dk-filter: util.c:47: dk_sterilize: Assertion `str != ((void *)0)’ failed.
На днях столкнулся с неприятной ошибкой: при отправлении письма dk-filter падал с ошибкой
dk-filter: util.c:47: dk_sterilize: Assertion `str != ((void *)0)’ failed..
В баг-трекере Debian решения проблемы не нашлось (хотя проблеме больше года), пришлось все решать самому (люблю open source!).
Проблема проявлялась, когда dk-filter был запущен в конфигурации, использующей несколько ключей для подписывания сообщений (грубо говоря, каждому домену полагался свой ключ). Далее »
Автор: Vladimir, опубликовано в: Linux, Администрирование, комментариев: 1Июл
2009
Linux: экстренная перезагрузка сервера
Иногда случаются ситуации (поменьше бы их таких), когда из-за какой-нибудь ошибки оборудования или повреждения файловой системы операционная система входит в ступор и не может прочитать ничего с диска. Систему нужно перезагружать, но система не может прочитать /sbin/reboot, а техническая поддержка тупит (не могу не передать привет техперсоналу HiVelocity.net).
В этом случае систему можно перезагрузить двумя командами echo (нужны права администратора). Далее »
Июл
2009
Резервное копирование баз данных с отправкой на email
Навеяно статьёй Дмитрия «Ежедневный бэкап для WordPress с помощью Gmail», которую я очень рекомендую к прочтению.
Основное отличие моего метода кроется в моих «религиозных предпочтениях»: я считаю, что вряд ли какая программа сможет сделать копию базы быстрее, чем mysqldump, и бинарный файл всегда работает быстрее, нежели самый оптимизированный PHP-код. Поэтому никаких лишних плагинов для WordPress, только подручные средства
Хотя данное решение не подойдёт людям, использующих shared-хостинг. Далее »
Апр
2009
PHP 5.2.6 в Debian Lenny: неожиданный сюрприз
Есть сервер с Debian Lenny на борту. На сервер стоит Apache, MySQL, PHP5 — одним словом, стандартный web-сервер. Плюс XCache и ionCube Loader.
С некоторого времени стали замечать, что PHP начал падать с ошибками сегментации, причем падал исключительно CLI, модуль Apache работал исправно. Далее »
Автор: Vladimir, опубликовано в: Linux, PHP, Администрирование, комментариев: 5Мар
2009
Подсчёт трафика в nginx: часть 2
В статье «Подсчёт трафика в nginx» я приводил один из возможных вариантов живого подсчёта трафика в nginx.
У прошлого решения есть недостатки:
- используется три лишних процесса;
- используется много файловых дескрипторов (зависит от количества виртуальных хостов).
Я на днях нашёл еще один вариант. Далее »
Автор: Vladimir, опубликовано в: Linux, MySQL, nginx, Администрирование, комментариев: 7Фев
2009
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.

