В процессе внедрения puppet под FreeBSD обнаружились некоторые нюансы, на которые я хотел бы обратить внимание. Мне потребовалось автоматически собирать, устанавливать, конфигурировать и запускать ряд сервисов. Инструкция на сайте puppet ссылалась на провайдер ports для типа ресурса package, в документации этот провайдер тоже был описан. Однако, как показала практика, такой провайдер в puppet отсутствует. При [...]
Обновил и расширил функциональность своего скрипта, осуществляющего бэкап базы данных MySQL с помощью ZFS снапшотов. Новая версия умеет понимать параметры, передаваемые из командной строки, умеет работать с файлом конфигурации и обрабатывать несколько датасетов за раз. Типичный пример использования скрипта mysql_zfs_backup.sh: db# ./mysql_zfs_backup.sh -u mysqluser -p mysqlpass -d rpool/mysql -d ssd/mysql Replication is running: 0 seconds [...]
Для отладки http сессий и обнаружения узких мест в приложении, на которые давят боты — очень удобно использовать утилиту tcpflow. Она пишет сохраняет в файлы tcp сессий, критерии захвата можно указывать, используя синтаксис tcpdump.
На этот раз дружим с nginx dokuwiki: location /wiki { index index.php; access_log logs/wiki.log; error_log logs/wiki-error.log; rewrite ^/wiki/_media/(.*) lib/exe/fetch.php?media=$1 last; rewrite ^/wiki/_detail/(.*) lib/exe/detail.php?media=$1 last; rewrite ^/wiki/_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 last; if (!-e $request_filename) { rewrite ^/wiki/(.+)$ /wiki/doku.php?id=$1 last; } if ($request_uri ~ ^/wiki/(bin|conf|data|inc)) { return 403; } rewrite ^/wiki/index.php$ doku.php; }
При использовании Super Talent UltraDrive ME SSD FTM28GX25H возникли жуткие, на первый взгляд, проблемы: Jul 6 10:09:20 srv3 smartd[1189]: Device: /dev/ada0, 40699 Offline uncorrectable sectors (changed +111) Jul 6 10:39:21 srv3 smartd[1189]: Device: /dev/ada0, 40801 Offline uncorrectable sectors (changed +102) Jul 6 11:09:21 srv3 smartd[1189]: Device: /dev/ada0, 40893 Offline uncorrectable sectors (changed +92) Jul 6 [...]
Ура! В кои веки нашел нормальный таск менеджер и трекер времени — redmine. Он хоть и хоть и написан на богомерзком руби, но работает шустро и локализован просто отлично. В портах его можно найти в /usr/ports/www/redmine Первоначальная настройка подробна описана в вики на сайте проекта. Из подводных камней столкнулся лишь с не работающими из коробки [...]
Набросал небольшой патч, добавляющий в порт php 5.3 поддержку php-fpm. Из недостатков — требует наличие svn клиента для загрузки патчей с репозитария svn.php.net. Зато в теории будет работать для любой стабильной версии порта в пределах ветки 5.3.x. Установка очень простая: cd /usr/ports/lang/php5 fetch http://sav.ecom24.ru/freebsd/fpm.patch patch < fpm.patch make config install clean Сам патч: — Makefile [...]
Реализация Flash Policy Daemon на nginx проста и изящна: # FLASH POLICY DAEMON # returns crossdomain.xml on any request server { listen 843; server_name localhost; location / { rewrite ^(.*)$ /crossdomain.xml; } error_page 400 /crossdomain.xml; location = /crossdomain.xml { root html; } }
Внезапно сдох 128 гиговый ссд диск STT FTM28GX25H 1916. Проработал недели три в качестве log/l2arc для zfs пула. ahcich0: Timeout on slot 31 ahcich0: Timeout on slot 31 ahcich0: Timeout on slot 31 ahcich0: Timeout on slot 31 (ada0:ahcich0:0:0:0): lost device Похерился пул вместе с данными. Благо бэкапный мастер под боком был. Мораль — используйте [...]
Иногда приходится добавлять префиксы, полученные из quagga в таблицы ipfw. Для этого нужно добавить соответствующий cidr для сетей класса A, B и C, который сама quagga в своем выводе опускает. Делается это следующим набором команд для sed: br# echo 192.16.0.0 | sed -E -e ‘s|^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)$|\1/24|’ -e ‘s|^([0-9]+\.[0-9]+\.[0-9]+)$|\1.0/16|’ -e ‘s|^([0-9]+\.[0-9]+)$|\1.0.0/8|’ 192.16.0.0/24 br# echo 172.16.0 | sed [...]