Организация Backup DNS

July 12th, 2010

Отличный бесплатный сервис для организации backup dns – afraid.org. Прописываете домен, мастера откуда будет синхронизироваться и все, он сам будет периодически ходить и тягать зону.

UPD. удобная тулза для разностороннего теста DNS http://www.intodns.com/

Установка легкого и быстрого прокси 3proxy на FreeBSD

June 8th, 2010
cd /usr/ports/net/3proxy && make install
echo "threeproxy_enable="YES"" >> /etc/rc.conf

Конфиг:

timeouts 1 5 30 60 180 1800 15 60
users test:CL:24555
daemon
archiver gz /bin/gzip %F
rotate 30
auth strong
external 0.0.0.0
internal 1.2.3.1
auth strong
deny * * 127.0.0.1,192.168.1.1
allow * * * 80-88,8080-8088 HTTP
allow * * * 443,8443 HTTPS
proxy -n
auth strong
flush
internal 127.0.0.1
allow 3APA3A 127.0.0.1
maxconn 3
admin

Запуск:

/usr/local/etc/rc.d/3proxy start

Все. Прокси будет слушать на 1.2.3.1:3128 и пускать по test / 24555

Установка PHP5.2 из портов на FreeBSD

May 31st, 2010

Сейчас в портах есть порт php52, но у меня он корректно собрался с модулем апача только с Apache 2.2. Поэтому в скрипте автоматической установки будет небольшое исправление:

make WITHOUT_SAMBA=yes -DBATCH -C /usr/ports/misc/mc install clean
make WITH_RC_NG=yes -DBATCH -C /usr/ports/ftp/vsftpd install clean
make WITHOUT_IPV6=yes -DBATCH -C /usr/ports/www/apache22 install clean
make WITH_CHARSET=utf8 WITH_COLLATION=utf8_unicode_ci -DBATCH -C /usr/ports/databases/mysql51-server install clean
make WITH_APACHE=yes WITHOUT_IPV6=yes -DBATCH -C /usr/ports/lang/php52 install clean
make WITH_BUNDLED_PCRE=yes -DBATCH -C /usr/ports/devel/php52-pcre install clean
make WITH_MBSTRING=yes WITH_CURL=yes WITH_FTP=yes WITH_GD=yes WITH_MCRYPT=yes WITH_MYSQL=yes WITH_MYSQLI=yes WITH_OPENSSL=yes WITH_SOCKETS=yes WITH_ZLIB=yes -DBATCH -C /usr/ports/lang/php52-extensions install clean
make -DBATCH -C /usr/ports/www/mod_geoip2 install clean
make WITH_HTTP_FLV_MODULE=yes -DBATCH -C /usr/ports/www/nginx install clean
make -DBATCH -C /usr/ports/www/mod_rpaf2 install clean
make -DBATCH -C /usr/ports/devel/ZendOptimizer install clean

Ошибка в работе pcre (preg_match) во FreeBSD

April 22nd, 2010

В версиях php5-pcre 5.2 и ниже возможна ошибка проявляющаяся как:

Warning: preg_match() [function.preg-match]: Internal pcre_fullinfo() error

Причина этого проста – при сборке этого порта забыли поставить галочку для поддержки апача. Т.е. надо просто сделать make config этому порту и переустановить его.

Разные внешние IP для разных OpenVPN-клиентов

April 19th, 2010

Иногда появляется необходимость сделать для разных подключающихся клиентов разные исходящие IP-адреса. Большая часть настройки такая же как в статье “Установка OpenVPN на Linux“. Покажу лишь отличия в ситуации с двумя клиентами:
В server.conf:

server 10.10.0.0 255.255.0.0
client-config-dir /etc/openvpn/ccd

/etc/openvpn/ccd/client1:

ifconfig-push 10.10.10.1 10.10.10.2
iroute 10.10.10.0 255.255.255.0

/etc/openvpn/ccd/client2:

ifconfig-push 10.10.20.1 10.10.20.2
iroute 10.10.20.0 255.255.255.0

Ну и правил для ната должно быть тоже два:

iptables -t nat -A POSTROUTING -s 10.10.10.0/255.255.255.0 -o venet0 -j SNAT --to-source first-ext-ip
iptables -t nat -A POSTROUTING -s 10.10.20.0/255.255.255.0 -o venet0 -j SNAT --to-source second-ext-ip

