Docker. Немного теории и практики.

В последнее время набирает обороты использование контейнерной виртуализации для изоляции приложений. Зачем это нужно? Во-первых — безопасность. Приложение не может получить доступ к системе за пределы выделенного контейнера. Во-вторых — управление зависимостями. Все необходимые библиотеки устанавливаются в контейнер, а не на хост-систему и версии данных библиотек могут быть любыми, а не только теми, что доступны в хост-системе. В-третьих управление доступом к файловым системам и не только. Раздел или каталог могут быть примонтированы к разным контейнерам с разными опциями (например, каталог, в который пользователи сайта загружают файлы имеет смысл монтировать с опцией noexec, для того, чтобы из него было невозможно запустить исполняемые файлы).

Дальше всех в данном вопросе продвинулся инструментарий Docker. Попробуем в нем немного разобраться для того, чтобы вывести возможные области применения.
Continue reading «Docker. Немного теории и практики.»

Советы по написанию bash-скриптов

Bash по-прежнему остается важным инструментом в работе системного администратора. Обычно он применяется для скриптов автоматизации и парсинга текстовой информации (да простят меня адепты Perl и Python).

Несмотря на то, что для написания действительно больших серьезных проектов Bash мало пригоден, это не означает, что скрипты можно писать «лишь бы работало». Следующие советы облегчат жизнь вам (и тем, кто будет вынужден их поддерживать).

Continue reading «Советы по написанию bash-скриптов»

HTTPS @ NGINX. Небольшие самодельные грабли.

Наткнулся на небольшие грабли в nginx при установке https. В целом, сказанное здесь относится не только к nginx, но и к любому серверу занимающемуся терминацией SSL (TLS) и кешированием динамического контента.

Кеш NGINX, как и любой кеш, представляет собой key-value базу данных. NGINX при поступлении запроса ищет в нем нужный ресурс используя в качестве ключа хеш от неких параметров, указанных директивой proxy_cache_key.

По умолчанию она принимает следующее значение:
proxy_cache_key $scheme$proxy_host$request_uri;
Чем меньше переменных в ней указано, тем (незначительно) выше производительность, поэтому есть соблазн удалить первую переменную ($scheme — схема URL, принимает значения «http://» или «https://»).

Continue reading «HTTPS @ NGINX. Небольшие самодельные грабли.»

Разбиение haproxy.cnf на файлы

Любому администратору известно, что намного удобнее работать с конфигами логически разделенными на файлы. Это позволяет облегчить процесс автоматизации, да и найти нужную информацию так легче.

Увы, но с конфигурационным файлом HAProxy так не получится. В нем нет директивы include ни в каком виде.

Continue reading «Разбиение haproxy.cnf на файлы»

.htaccess не нужен!

Да, именно так. Он не нужен. Вообще. Давно пора отказаться от его использования (особенно если сайт размещается на VPS или выделенном сервере). К сожалению, существует масса CMS, не работающих без него.

Данный файл позволяет переопределить настройки веб-сервера Apache для директории в которой он находится без перезагрузки веб-сервера.

Почему следует от него отказаться?

Continue reading «.htaccess не нужен!»