пятница, 16 марта 2012 г.

[apc-warning] Unable to allocate memory for pool

На одном проекте очень много стали занимать еррлоги. И забивало их с огромной скоростью строками
[apc-warning] Unable to allocate memory for pool

Первое - проверить версию АРС:
It might be a bug in APC; http://pecl.php.net/bugs/bug.php?id=16966
It is present in 3.1.4 and corrected in 3.1.5.

Второе - несколько твиков
apc.shm_size="128"
(у меня на 3.1.3 помогло), плюс "к размышлению" можно поиграть с параметрами
[apc]
apc.enabled="1"
apc.shm_size="256"
apc.stat="1"
apc.file_update_protection="2"
apc.ttl="3600"
apc.user_ttl="1200"
apc.gc_ttl="3600"
apc.num_files_hint="40000"
apc.rfc1867="1"
apc.lazy_functions=1
apc.lazy_classes=1

http://pecl.php.net/bugs/bug.php?id=16966
https://bugs.php.net/bug.php?id=58982

вторник, 13 марта 2012 г.

Подводные камни при использовании кэширования в nginx

Подводные камни при использовании кэширования в nginx
http://alexandr.sysoev.ru/node/147

Интересная статья, где описаны некоторые нюансы кэширования nginx

воскресенье, 11 марта 2012 г.

Оборудование Ubiquiti Networks (UBNT)

Интересуют точки доступа фирмы Ubiquiti Networks (UBNT), взяли на пробу 1 серии UniFi (далее речь про эту серию). Это точки для внутриофисного применения, с софт-контроллером.

Особенности: программный контроллер сети, позволяющий сделать единую вайфай сеть из множества точек. Есть прошивки, чтобы работать без такого контроллера, когда используется только 1 точка.
Питание по PoE (адаптер в комплекте[1][2]), так что нужен только 1 провод.
Есть версия большей мощности (200мВт)
Контроллер изначально виндовый, но есть бета под дебиан.

Недостатки: лан порт 100мбит - хоть и заявлено 300, вай-локалка физически больше 100мбит не будет;
Работает только на 2.4ГГц - при окне в 40МГц весь эфир делится всего на 2 независимых. Лучше бы была версия 2.4+5ГГц.

Также есть версия UniFi mini. Меньше покрытие, меньше цена.

"Да, к осени выйдет UniFi Pro на еще более шустрой платформе и с гигабитом." (линк 3, коммент)
" можно ждать появления версии pro — она будет поддерживать 802.3af, но цена будет выше"
UniFi Pro will have blue LED ring. It will also have 2 Gbit ports. оф форум
The Pro version will have two simultaneous radios on 2.4G and 5G. другая ветка
В общем, обещалось к концу 2011, но до сих пор (11 марта 2012) нету. А жаль, штука крайне интересная должна быть.

Настройка в L3
To perform L3 adoption with the discovery utility:
1. wait until the AP shows up
2. if the AP is not in default state. click "reset", specify the SSH username/password and click "Apply"
3. click on "manage", modify the inform URL and leave the SSH username/password as ubnt/ubnt and click "Apply"
4. open a browser to your remote UniFi controller and you should see it being "Pending Approval"
5. Click on "approve". You'll see it going to "Adopting" state, ignore it as it'll eventually become "Adoption Failed" or "Disconnected"
6. perform [3] again (no need to wait for [5] to finish)
7. AP is now managed by the controller
http://forum.nag.ru/forum/index.php?showtopic=72255

UP
2 недели испытаний - работает хорошо, 30 клиентов на точку тянет не напрягаясь, в отличии от длинка 2100ap, который 10 тянет со скрипом, на 15 уже глючит и подключает не всех + иногда работает, но скорость менее 100кб/с. Тут таких проблем нет. Работа в условиях бизнес-центра, где много соседей и весьма шумный эфир.

UP2
Есть более крутой аналог - Aruba, но по цене сравнима с cisco, и аппаратным контроллером с ценами от $5k

Линки
1. UniFi — корпоративный Wi-Fi с контроллером, доступный каждому. Первое впечатление
2. Ubiquiti UniFi в StandAlone режиме (без внешнего контроллера)
3. UniFi 2.0 Хотспот для кафе и гостиниц. Офисный Wi-Fi. Обзор нового бесплатного контроллера
4. оф. FAQ - желательно ознакомиться

Примечания
1 инжектор не стандарта 802.3af, а свой собственный (см линк1), возможно решается через их же адаптер
2 инжектор совместим (?) также с микротиком (в магазине 2)