Простой бэкап MyISAM таблиц MySQL без остановки сервера

April 14th, 2010

Суть в том, что мы не прерываем выполнение запросов на чтение, но в то же время получаем консистентный бэкап.
Делаем:

mysql -p

В mysql-консоли:

FLUSH TABLES WITH READ LOCK;

Ждем пока выполнится запрос.
В другой консоли просто копируем папку с нужной базой (базами) в бэкап.
В mysql-консоли:

UNLOCK TABLES;

Примеры использования ffmpeg

April 12th, 2010

Показать информацию по файлу:

ffmpeg -i sample.avi

Склеить изображений в видео:

ffmpeg -f image2 -i image%d.jpg video.mpg

Все картинки из текущей директории с именами файлов image1.jpg, image2.jpg и т.д. будут преобразованы в один ролик video.mpg.

Разложение видеоряда на кадры:

ffmpeg -i video.mpg image%d.jpg

Будут сгенерированы файлы image1.jpg, image2.jpg и т.д… Поддерживаемые графические форматы: PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI.

Кодирование видеоряда для Apple iPod/iPhone:

ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4

Извлечение звука из видео с последующим сохранением в MP3:

ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3

Преобразование WAV в MP3:

ffmpeg -i son_original.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3

AVI в MPG:

ffmpeg -i video_source.avi video_final.mpg

MPG в AVI:

ffmpeg -i video_source.mpg video_final.avi

Конвертация AVI-файла в несжатый анимированный GIF:

ffmpeg -i video_source.avi gif_anime.gif

Смешение аудио- и видеопотока в один результирующий файл:

ffmpeg -i son.wav -i video_source.avi video_final.mpg

Преобразование AVI в FLV:

ffmpeg -i video_source.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_final.flv

FLV в AVI:

ffmpeg -i video_source.flv -ab 56 -ar 44100 -b 200 -s 320x240 video_final.avi

Некоторые проблемы при установке VMWare Server 2 на linux

April 1st, 2010

После установки VMWare Server может не открываться веб-консоль сыпя в логе такими сообщениями:

'Proxysvc' 3086011280 warning] SSL Handshake on client connection failed:

Тут могут помочь две вещи:
1. Если открываем консоль через Firefox, то надо вернуть в нем поддержку SSL2 в about:config

security.enable.ssl2 from false into true

2. Если открываем консоль через Internet Explorer то подключаться надо по доменному имени, на которое сгенерирован SSL сертификат, а не по IP.

Еще вмварный management-демон может иногда падать. Вот здесь человек разобрал как это дело полечить.

Перенос базы пользователей FreeBSD

March 11th, 2010

Чтобы перенести всех системных пользователей на другой сервер надо просто скопировать поверх файлы /etc/master.passwd и /etc/group, и затем на новом сервере выполнить команду

pwd_mkdb master.passwd

Простая установка VPN-сервера MPD на FreeBSD

February 25th, 2010

Ставим из портов:

cd /usr/ports/net/mpd5 && make install

У файлов из /usr/local/etc/mpd5/ делаем копии без .sample

В mpd.secret удаляем все и прописываем имя и пароль в открытом виде через табуляцию.

В mpd.conf:
В секции startup: комментируем строчки set web.
В default заменяем на load pptp_server
В секции pptp_server:
меняем set ippool add pool1 на пул не пересекающийся с нашими локальными адресами.
set ipcp dns 8.8.8.8
set ipcp ranges – адрес сервера
set pptp self – адрес на котором будет слушать сервер.
set ipcp nbns – можно удалить

В /etc/rc.conf

mpd_enable="YES"
ipnat_enable="YES"
ipnat_rules="/etc/ipnat.rules"
gateway_enable="YES"

В /etc/ipnat.rules:

map bge0 192.168.6.0/24 -> 0/32

где bge0 внешний интерфейс сервера.

Запускаем:

/etc/rc.d/ipnat start
sysctl net.inet.ip.forwarding=1
/usr/local/etc/rc.d/mpd5 start

Все, можно подключаться стандартным виндовым клиентом.

Установка eAccelerator на CentOS с DirectAdmin

