Восстановление баз mysql из бинарных логов | FreeBSD, MYSQL

Грохнул по нечаяности базу (говорили мне не используй phpmyadmin делай все руками) :)
Надо восстанавливать. В бэкапе – неверно настроенная кодировка – следовательно в таблицах – знаки вопроса вместо букв. Хорошо что бинарный лог не отключен, и имеется полный набор логов.
Продолжить чтение →

Flash баннеры в Joomla, undefined, clickTag и link1 | Joomla

Попалась задача – опубликовать flash баннер рекламодателя в Joomla! 1.5. В принципе, если ссылка прописана в баннере кодом:

on (release) {
getURL("http://yoursite.com/", "_blank");
}

то проблем нет – достаточно загрузить swf через медиаменеджер в джумле, добавить рекламодателя, создать новый баннер, выбрать закачанный файл и (обязательно!) указать размеры баннера в соответствующих полях (ширина и высота) в админке. Но если в баннере ссылка прописана кодом в которой ссылка прописана переменной – такой метод не сработает.
Продолжить чтение →

Flash перекрывает выпадающее меню в Joomla! 1.5 | Joomla

На Joomla! 1.5 cтолкнулся с неприятностью – flash ролик (баннер) перекрывает выпадающее меню – получается что меню оказывается снизу – под баннером. Попытки решить с помощью z-index не увенчались успехом.

Оказалось все просто – надо было доработать модуль mod_banners.
Продолжить чтение →

unsupported dictionary type: mysql, Inappropriate file type or format | FreeBSD, Postfix

После обновления postfix (посредством portupgrade) поймал ошибки:

postfix/trivial-rewrite[87453]: warning: virtual_alias_domains lookup failure
postfix/trivial-rewrite[87453]: warning: mysql:/usr/local/etc/postfix/mysql/mysql_virtual_alias_maps.cf 
is unavailable. unsupported dictionary type: mysql

База пользователей у меня хранится в mysql и ругань возникла поскольку я не отметил поддержку mysql во время обновления – а по дефолту порт предложил собраться только с поддержкой pcre. :)
Продолжить чтение →

Автоматизация jpegtran | FreeBSD

Решил заняться оптимизацией изображений на вебсервере – jpegtran и подобные утилиты позволяют уменьшить размер изображений без потери качества – удаляют мета информацию и т.д.

Вызов такой:

jpegtran -copy none -optimize -perfect -outfile outfile.jpeg sourcefile.jpeg

или

jpegtran -copy none -optimize -perfect source.jpg > dest.jpg

Все хорошо, но для оптимизации работы хорошо бы написать скрипт для автоматизации работы – указать целевую папку и запланировать в крон.
Продолжить чтение →

show status like, show variables like. Оптимизация MySQL | MYSQL

На заметку себе по вопросам оптимизации mysql. Актуально для myisam, mysql 4.0 (думаю актуально и для 5 ветки).
Общий принцип – смотрим счетчики в запросах типа

mysql> show status like "%table%";

И значение переменных сервера:

mysql> show variables like "%table%";

Сравниваем, думаем, читаем что за что отвечает.

После того как сделали выводы – идем в /etc/my.cnf правим переменные и перезапускаем сервер. Снова смотрим на вывод show status и делаем выводы. :)
Продолжить чтение →

There are suspended jobs. | FreeBSD

Если при попытке выйти из консоли получаем сообщение:

#exit
#There are suspended jobs.

Смотрим список:

# jobs
[1]  + Suspended                     mysql -u root -p

Выводим задачу на консоль командой fg N (где N – номер задания):

#fg 1
mysql -u root -p (wd: /usr/local/etc/rc.d)

И завершаем работу.

500 Illegal PORT command. | Linux, vsftpd

Столкнулся с проблемой при доступе к ftp серверу – vsftpd.
При попытке соединения получал ошибку:

FTP command: Client "1.2.3.4", "PORT 172,16,5,239,15,188"
FTP response: Client "1.2.3.4", "500 Illegal PORT command."

Продолжить чтение →

Оптимизируем php. Eaccelerator | FreeBSD