среда, 7 марта 2012 г.

nginx: ограничиваем коннекты и скорость

Модуль ngx_http_limit_req_module (0.7.21) позволяет ограничить число запросов по заданному ключу или, как частный случай, число запросов с одного IP-адреса.

limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
location / {
...
limit_req zone=one burst=10;
}

burst в данном случае это превышение "над" лимитом, то есть

http://nginx.org/ru/docs/http/ngx_http_limit_req_module.html

Также нужно ограничивать подключения с 1 айпи во много потоков, это делается через другой модуль: ngx_http_limit_conn_module

limit_zone zone_name $binary_remote_addr 10m;

server {
location / {
limit_conn zone_name 8; <-- number of connections per IP
}
}

Скорость:
if ($slow) {
set $limit_rate 4k;
ngx_http_core_module.html#limit_rate
А также limit_rate_after

Такие вещи как: limit_zone zone_name $binary_remote_addr 10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;

можно устанавливать как в блоке server, так и глобально в http. Как я понимаю, также имеет значение имя этих переменных, если больше 1 проекта.

ISPManager: всякие заметки

Этот пост будет изменяться и дополняться по мере приведения заметок в порядок.

При создании нового домена он заполняется каталогом webstat и файлом index.html. Убираем:
# rm -rf /usr/local/ispmgr/etc/www.skel/*

Очистка кэша:
/usr/local/ispmgr/sbin/pkgctl cache
killall -9 ispmgr

Основной конфиг располагается в /usr/local/ispmgr/etc/ispmgr.conf

Когда много mysql баз, работа с ними в админке крайне медленная - каждый раз пересчитывается их размер. Отключить - в конфиг:
Option HideDbSize

Задать по умолчанию режим работы для php в fastcgi:
Option ForcePhpFastCgi

Разрешить создание домена и его поддоменов на разных пользователей:
Option PermitRootMixDomain

куда делся режим "PHP как FastCGI"

forum.ruweb.net/viewthread.php?fid=18&tid=2813

В шаблонах VDS для FreeBSD-6 имелось 3 режима работы PHP:
- PHP как модуль Apache;
- PHP как CGI;
- PHP как FastCGI.

Во FreeBSD-8 их осталось только два:
- PHP как модуль Apache;
- PHP как CGI.

Поэтому часто приходится слышать вопрос: куда делся режим "PHP как FastCGI"?

Дело в том, что режим "PHP как модуль Apache" на новых VDS претерпел изменения. Теперь Apache там собран с поддержкой MPM-ITK, который позволяет запуск каждого виртуального хоста под отдельными uid и gid. Иными словами, php-скрипты в этом режиме будут обрабатываться от имени владельца домена, что повышает безопасность и снимает некоторые ограничения (например, safe mode - отключен).
Таким образом, в большинстве случаев оптимальным режимом работы PHP на VDS с FreeBSD-8 теперь является "PHP как модуль Apache".


Что делать, если для сайта крайне необходим режим "PHP как FastCGI"?

К сожалению, просто так вернуть его не получится - в частности нужно пересобрать Apache без поддержки MPM-ITK. Это означает, что он перестанет обновляться автоматически вместе с шаблоном, и забота об актуальности Apache в дальнейшем целиком ложится на плечи владельца VDS.

Если вы понимаете последствия данного шага, вернуть "PHP как FastCGI" можно следующим образом:

1) открываем файл /etc/make.conf и удаляем строчку "WITH_MPM=itk" из блока:

.if ${.CURDIR:N*/usr/ports/www/apache22} == ""
WITH_MPM=itk
WITH_SUEXEC=yes
SUEXEC_DOCROOT=/
WITH_PROXY_MODULES=yes
.endif

2) удаляем apache-itk:
# pkg_delete -f apache-itk-2.2.21

3) устанавливаем apache (без itk):
# cd /usr/ports/www/apache22 && make install clean

4) устанавливаем mod_fcgid:
# cd /usr/ports/www/mod_fcgid && make install clean

5) открываем файл /usr/local/etc/apache22/httpd.conf и добавляем строчку:
LoadModule fcgid_module libexec/apache22/mod_fcgid.so

6) в том же файле во всех виртуальных хостах (если они уже есть) меняем:
AssignUserID имя_юзера имя_юзера
на
SuexecUserGroup имя_юзера имя_юзера