February 16th, 2010

Перед установкой вам может понадобиться php-devel, autoconf. Тогда просто ставим их через yum

yum install php-devel
yum install autoconf
cd /usr/local/src
mkdir eAccelerator
cd eAccelerator
wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2
tar -xvjf eaccelerator-0.9.6.tar.bz2
cd eaccelerator-0.9.6
export PHP_PREFIX="/usr/local"
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
make
make install
cd /tmp
mkdir eaccelerator
chmod 0777 eaccelerator

Теперь правим php.ini. Например, при установленных ZendOptimizer, ionCube и eAccelerator он должен быть примерно таким (порядок подключения модулей важен!):

extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613"

[eAccelerator]
extension="eaccelerator.so"
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="100"
eaccelerator.shm_prune_period="1800"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

[Zend]
zend_extension = /usr/lib64/ioncube/ioncube_loader_lin_5.2.so
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.3
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.3
zend_optimizer.version=3.3.3
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so

Теперь проверяем и релоадим апач:

php -i |grep eacc
/etc/init.d/httpd reload

Добавление диапазона IP адресов в CentOS

February 12th, 2010

Если надо добавить непрерывный диапазон IP адресов на интерфейс, то создаем файл /etc/sysconfig/network-scripts/ifcfg-eth0-range0 с содержимым:

IPADDR_START=192.168.0.101
IPADDR_END=192.168.0.120
NETMASK=255.255.255.255
CLONENUM_START=1
NO_ALIASROUTING=yes

Где
IPADDR_START – первый IP, который вы хотите добавить
IPADDR_END – последний IP, который вы хотите добавить
CLONENUM_START – число, с которого будет начинаться виртуальный интерфейс, например от eth0:1 до eth0:20

/etc/init.d/network restart

Расследование странного глюка с HTTP Basic авторизацией

February 10th, 2010

Иногда бывают такие ситуации, когда несколько глюков наложившись один на другой составляют проблему весьма и весьма загадочную на первый взгляд.
Ситуация была такая:
Проводился перенос сайтов с ВПС-а (на LAMP платформе) на дедик с таким же LAMP только еще с DirectAdmin-ом. Контент сайтов и базы данных были перенесены на новый хост. На одном из сайтов был установлен Wordpress и в подпапке /st/ некий скрипт доступ к которому был ограничен в файле .htaccess лежащем в той же папке. Вот содержимое того .htaccess

Order allow,deny
Allow from all
AuthType Basic
AuthName "admin"
AuthUserFile /home/username/domains/domain.com/public_html/st/.htpasswd
Require valid-user

Вроде все очень просто и правильно. Но, при попытке доступа к domain.com/st/ мы стабильно получаем ошибку “404 – File Not Found” и отсутствие какого либо запроса на авторизацию. В логах этого виртуалхоста никаких ошибок, только 404 ответы. Все пути проверены и перепроверены. Авторизационные модули апача точно присутствуют:

apachectl -M |grep auth
 authn_file_module (static)
Syntax OK
 authn_default_module (static)
 authz_host_module (static)
 authz_groupfile_module (static)
 authz_user_module (static)
 authz_default_module (static)
 auth_basic_module (static)

В конфигах апача точно разрешено переопределение директив для этой папки AllowOverride All.
Расследование вывело на .htaccess лежащий в корне этого сайта и строки от вордпресса:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-.*) $2 [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

Комментируя последнюю строчку мы получали работающую авторизацию. Но при чем тут она?! =)
Пытался отключать наследование работы mod_rewrite прописывая в “нижний” .htaccess директив RewriteEngine Off – не помогало. Да и на старом ВПС-е все работало. Очень странно.
Для уточнения работы правил реврайта пришлось в виртуалхост добавить директивы:

RewriteLog "/var/log/httpd/rewrite.log"
RewriteLogLevel 3

