Архив рубрики: IT

Плавное обновление nginx

После ручной сборки nginx из исходных кодов выполнение перезапуска веб-сервера приведет к ошибке о занятом интерфейсе:

nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)

Так происходит потому, что скрипт запуска (/etc/init.d/nginx) не обнаруживает в памяти запущенного рабочего процесса новой версии, а на старый не обращает внимания.
Читать далее

Как сохранять корректное имя при загрузке файла wget

Если передать консольному загрузчику файлов wget ссылку с параметрами, имя загруженного файла будет содержать часть этих параметров. Например, команда

wget http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.2/zabbix-2.2.2.tar.gz?r=http%3A%2F%2Fwww.zabbix.com%2Fdownload.php&ts=1396461786&use_mirror=freefr

приведет к тому, что в папке вместо архива с окончанием tar.gz будет лежать файл zabbix-2.2.2.tar.gz?r=http:%2F%2Fwww.zabbix.com%2Fdownload.php

wget может попытаться получить правильное имя можно с помощью параметра —content-disposition.
Читать далее

Вывод времени события в dmesg

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

[ 0.217507] TCP established hash table entries: 65536 (order: 8, 1048576 bytes)
[ 0.217762] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
[ 0.217941] TCP: Hash tables configured (established 65536 bind 65536)
[ 0.218034] TCP: reno registered
[ 0.218112] UDP hash table entries: 4096 (order: 5, 131072 bytes)
[ 0.218211] UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes)
[ 0.218344] NET: Registered protocol family 1
[4315224.110087] r8169 0000:04:00.0 eth0: link down
[4315230.097079] r8169 0000:04:00.0 eth0: link up

В начале каждой строки указано время, прошедшее с момента старта системы, до наступления события. Оценить продолжительность отсутствия линка на интерфейсе eth0 в примере выше — нетривиальная задача. Гораздо проще сделать это, переведя время в человеку понятный формат.
Читать далее

Свой WebDAV сервер на nginx

В предыдущей статье, посвященной данной теме, было описано, как завести у себя небольшой WebDAV сервер на Apache. Набирающий популярность веб-сервер nginx также также подходит для этих задач. Его модуль ngx_http_dav_module поддерживает основные WebDAV-методы PUT, DELETE, MKCOL, COPY и MOVE, а с помощью дополнения nginx-dav-ext-module можно включить поддержку остальных (PROPFIND и OPTIONS).
Читать далее