7) открываем файл /usr/local/ispmgr/etc/ispmgr.conf и удаляем оттуда строчку:
Option ApacheMPM

8) убиваем все процессы ISPmanager:
# killall ispmgr

9) если после этого режим "PHP как FastCGI" не появился, добавляем строчку:
Option ForcePhpFastCgi
в файл /usr/local/ispmgr/etc/ispmgr.conf и повторяем пункт 8.

nginx и TLS 1.2?

Офдока1: только 1.0
офдока2: есть и 1.2
Since version 1.0.5, nginx uses “ssl_protocols SSLv3 TLSv1” and “ssl_ciphers HIGH:!aNULL:!MD5” by default, so configuring them explicitly only makes sense for the earlier nginx versions. Since versions 1.1.13 and 1.0.12, nginx uses “ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2” by default.

Похоже, большинство лин-дистрибутивов будут требовать ручной пересборки нгинха на последние версии, чтобы можно было активировать 1.2. Тем более, в некоторых он вообще древний как помёт мамонта. Встречались 0.7 и даже 0.6.

According to Compatibility with the OpenSSL Library, GnuTLS cannot fully replace OpenSSL.
http://askubuntu.com/questions/53638/can-i-use-nginx-and-gnutls-together
Что с учётом того, что разрабы openssl никак не могли разродиться на поддержку 1.2, делает всю картину несколько грустной. С другой стороны, у кого-то уже и 1.2 работает.

среда, 29 февраля 2012 г.

ставим jenkins

Для начала, что это:
jenkins, он же hudson (что случилось) - инструмент непрерывной интеграции, написанный на Java.
Непрерывная интеграция - это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. В обычном проекте, где над разными частями системы разработчики трудятся независимо, стадия интеграции является заключительной. Она может непредсказуемо задержать окончание работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счет наиболее раннего обнаружения и устранения ошибок и противоречий.
wiki

Итак.
Centos:
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install jenkins

Debian:
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
echo "deb http://pkg.jenkins-ci.org/debian binary/" >> /etc/apt/sources.list
sudo apt-get update
sudo apt-get install jenkins

По умолчанию сервис садится на порт 8080

линки
https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+RedHat+distributions
http://pkg.jenkins-ci.org/debian/
http://habrahabr.ru/search/?q=[jenkins]&target_type=posts

понедельник, 27 февраля 2012 г.

MariaDB на centos

Для начала, идём на mariadb.org и выбираем нужную нам версию

Например, для стабильной версии 5.2:
downloads.askmonty.org/mariadb/5.2/

Там же есть инструкции. Но для 5.2 есть только всякие виндовые версии, а под центось только под 5 центось и рхел.

В итоге мы должны получить 3 .rpm файла: -shared, -server, -client
!!предварительно сносим mysql-*, иначе будут конфликты.
!!Сначала ставится -shared. Потом оставшиеся пакеты.

После завершения используем mysql_secure_installation

воскресенье, 26 февраля 2012 г.

Обновление облачного сервера на centos

Захотели обновить софт на серверах, стоящих в селектеле. Был centos 5.5
Простое обновление через yum update не удастся: нельзя обновить ядро

Error Summary
-------------
Disk Requirements:
  At least 101MB needed on the /lib/modules filesystem. 

Поэтому надо обновить через
yum -x kernel-xen update

Замечание:
Не забываем, что для корректного автообновления надо иметь установленный yum-priorities
проверить:
# rpm -qa|grep -i prior
установить:
# yum install yum-priorities

вторник, 14 февраля 2012 г.

ssl: некоторые особенности заполнения

Прежде всего, а на что опираться при переводе названий городов и компании?
http://ru.wikipedia.org/wiki/Транслитерация_русского_алфавита_латиницей предлагает несколько вариантов, в частности для буквы Ц это C, TS, TC, Z. Какой вариант выбрать?

http://ru.wikipedia.org/wiki/ISO_9
http://ru.wikipedia.org/wiki/Транслитерация

Особенности транслитерации есть и для городов:
moscow, moskow, moskva...
sankt-peterburg, saint-petersburg, saint petersburg...
итд. И иногда вроде более верный вариант регистратор заворачивает. На что опираться? Опять же, или на ISO, или на спец порталы. Например
http://geonames.nga.mil/ggmagaz/

"Согласно информации из официальной базы данных иностранных географических названий http://geonames.nga.mil/ggmagaz/, поддерживаемой National Geospatial-Intelligence Agency (NGA), название Sankt-Peterburg считается одобренным (Approved). Название Saint Petersburg считается общепринятым (Conventional). Считаю использование названия Sankt-Peterburg в качестве значения атрибута Locality Name допустимым."

