12 сентября 2012

New Midnight Commander releases

This week has been announced a new release of the Midnight Commander - console file manager.

ChangeLog

Debian/Ubuntu repositories was freezed because of the upcoming Wheezy release, so you can find the latest versions in my repository.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

10 сентября 2012

Пробрасывание внешнего ip на виртуальный сервер

Редко, но метко в моей практике возникает задача, когда нужно быстро поднять сервер с "белым ip" для демонстрации результатов работы или просто для целей тестирования нового функционала перед выкатыванием его в продакшен. Каждый раз арендовать VDS для этого накладно, а связываться с облаками для подобных целей мне не хочется.

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

29 августа 2012

Как получить доступ к серверу через SSH, имея только виртуальный FTP аккаунт

Сегодня попался довольно интересный случай в саппорте, где пришлось отлаживать работу приложения на PHP, имея только виртуальный FTP аккаунт. В качестве примера я буду называть сайт www.example.com и FTP аккаунт supportuser@example.com, ограниченный корневой директорией исходников сайта. Сервер, на котором расположен сайт, работает под управлением WHM/cPanel.

Моя цель - получить доступ к логам вебсервера (которые находятся вне корневой директории сайта), чтобы понять причину глюков в работе приложения. В корне сайта валяется файлик error_log, но его содерживое не содержит ничего полезного, его происходит ошибка уровнем выше, чем интерпретатор PHP.

24 августа 2012

Сборка недостающих модулей ядра для платформы Android

Давненько мне хотелось попробовать себя в сборке модулей ядра для моего телефона на базе Android. Вчера мне потребовался OpenVPN, но для его работы нужен модуль tun/tap, который отсутствует в моей прошивке. Поискав по маркету я нашел приложение TUN.ko Installer, которое позволяет установить модуль нужной вам версии, если такой есть в репозитории проекта. Но поскольку спать еще не хотелось, и простых решения я не искал, то было решено собрать модуль самостоятельно.

27 июля 2012

Workflow: SSL сертификаты

Одна из рутинных операций, с которыми приходится сталкиваться системному администратору - управление SSL сертификатами. Я постараюсь собрать на одной странице справочное руководство, которое поможет управлять жизненным циклом сертификата. Для наглядности процесса я буду описывать процедуру в контексте WEB сервера (в остальных случаях многое совпадает, хотя есть и различия).

Для себя я выделяю несколько этапов в жизненном цикле SSL сертификата:
  • создание SSL сертификата
  • установка SSL сертификата
  • мониторинг валидности и срока окончания SSL сертификата

13 июля 2012

Создание бинарного пакета с debug-символами в debian

Переодически приходится сталкиваться с ошибками в программах, которые приводят к их аварийному завершению. Типичный пример такой ошибки - завершение по сигналу SEGFAULT. Чтобы выяснить в каком месте и при каких условиях программа завершилась нужны отладчик и отладочные символы для исследуемой программы.

В моем случае это был tinymount, который я когда-то пакетировал ради интереса и сейчас наткнулся на ошибку в его новой версии. В моем варианте пакета отладочные символы были исключены и я добавил пару изменений в debian/control, debian/rules (сделал на примере отсюда) чтобы их получить.

$ echo >> debian/control << EOF

Package: tinymount-dbg
Architecture: any
Section: debug
Priority: extra
Depends: tinymount (= ${binary:Version}), ${misc:Depends}
Description: debugging symbols for tinymount
 Tinymount is a simple UI tool to mount/unmount disks using UDisks.
 .
 This package contains the debugging symbols for tinymount.
EOF

$ echo >> debian/rules << EOF
DEB_DESTDIR := $(CURDIR)/debian/tinymount
EOF

После чего увеличил версию пакета:

dch -v '0.2.5~pre-2' 'Added debug symbols'

и собрал его

$ debuild -us -uc

В отчете lintian (его запускает debuild после окончании сборки) помимо отсутствующей страницы man для tinymount была ругань на "пустой пакет" tinymount-dbg. Он оказался почти пустым, т.к. отладочных символов в нем действительно не было.

Дальше было больше часа попыток нагулить причину. Но озарение пришло только после вдумчивого чтения логов сборки пакета (логи рулят!). При выполнении цели install в сгенеренном qmake'ом Makefile'е выполнялся strip для инсталируемого бинарника. Вот потому dh_strip и не находил никаких отладочных символов.

Немного порывшись в документации на qmake, я добавил в debian/rules к параметру DEB_QMAKE_ARGS значение CONFIG+=debug. После этого пересборка пакета и символы появились как и ожидалось.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

05 июля 2012

Maintenance page для сайтов, которые обслуживаются Apache

Я уже писал про maintenance page для сайтов, которые обслуживаются Nginx, а сегодня добавлю пример такой страницы для Apache.

Содержимое страницы maintenance.html остается прежним:

<html>
<head>
<title>Server Maintenance</title>
</head>
<body>
<center>
<h1>Server maintenance</h1>
Our apologies for the temporary inconvenience. The page is temporarily unavailable as server is down for scheduled maintenance. We will be back soon.
</center>
</body>
</html>
/var/www/maintenance/maintenance.html

Чтобы Apache выдавал страницу с кодом 503, нужно немного доработать .htaccess:

ErrorDocument 503 /maintenance.html 

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^/maintenance.html$
    RewriteCond %{REMOTE_ADDR} !1.2.3.4
    RewriteRule .* /maintenance.html [R=503,L]
</IfModule>
/var/www/maintenance/.htaccess

После этого maintenance страницу будет показывать всем кроме тех, кто заходит на сайт с ip 1.2.3.4.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.