Для кэширования динамического контента и оптмизации php решил поставить eaccelerator. Ставится просто.

#cd /usr/ports/www/eaccelerator
#make install clean

Далее создаем папку для кэша, даем права.

#mkdir /tmp/eaccelerator
#chown www /tmp/eaccelerator
#chmod 0700 /tmp/eaccelerator

Далее открываем /usr/local/etc/php/extensions.php и добавляем строку:

extension="eaccelerator.so"

И в /usr/local/etc/php.ini:

eaccelerator.shm_size="0"
  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="0"
  eaccelerator.shm_prune_period="0"
  eaccelerator.shm_only="0"
  eaccelerator.compress="1"
  eaccelerator.compress_level="9"
 eaccelerator.content  = "shm_and_disk"

eaccelerator.shm_size=»0″ – задает огрничение выделяемой памяти,
eaccelerator.content = «shm_and_disk» – кэшировать контент – в память и на диск

Перезапускаемся. В моем случае это lighttpd + spawn-fcgi:

/usr/local/etc/rc.d/spawn-fcgi restart

Смотрим все ли ок:

# php -v
PHP 5.3.9 with Suhosin-Patch (cli) (built: Jan 25 2012 13:04:50)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
    with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator

Включаем кэширование запросов в mysql | FreeBSD, MYSQL

Проверить включено ли кэширование запросов у вас на сервере можно запросом:

mysql> show variables like 'query_cache%';
+------------------------------+-----------+
| Variable_name                | Value     |
+------------------------------+-----------+
| query_cache_limit            | 1048576   |
| query_cache_min_res_unit     | 4096      |
| query_cache_size             | 134217728 |
| query_cache_type             | ON        |
| query_cache_wlock_invalidate | OFF       |
+------------------------------+-----------+
5 rows in set (0.00 sec)

Продолжить чтение →

Сжимаем трафик lighttpd с помощью mod_compress | FreeBSD, Lighttpd

По дефолту лайти не сжимает файлы которые отдает. Настроим модуль mod_compress который позволит отдавать клиентам сжатые версии файлов (css, xml, javascript, html, txt).
Продолжить чтение →

Как сбросить пароль sa на MSSQL | MSSQL

Сбросить забытый пароль sa на сервере MSSQL можно имея доступ к серверу. Идем в сервисы – выбираем сервис SQL Server и на вкладке – Log On выбираем учетную запись под которой сервис будет запущен. Например – локального админа. Вводим пароль по запросу. Перезапускаем сервис. Подключаемся (сеанс должен быть под той учетной записью с который запущен SQL) – выбираем Windows Authentification – открываем базу ищем пользователя sa и меняем пароль.

Настройка виртуального хоста (simple_vhost) в Lighttpd | FreeBSD, Lighttpd

Понадобилась настройка виртуальных хостов в lighttpd. В лайти есть три модуля которые отвечают за виртуальные хосты – я использовал самый простой – simple_vhost. Поскольку с поисковиках внятного мануала по быстрой настройке быстро не нашел – пишу себе на заметку.

Итак – первое – в modules.conf расскоментируем строку:

include "conf.d/simple_vhost.conf"

В комментариях к конфигу сказано что мы можем использовать только один модуль. Ну и хорошо – будем использовать simple_vhost.

Далее все просто. Если мы не хотим описывать каждый vhost в конфиге просто правим в simple_vhost.conf несколько переменных:

simple-vhost.server-root   = "/usr/local/www/vhosts/"
simple-vhost.default-host  = "example.com"
simple-vhost.document-root = "/"

Соответсвенно директория /usr/local/www/vhosts/ должна существовать, права выставляем для пользователя под которым работает лайти.