Некоторые регистраторы вроде того же Comodo требуют, чтобы фирма была в duns
http://en.wikipedia.org/wiki/Data_Universal_Numbering_System
http://www.dnb.ru/rbr.asp?rbr=25

Зачастую хотят, чтобы информация из whois на домен совпадала с той, что прописана в запросе. Поэтому уже на стадии заполнения информации для домена надо заполнять максимально правильно.

openvpn: виды соединений

[черновик]

Варианты, которые могут быть:
1) комп-комп
2) комп-сеть
3) сеть-комп
4) сеть-сеть

TAP симулирует Ethernet устройство и работает на канальном уровне модели OSI, оперируя кадрами Ethernet. TUN (сетевой туннель) работает на сетевом уровне модели OSI, оперируя IP пакетами.
TAP используется для создания сетевого моста, тогда как TUN для маршрутизации.
wiki

Возможно создать Layer 3-based IP туннель, называемый TUN, и Layer 2-based Ethernet — TAP, способный передавать Ethernet трафик.

В принципе, все варианты можно реализовать на обоих видах, но с некоторыми оговорками. Например, мультикасты и броадкасты по L3 сами по себе не побегут.

Также есть отличия в настройке для linux, *bsd, windows.

[дальше варианты настроек]
1.1 Комп-комп, TUN
1.2 Комп-комп, TAP
2.1 Комп-сеть, TUN
2.2 Комп-сеть, TAP
3.1 Сеть-комп, TUN
3.2 Сеть-комп, TAP
4.1 Сеть-сеть, TUN
4.2 Сеть-сеть, TAP


Ссылки
http://openvpn.net/index.php/open-source/documentation/howto.html
http://ru.wikipedia.org/wiki/OpenVPN
http://ru.wikipedia.org/wiki/TUN/TAP
http://www.lissyara.su/doc/man/safety/openvpn/
http://www.anfes.ru/e107_plugins/content/content.php?content.6
http://tuxnotes.ru/articles.php?a_id=26

openvpn в centos
http://wolandblog.com/1103-ustanovka-i-nastrojka-openvpn-na-centos-5-3/

понедельник, 13 февраля 2012 г.

httpd dead but subsys locked

httpd dead but subsys locked

Решение:
rm /var/lock/subsys/httpd

Впрочем, помогает не всегда. Причин может быть много - нет места, кто-то мешает запустить (типа селинукса). Или свои же модули, например 2 раза грузится ssl. Это определить легко - при запуске ругается, что 443 порт занят, но при остановленном апаче его никто не занимает. Иногда бывает при обновлении и очень часто - при переписанных под себя конфигурациях.

Проверить:
netstat -tulpn
tail -f /var/log/messages
tail -f /var/log/httpd/error_log

Есть вариант через ipcs -s

среда, 8 февраля 2012 г.

Оборудование huawei

Компания выросла из телефонной сферы.

Сегмент сетевого железа начал с клонирования чужого железа. Изначально это была циска, во всех планах - на их железо вставали циско-прошивки без каких-либо модификаций. Также их наименования были схожи и по возможностям можно было найти аналог циски, но дешевле (цена покупки), но цена сопровождения выше, как говорят.
Баш в тему

Из преимуществ - с поставками гораздо меньше проблем по сравнению с цисками. Железо дешевле цисок, особенно в нижнем сегменте.

Об оборудовании
http://forum.nag.ru/forum/index.php?showtopic=54893

БРАСы у них говно, мплс коробки - почти говно, Л2 свищи не говно, но сверху им обмазано.
Учитывая TCO по ценам сравнимо с цыской. Так что смысла брать не вижу, разве что те самые Л2 свищи, там на хорошей партии можно взять хороший дисконт. А в целом если вас откат не интересует, то это не ваш вендор.

BRAS MA5200g-2 нормально работет VRP на Version 5.30. ( но нада уметь его готовить)
NE40 - отстой
NE40E - норм
S8500 - норм
S2000 (S2403) - норм

Попробуйте в NE40E загрузить фуллвью от 6 пиров в vpn-instance и посмотрите как он будет тормозить. Даже с двумя пирами оно 15 минут туда грузится и жрет 100% CPU. Роутпроцессор на NE40E откровенно слабоват.