Оказалось, что при открытии проблемного УРЛ mod_rewrite пытался преобразовать адрес uri ‘401.shtml’. Что и указало на суть проблемы. А проблема на самом деле была в том, что при переносе сайта из ДиректАдминовского каталога /public_html были удалены дефолтные файлы – обработчики ошибок:
400.shtml, 401.shtml, 403.shtml … которые были назначены в конфиге апача обработчиками соответствующих ошибок. И происходило следующее: при запросе проблемного урла апач отвечал 401 – как и должен был, и пытался отдать страницу 401.shtml, но так как она была удалена .htaccess из корня сайта преобразовывал запрос на вордпрессовый index.php отдавая 404 из-за отсутствующего 401.shtml.
Возвращение на место *.shtml файлов вернуло все в работающее состояние.
Мораль: изменять дефолтные настройки всяких сложных панелей нужно очень аккуратно.

Проблема с php5-ffmpeg на FreeBSD

January 28th, 2010

На сегодняшний день имеется проблема выражающаяся в том, что одна из основных функций toGDImage() не работает выдавая ошибку “ffmpeg.so: Undefined symbol img_convert”
Этот патч проблему не решил.
Помогло следующее: порт multimedia/ffmpeg должен быть собран без swscaler. Для этого нужно поправить Makefile. Т.е. сделать –disable-swsale. После пересборки самого ffmpeg, пересобрать и php-ffmpeg.

Восстановление системных файлов в Windows Server 2003

January 25th, 2010

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

sfc /scannow

Если есть установочный CD, то его надо вставить. А если дистрибутив скопирован на диск, то надо в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup изменить ключ SourcePath указав путь к дистрибутиву.

Fedora на сервере и NetworkManager

January 19th, 2010

При эксплуатации на сервере Fedora Linux рекомендуется отключать дефолтный NetworkManager и включать используемый по умолчанию в CentOS network тогда никаких глюков с добавлением алиасов на интерфейсы и прочим не будет:

chkconfig network on
chkconfig NetworkManager off
service network restart

IPtables и пассивный режим работы FTP-сервера

January 19th, 2010

Чтобы на сервере закрытом iptables заработал пассивный режим на ФТП-сервере надо:
В /etc/sysconfig/iptables-config добавить модуль:

IPTABLES_MODULES="ip_conntrack_ftp"

Рестартим:

/etc/init.d/iptables restart

Конечно среди правил iptables должно быть подобное:

-p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT

Отображение ошибок в PHP

January 11th, 2010

Включить отображение ошибок в PHP-скриптах можно несколькими способами:
Внести изменения в php.ini и релоаднуть апач. Эти изменения затронут все сайты.

error_reporting = E_ALL
display_errors = On
display_startup_errors = On
log_errors = On
log_errors_max_len = 1024
error_log = /var/log/php-error.log

Внести в .htaccess расположенный в папке скрипта. Это рекомендуемый способ:

php_value display_errors 1
php_value display_startup_errors 1

Внести изменения в сам скрипт:

ini_set("display_errors","1");
ini_set("display_startup_errors","1");
ini_set('error_reporting', E_ALL);

С этим методом такой нюанс: ошибки типа не закрытых скобок и не проставленных ; все равно будут приводить к белому экрану. Это происходит потому, что парсинг файла на синтаксическую корретность происходит до его выполнения и, соответственно, установки директив.
Это можно обойти подобным образом:

<?php
 error_reporting(E_ALL);
 ini_set("display_errors", 1);
 include("file_with_errors.php");
?>

Документация по соответствующим директивам PHP

Активация сервера терминалов в Windows Server 2003

December 26th, 2009

Если вдруг возникнет необходимость активировать сервер терминалов в Windows Server 2003 то вот здесь отличная статья на эту тему

Ставим простой и легкий прокси – privoxy

December 25th, 2009

Иногда бывает нужно посмотреть выдачу для другой страны или еще что-нибудь для чего удобно было бы использовать прокси на своем сервере/впс. Сквид – большой и тяжелый, поэтому разумно будет поставить privoxy. Он есть и в репозиториях для RHEL/CentOS и в портах FreeBSD. Бонусом privoxy является то, что он фильтрует всякую рекламу и подозрительные скрипты. Ставим:

yum install privoxy

В конфиге /etc/privoxy/config пишем строчку

permit-access [свой внешний ип]
listen-address  [внешний ип сервера]:8118

И далее:

chkconfig privoxy on
/etc/init.d/privoxy start

Все, можно подключаться.

Качественно и недорого http://www.getwifi.ru/ - вайфай в офис. .
Хорошая в эксплуатации теплая штукатурка легко наносится .