Что дает эта инструкция. Мы поределяем директорию где лежат папки с файлами вирт хостов. Создавая папку /usr/local/www/vhosts/my.example.com мы создаем вирт хост. Никаких дополнительных настроек не нужно (ну естественно кроме настройки ДНС, но к лайти это отношения не имеет). Лайти сам просмотрит директорию вирт хостов, найдет папку совпадающую с именем запроса (http://my.example.com) и обслужит запрос. Если папку с фалами вирт хоста не обнаружат – то выдаст дефолтный хост.
Подробнее о том как формируется путь к дефолтному хосту и вся логика можно посмотреть на странице вики lighttpd: http://redmine.lighttpd.net/wiki/1/Docs:ModSimpleVhost

Другой путь – описать виртуальный хост в конфиге lighhtpd.conf. Синтаксис следующий:

$HTTP["host"] == "test3.example.com" {
server.document-root = "/usr/local/www/vhosts/test3.example.com"
server.errorlog = "/var/log/lighttpd/test3.error.log"
accesslog.filename = "/var/log/lighttpd/test3.access.log"
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/usr/local/www/vhosts/.htpasswd"
            auth.require = ("/" => (
           "method"  => "basic",
           "realm"   => "Valid users only",
            "require" => "valid-user"
               ))
}

Здесь описан вирт хост c именем test3.example.com, его файлы определяем в папке /usr/local/www/vhosts/test3.example.com, логи, и закрываем весь хост паролем (plain auth).

Маршрутизация ESXi. Подключение NFS из удаленной сети. | FreeBSD, Linux, VMware

Подняли изолированный хост ESXi в DMZ. Выход в сеть через шлюз. Шлюз на FreeBSD, подключен к DMZ (сеть 172.16.5.0/24) и основной LAN 10.0.0.0/24 (в лан – vSphere, остальные хосты esxi, файловый сервер (NFS). Задача – заставить хост ESXi в изолированной сети работать с NFS хранилищем в удаленной сети.

Шлюз. FreeBSD. KernelNAT:

${fwcmd} add nat 1 ip from any to any

Эта строка в ipfw позволяет роутить и натить все на всех трех интерфейсах – интерфейс в интернет, и два интерфейса – в DMZ и локальную общую сеть.

Далее ESXi. Для работы с маршрутами в ESXi есть команда esxcfg-route. Из GUI – в консоли и через vSphere мы можем настроить дефолтный шлюз. Чтобы настроить дополнительный маршрут – нужен ssh (или наверное через CLI тоже можно). Я делал в ssh.

Просмотр маршрутов:

#esxcfg-route --list

Добавляем маршрут в LAN сеть:

#esxcfg-route -a 10.0.0.0/24 172.16.5.1

172.16.5.1 – айпи шлюза в ДМЗ. Командой говорим – все что для 10.0.0.0/24 шлем на 172.16.5.1.
После этого можно пинговать интерфейс шлюза в сети 10.0.0.0/24 (у меня это 10.0.0.2).

Далее. Теперь для того чтобы хост из LAN (NFS сервер в нашем случае) знаку куда отправлять ответные пакеты настраиваем маршрут на нем.

Пусть это хост 10.0.0.10. У меня это CentOS. Делаем:

#route add -net 172.16.5.0 netmask 255.255.255.0 gw 10.0.0.2
Указываем именно gw (просто указания интерфейса недостаточно).

Все. После этого пинг будет проходить от хоста из ДМЗ до NFS сервера и обратно.
Далее правим exports для того чтобы дать доступ к NFS машинам из сети DMZ (172.16.5.0/24).

/storage 172.16.5.0/24(rw,insecure,async,no_root_squash)

И применим изменения:

#exportfs -r

Теперь идем на наш xост ESXi и подключившись клиентом (через шлюза по впн) добавляем NFS хранилище. Все должно подмонтироваться без проблем.

PS: На винде маршрут к удаленной сети добавляем командой (пример):

route add 10.0.0.0 172.16.5.1

Warning: Division by zero in mod_news_pro_gk1/helper.php | Joomla

Поймал баг в модуле от gavickpro – при отложенной публикации материала в модуле ловим ошибку:

Warning: Division by zero in mod_news_pro_gk1/helper.php

Что поправить в файле helper.php не нашел но, победить можно либо апгрейдом 4 версии модуля (как говорят в сети) или просто отключив вывод ошибок в самой Joomla!

В файле configuration.php (Joomla 1.5) меняем переменную:

var $error_reporting = '1';

По дефолту уровень отладки – 7. Ошибка уйдёт.

PS: Этот метод может помочь и при неадекватной работе других модулей.