Если вы сравниваете с ценой ASR1002 ESP10 + 10G, то посмотрите на Juniper MX80. Шасси с 4х10G портами стоит $60К по GPL, производительность 80G, можно еще два модуля вставить.

По Huawei свитчи S3300/S5300 вполне ничего себе железки, на L2 работают стабильно, особых багов не замечено, что не понравилось по сравнению с Cisco, это гораздо более бедный набор команд. С маршрутизаторами Huawei не связывайтесь, по перфомансу в даташите написано одно, в жизни раза в 2 в 3 все более печально, особенно это ярко выражено на слабых железках AR/NE20/NE20E, старшие железки NE40/NE80E/NE80E по деньгам будут не дешевле Cisco или Juniper, по функционалу примерно то же, хотя по производительности на слот все так проигрывают заморским зверюшкам, и опять же очень скупой output у команд, ну и поддержка Huawei не самое дешевое удовольствие.

=====
Про S2300

Есть способ делать это без промежуточного софта и патча.
1. Зайти в hidden view
<Sхххх-SI>sys
Enter system view, return user view with Ctrl+Z.
[Sхххх-SI]_hide
Password:

Пароль - Vrp&8031

[Sхххх-SI-hidecmd]undo startup system-software

2. После этого можно удалить файл с флешки
<Sхххх-SI>delete /u xx.cc

3. После этого заливаем новый софт и радуемся жизни.
http://forum.nag.ru/forum/index.php?showtopic=49765&view=findpost&p=605802

пятница, 3 февраля 2012 г.

Критическая уязвимость в PHP 5.3.9, позволяющая выполнить код на сервере

Критическая уязвимость в PHP 5.3.9, позволяющая выполнить код на сервере

В PHP обнаружена одна из самых серьёзных уязвимостей за время существования данного языка. Уязвимость проявляется только в PHP 5.3.9 и позволяет удалённому злоумышленнику выполнить свой код на сервере, независимо от того какие PHP-скрипты используются.

...
Всем пользователям PHP 5.3.9 рекомендуется в экстренном порядке наложить патч или вернуться на более ранний выпуск PHP. Официального уведомления и исправления пока не выпущено. Проблему усугубляет то, что поддержка директивы max_input_vars была портирована из PHP 5.3.9 многими дистрибутивами и включена в пакеты с более старыми версиями PHP. Например, в обновлении пакета php5-5.3.3-7+squeeze6 для debian Squeeze имеется поддержка директивы max_input_vars. Та же самая ситуация наблюдается в Red Hat Enterprise Linux 5 и 6, а также в Fedora Linux.

Уязвимость выявлена Стефаном Эссером (Stefan Esser), создателем проектов Hardened-PHP и Suhosin. Комментируя решение проекта Debian отказаться от использования Suhosin, Стефан указал на то, что уязвимость в PHP пришлась весьма кстати, так как она хорошо демонстрирует необходимость в использовании Suhosin, который значительно снижает возможность эксплуатации, даже в стандартной конфигурации.

====
"Комментируя решение проекта Debian отказаться от использования Suhosin,"
Правильно, зачем нам системы защиты для самого бажного языка в истории... Да, это не панацея. Но если этот патч закрывает хотя бы 5% проблем - он однозначно обязан включаться в штатные поставки.
И если они там не совсем идиоты, сухосин будет подключаться как доп модуль в случае убирания из штатного пакета. Документы дополнятся строчкой доустановки сухосина...

Как же надоел их маразм. Чуть не каждые пол года - серьёзные проколы, после чего хочется показать на их пользователей пальцем и сказать "ха-ха, создатели дебиана вам снова показали, что вы все - тупое стадо баранов, а они хозяева мира". Прочем, они свою позицию "вы все тупые, и мы лучше знаем, что вам делать" показывают давно. Хороший пример - jdk6 больше нельзя обновлять, так они новым обновлением просто сносят его.
Поэтому я до сих пор уважаю freebsd - они хотя бы не тыкают постоянно своих пользователей носом в говно.
А другие дистры для веб-сервера... Центось подходит плохо и требует напильника, остальные линукс-дистры ещё хуже, некоторые вроде мандривы вообще всё никак помереть не могут. Увы.
Впрочем, дебиан тоже использую, приходится. Но если каноникал, строясь на том же дебиане, сможет обеспечить в том числе платную поддержку + будет от таких вот маразмов вычищать и собирать нормальные пакеты - все сервера будут (принудительно) переводиться на убунту сервер.