Posts Tagged ‘ FreeBSD

apache-itk-mpm и виртуальный хостинг

Итак, рано или поздно возникает задача в духе: «А как бы нам организовать хостинг нескольких клиентов с их сайтами так чтобы они не имели друг к другу доступа и не было проблем с доступом к файлам через web/ftp/ssh?». Тут уже обычный стандартный apache не справляется и нужно городить некую более сложную конфигурацию. К счастью, задача эта не уникальна и поэтому давным давно есть готовые решения. Одним из них есть модификация apache2 под названием apache-itk-mpm. Он позволяет запускать от имени определенного в конфигах системного пользователя некий виртуалхост апача. Тоесть получаем чтото в духе некоего изолированного контейнера для нужного пользователя или ряда оных. Туманно объяснил, но по конфигам это более понятно. Итак, поехали! Читать полностью

12.12.2012 — А что ты делал в этот день?

Ковырялся на винте в поисках мусора для удаления, сильно уж винчестер засрал. Случайно нашелся скриншот датированный 12.12.12 — я удаленно через IPMI устанавливаю FreeBSD. Клево, даже время 12:12 🙂

12-12-2012 12:12

А что вы делали в этот день? Читать полностью

Ejabberd на FreeBSD с авторизацией в Active Directory

Установка ничем особенным не отличается, как обычно, собрал из портов.
А вот конфигурация весьма интересная и отличается крайней невменяемостью, которую ejabberd унаследовал от языка программирования, на котором он написан — erlang. Многие админы сломали голову в попытках настроить данный софт, и часто совсем отказываются от его использования в пользу jabberd2 или openfire. Я считаю что напрасно, но это только мое ИМХО.
Итак, для настройки достаточно создать пару конфигурационных файлов и прописать автостарт в rc.conf. Также необходимо создать учетку в AD которая имеет права на чтение LDAP базы домена my.domain.local, в моем случае это — CN=for_jabber,OU=it,DC=my,DC=domain,DC=local
Также нужен pem файл который содержит сертификат и ключ для шифрования сетевой деятельности между клиентами и сервером. Ничего особенного в нем нету, стандартное содержимое формата:

-----BEGIN CERTIFICATE-----
....cert here....
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
....key here....
-----END RSA PRIVATE KEY-----

Читать полностью

FreeBSD — exim + rspamd

Идея о том чтобы выкинуть нафик непомерно прожорливый spamassassin из почтовой связки exim + dovecot давно мучила мне мозг. В особенности если учесть что поток почты единицы писем в сутки 🙂 Но вот случайно набрел на просторах инета инфо про замечательную альтернативу SA — rspamd. Заинтриговала невероятная легковесность решения при сохранении функциональности. Ну чтож … гоним метлой из системы жирного spammassassina и пробуем настроить rspamd. Вроде бы все должно быть просто, вот и документация есть — дел на пару минут, ан нет — установить с полпинка не получилось 🙂
Итак, как я говорил выше, на сервере установлен и работает exim + sa, для начала нужно отучить exim проверять письма spamassasin-ом, для этого уберите из конфига exim-а все что вяжет его с SA. Это просто, справится любой.
Дальше тоже просто — установить из портов rspamd. Тут и писать нечего, идем в порты и устанавливаем привычным способом.
А вот следующий шаг оказался для меня тяжеловат — нужно пересобрать exim с поддержкой rspamd, для этого есть patch patch-exim-src_spam.c.diff который можно скачать вот тут. Читать полностью

MySQL — Could not execute Write_rows_v1 event on table my_wp.wp_options; Duplicate entry

На мастере была проблема с одной из БД, в результате slave тоже ругается ошибкой

Last_SQL_Error: Could not execute Write_rows_v1 event on table my_wp.wp_options; Duplicate entry '_transient_doing_cron' for key 'option_name', Error_code: 1062; handler error
HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.000014, end_log_pos 337

Решить удалось довольно просто, сбойную команду нужно просто пропустить, для этого подколючаемся в mysql под рутом и выполняем:

mysql> stop slave;
mysql> SET GLOBAL sql_slave_skip_counter = 2;
mysql> start slave;

Enjoy!

MySQL — ‘wp_options’ is marked as crashed and should be repaired

Както раз у меня завалился mysql, после перезапуска в логах увидел такую срань. Причем блог на wordpress при этом нормально работал,

131112  9:37:52 [Note] /usr/local/libexec/mysqld: ready for connections.
Version: '5.5.34-log'  socket: '/tmp/mysql.sock'  port: 3306  Source distribution
131112 09:37:53 mysqld_safe A mysqld process already exists
131112  9:40:44 [ERROR] /usr/local/libexec/mysqld: Table './diff_wp/wp_options' is marked as crashed and should be repaired
131112  9:40:44 [Warning] Checking table:   './my_wp/wp_options'
131112  9:40:45 [ERROR] /usr/local/libexec/mysqld: Table './diff_wp/wp_usermeta' is marked as crashed and should be repaired
131112  9:40:45 [Warning] Checking table:   './my_wp/wp_usermeta'
131112  9:40:46 [ERROR] /usr/local/libexec/mysqld: Table './diff_wp/wp_posts' is marked as crashed and should be repaired
131112  9:40:46 [Warning] Checking table:   './my_wp/wp_posts'
131112  9:40:47 [ERROR] /usr/local/libexec/mysqld: Table './diff_wp/wp_postmeta' is marked as crashed and should be repaired
131112  9:40:47 [Warning] Checking table:   './my_wp/wp_postmeta'
131112  9:40:47 [ERROR] /usr/local/libexec/mysqld: Table './diff_wp/wp_comments' is marked as crashed and should be repaired
131112  9:40:47 [Warning] Checking table:   './my_wp/wp_comments'

