Столкнулся с проблемой что не парсятся длинные страницы, методом подбора выяснил что размер максимально парсящейся страницы 120кб, оказалось что в настройках PHP по умолчанию стоит ограничение в 100000 символов.
Вот кусок кода для выявления этой ошибки.
< ?php preg_match... if (preg_last_error() == PREG_BACKTRACK_LIMIT_ERROR) { echo 'Ошибка превышен предел'; } ?>
проблема решается увеличением параметра pcre.backtrack_limit в php.ini
pcre.backtrack_limit=1000000
Tags: backtrack_limit, PCRE, php, PREG_BACKTRACK_LIMIT_ERROR, preg_last_error, regexp
Столкнулся с проблемой в nginx не возможно было докачивать файлы типа tar.gz.
Выяснилось что для файлов .gz в файле mime.types не назначено типа.
Такие файлы выдавались как тип по умолчанию application/octet-stream.
При этом почему-то не выдавалось заголовка Content-Lenght.
Добавление такой строки результатов не дало
application/x-gzip gz;
Проблема решена добавлением расширения gz в строчку zip
application/zip zip gz;
надеюсь это не повлияет на работу nginx по архивированию txt/html on-the-fly
Tags: Content-Lenght, gzip, Nginx, докачка
Для раскидывания поддоменов по папкам можно использовать такую конструкцию
RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} admin.domain.ru$ RewriteCond %{REQUEST_URI} !/admin/ RewriteRule ^(.*)$ /admin/$1 [L] RewriteRule admin - [L]
Tags: apache, rewrite, директории, папки, поддомены
Вот как отправлять письма с сервера через внешний SMTP-сервер:
в sendmail.cf в этом месте
# "Smart" relay host (may be null)
DSнаписать
DSesmtp:[relay.example.com]
Недавно был опечален тем фактом, что мой SQUID хоть и слушает на нескольких IP адресах, а исходящие соединения создает только с одного.
Проблема решается созданием списка правил при помощи директивы tcp_outgoing_address.
acl ip1 myip 1.2.3.2 acl ip2 myip 1.2.3.3 acl ip3 myip 1.2.3.4 tcp_outgoing_address 1.2.3.2 ip1 tcp_outgoing_address 1.2.3.3 ip2 tcp_outgoing_address 1.2.3.4 ip3
Эти правила позволяют клиенту грузить контент с того IP адреса на который они коннектятся.
Настройка статистики на основе Ipacct
1. Убедиться что ядро скомпилено с поддержкой файервола, в противном случае пересобрать
2. Установить Ipacct
cd /usr/ports/net-mgmt/ng_ipacct/ make make install clean
3. Проверить загрузку основного модуля
kldload ng_ipacct kldstat Id Refs Address Size Name 1 9 0xc0400000 3be32c kernel 5 4 0xcf516000 a000 netgraph.ko 10 1 0xcae86000 3000 ng_ipacct.ko
4. Добавить модуль автозагрузку в файл /etc/rc.conf
ng_ipacct_enable="YES" ng_ipacct_modules_load="YES" ng_ipacct_modules_list="netgraph ng_ether ng_ipacct"
5. Создать конфигурационный файл /usr/local/etc/ng_ipacct.conf
Скачать ng_ipacct.conf
6. Логи будут храниться в текстовых файлах в директории /var/log/ipacct поэтому её необходимо создать
mkdir /var/log/ipacct
7. Создать правило в IPFW
ipfw add 00100 tee 4001 ip from any to me in via bge0 ipfw -a list 00050 7800990 3397792483 tee 4001 ip from any to me in via bge0 00100 24863879774 11266975119192 allow ip from any to any
8. Создать скрипт записи в лог ipacct.sh
9. Поставить этот скрипт в крон
*/3 * * * * root /root/scripts/ipacct.sh vpn0 > /dev/null 2>&1
10. Парсить статистику в базу данных и делать нужные выборки
Tags: freebsd, ipacct, ng_ipacct, статистика, траффик
Чтобы открыть сайт для локалки но запаролить для внешки я использую такую конструкцию
AuthType Basic AuthName "Test hosting" AuthUserFile /web/admin/www/.htpass Require valid-user Order deny,allow Deny From All Allow From 192.168.0. Satisfy any
Tags: apache, htaccess, ip, satisfy, доступ, пароль
1. Установить CVSup
cd /usr/ports/net/cvsup-without-gui make make install clean
2. Скопировать файл ports-supfile
cp /usr/share/examples/cvsup/ports-supfile /root/
3. В файле /root/ports-supfile поставить вместо CHANGE_THIS.FreeBSD.org зеркало
ну например от яндекса ftp6.ru.freebsd.org
4. Запустить cvsup
cvsup -g -L 2 /root/ports-supfile
Возникла необходимость перенести систему со всем содержимым на новый диск
Исходный диск был /dev/sda “новый” /dev/hda
1. Создать разделы
cfdisk /dev/hda
2. Отформатировать
mk.Reiserfs /dev/hda1
3. Смонтировать
mkdir /mnt/new mount /dev/hda1 /mnt/new
4. Скопировать содержимое
cp -ax / /mnt/new
5. Поменять sda на hda в /mnt/new/etc/fstab
6. Поменять в конфигах grub /mnt/new/boot/* sda на hda
7. Установить grub
grub grub> install (hd1,0)/boot/grub/stage1 (hd1) \ (hd1,0)/boot/grub/stage2 p (hd1,0)/boot/grub/menu.lst
Есть файловый сервер на Debian (для Ubuntu нужно подобавлють к некоторым строчкам sudo) с установленной картой Adaptec ASR-3805(ASR-3405 и еще ряд моделей), задача поставить систему мониторинга raid массива с оповещением по email.
На оффсайте Adaptec есть версии лишь для RedHat и SuSE linux.
wget http://mirror.bmi.ohio-state.edu/centos/bmi/all/asm_linux_x86_v5_30_17509.rpm
mkdir asm_linux_x86_v5_30_17509mv asm_linux_x86_v5_30_17509.rpm asm_linux_x86_v5_30_17509cd asm_linux_x86_v5_30_17509 apt-get install alien fakerootfakeroot alien --scripts asm_linux_x86_v5_30_17509.rpm
Должен появиться файл с именем storman_5.30-17510_i386
mkdir storman_5.30-17510_i386 mkdir storman_5.30-17510_i386/debian
dpkg -x storman_5.30-17510_i386.deb storman_5.30-17510_i386 dpkg --control storman_5.30-17510_i386.deb storman_5.30-17510_i386/DEBIAN
vi storman_5.30-17510_i386/DEBIAN/postinst
Удалить строчку:
chkconfig --add stor_agent
а в файле
vi storman_5.30-17510_i386/DEBIAN/postrm
удалить строчку:
chkconfig --del stor_agent
dpkg -b storman_5.30-17510_i386/ storman_5.30-17510_i386.deb
dpkg -i storman_5.30-17510_i386.debВсё! ASM установлен и запущен теперь осталось установить xorg
apt-get install xorgЗатем пользуясь Xming запускаем
/usr/StorMan/StorMan.sh
появится окно программы в котором можно выбрать нужный массив и настроить все оповещения
Статья написана по материалам статьи Andrew Kutz, там же можно узнать о ньюансах установки на 64-х разрядную ОС