На официальном сайте mysql рекомендуют в таком случае восстановить таблицы специальной утилитой — myisamchk Читать полностью

FreeBSD + Ejabberd — как собирать модули

Чуть позже напишу о конфигурации jabberd сервера для корпоративных нужд. Будет и AD-авторизация, и общий список контактов из AD, и логирование разговоров и конференций. А пока простенькая заметка как собирать модули для ejabberd, для затравки, так сказать.
Все очень просто. Настолько просто что и представить невозможно. Делается «в два клика мышкой» 😉 Алгоритм примерно такой:
1. Залить исходники
2. Скомпилить плагин
3. Скопировать в директорию с плагинами сервера
4. Сделать необходимые настройки в конфиге
Поехали …. Читать полностью

FreeBSD. HAST + UCARP = файловый кластер. Или нет?

Идея настроить репликацию файлов между серверами давно закралась мне в голову. Хочется такой себе файловый кластер на FreeBSD. Очень уж хотелось засунуть туда один web-ресурс. С базой данных все понятно, сам mysql прекрасно справляется с репликацией своих баз (я писал уже о репликации в mysql в одной из предыдущих заметок). Но что делать с файлами? Rsync и прочее не нравится, точнее нравится и даже трудится в данный момент, но есть одна проблема — решение содержит постоянную временную задержку синхронизации, а значит данные на slave-нодах всегда будут отставать от master-а. И вот както я нашел HAST, он лишен проблемы с задержкой синхронизации, так как синхронизирует данные в реальном времени. Жаль только что в данный момент HAST ограничен работой с двумя хостами в режиме master-slave или в терминологии самого HAST «Primary — Secondary». По сути можно построить клестер «с холодным резервом». И еще одна ложка дегтя — больше двух хостов в связку добавить нельзя, один мастер, один слейв …. эх 🙁 Также есть ограничения на общий ресурс — это может быть либо отдельный диск либо раздел, директорию или файл сделать общим ресурсом нельзя. Ну все равно интересно — пробуем!
Вводные данные:
FQDN server1 — node1.loc, IP — 10.10.10.10 — условный master
FQDN server2 — node2.loc, IP — 10.10.10.20 — условный slave
«Общий» для обоих нод IP, по сути, адрес кластера — 10.10.10.100
«Общий» ресурс — www
Диск который будем делать общим — /dev/da0
Точка монтирования «общего» ресурса — /usr/local/www/hast
Поехали! Читать полностью

FreeBSD — memcached + php5

Захотелось мне улучшить производительность связки PHP5 + MySQL + Apache22 на сервере с FreeBSD. Решил добавить в эту связку еще и memcached для улучшения отдачи сгенеренного php-шкой кода.
Делается крайне просто, все что нужно — уже есть в портах. Сначала ставим сам memcached:

root@black:~# cd /usr/ports/databases/memcached

И установим такой командой:

root@black:/usr/ports/databases/memcached# make install clean

Для автозапуска добавим в /etc/rc.conf строки:

memcached_enable="YES"
memcached_flags="-d -m 64 -u nobody -l 127.0.0.1"

Запустим сервис:

root@black:~# service memcached start

Идем дальше …. Читать полностью

Решено! esniper — Unknown error code 34

Решено!
Давно пользуюсь сей прекрасной утилиткой для автоматических ставок на ebay, но вот после очередного обновления системы отказывается работать зараза!
В форум разрабам написал, пока молчат как партизаны … может кто подскажет как полечить? Пробовал пересобирать и саму прогу и curl — не помогает, видать новый curl ему не нравится совсем.
Вобщем система у меня такая:

root@gw:~# pkg_version -v |egrep 'esniper|curl'
curl-7.33.0 = up-to-date with port
esniper-2.28.0_1 = up-to-date with port
php5-curl-5.4.21_1 = up-to-date with port
root@gw:~#
root@gw:~# esniper -d -s 5 -u my_ebay_login 300996098933 5
Enter eBay password:
Auction 30099609xxxx: Unknown error code 34
Retrying...
Auction 30099609xxxx: Unknown error code 34
Retrying...
Auction 30099609xxxx: Unknown error code 34
Auction 30099609xxxx: Unknown error code 34
root@gw:~#

Помогите инфой, плиз …..
Проблема оказалась в банальном отсутствии опции «cookies» в CURL, после пересборки курла с данной опцией прога отлично заработала 🙂