9/10/2010
Mysql master-master replication
What we need:
Server1 = master 1/slave2
Server2 = master2/slave2
Internal or external IPs (in this example I will use server1 _ip and server2_ip)
Replication user = replicau
Step-by-step how to:
Step 1.
On server 1 in my.cnf we need to add following lines
[mysqld]
#master config
Server-id =1
Log-bin = mysql-bin
binlog-do-db = test_db
… #we can add as many DB as we need to replicate
#slave config
replicate-do-db = test_db
… #we can add as many DB as we need to replicate
master-host = server2_ip
master-user= replicau
master-password =password_of_user_replicau
master-port = 3306
same lines we should add in my.cnf on server2, the only thing we should change is master-host parameter to use server1_ip instead of server2_ip and change server-id parameter
Step 2
Restart mysql servers
Step 3
On each server we need to create replication user:
Server1
mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replicau'@'server2_ip' IDENTIFIED BY 'password';
server2
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replicau'@'server1_ip' IDENTIFIED BY 'password';
Step 4
Add server2 as slave to server1
- we need to set read_only parameter as ON on server1 (master 1)
mysql> SET GLOBAL read_only = ON;
mysql> show master status;
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 | 7984 | | |
+------------------+----------+--------------+------------------+
1 row in set (0,00 sec)
on server2
mysql>slave stop;
mysql> CHANGE MASTER TO MASTER_HOST = "server2_ip", MASTER_USER = "replicau", MASTER_PASSWORD = "password_of_user_replication", MASTER_LOG_FILE = "mysql-bin.000006", MASTER_LOG_POS = 7984;
mysql> slave start;
on server1
mysql> SET GLOBAL read_only = OFF;
on server2 check connection status
mysql> show slave status;
if we do not receive any errors, everything is perfect
Step 5
Do Step 4 for connecting server 1 as slave to server2.
Step 6
Check if everything is fine, if no try from step 1
Step 7
It’s time to have a cup of coffee/tea of a bottle of beer
6/01/2010
[FIX] #1153 – Got a packet bigger than ‘max_allowed_packet’ bytes
there are the steps how to fix this
1. login into your server
2. enter into mysql
set this 2 variables
set global max_allowed_packet=1000000000;
set global net_buffer_length=1000000;
3. exit from mysql
4. add this line into my.cnf
max_allowed_packet=16M
5 restart mysql
/etc/init.d/mysql restart
6. upload dump :)
5/02/2010
4/24/2010
mysql tuning
First of all I recommend to run mysqltuner script
usage:
wget http://mysqltuner.com/mysqltuner.pl
chmod +x mysqltuner.pl
./mysqltuner.pl
You will be prompted to enter valid mysql credentials and after that you will see recommendation what should you tune on your mysql server
mysql optimize tables
and there I found nice perl script which can be run on your server and you can optimize tables in DB
you can download it from there
1/16/2010
Как выяснить маску подсети исходя из CIDR ?
Как выяснить маску подсети исходя из CIDR ?
В кач-ве примера будем использовать IP-адрес 213.45.64.123 с CIDR /27:
Необходимо взять кол-во бит из CIDR (в бинарном виде), разбить на 4-ре октета и перевести в десятичные.
1. запишем первые 27 бит как 1-цу, а остальные 5-ть (т.к. их всего 32 бита) как 0-ль
11111111111111111111111111100000
2. Разделим на 4-ре октета
11111111.11111111.11111111.11100000
3. Переведем в десятичную систему
255.255.255.224
Вот и все. Получили что /27 равен маске 255.255.255.224
Так же полезно просто помнить что:
сети класса A - это CIDR /8
сети класса B - это CIDR /16
сети класса С - это CIDR /24
Как по CIDR определить адрес сети, широковещательный адрес (broadcast), число хостов в сети ?
В кач-ве примера будем использовать тот же IP-адрес 213.45.64.123 с CIDR /27:
1. 32-27=5 бит
2. 2-ка в пятой степени = 32, а значит получается что рабочих IP-адресов в этой сети 30-ть (т.к. 1-ый адрес это адрес сети, а последний это broadcast)
3. Смотрим последний октет IP-адреса (213.45.64.123), в 123-х целых 32-ек укладывается 3 раза, а значит адрес сети 213.45.64.96 - это 32 умножить на 3 (32х3=96)
4. Широковещательным адресом (broadcast) будет 213.45.64.127 - это 32 умножить на 4 и отнять 1 (32х4-1=127)
Как по хосту и маске подсети определить адрес сети, широковещательный адрес (broadcast), число хостов в сети ?
В кач-ве примера будем использовать IP-адрес 192.168.32.48 с маской подсети 255.255.255.192:
1. 256-192=64, где 192 это последний октет из маски (255.255.255.192), а 64 это общее кол-во хостов в сети,
т.к. 1-ый адрес это адрес сети, а последний это broadcast получаем 62 рабочих хоста в сети.
2. Смотрим последний октет IP-адреса (192.168.32.48), в 48 целых 64-рок укладывается ноль получаем адрес сети 192.168.32.0 (0x64=0)
3. Широковещательным адресом (broadcast) будет 192.168.32.63 (64x1-1=63)
http://subnets.ru/wrapper.php?p=35#que2
11/04/2009
Install Plesk Billing standalone on win2008
1.Create site via Plesk admin interface
Home>Domains ->Create domain ->
with enabled PHP support ->Version 5.x ->run as CGI Application
with enabled "Use dedicated pool" option
the rest parameters for own consideration
2.Make sure that is installed Zend or Ioncube support
check
C:\Program Files\Parallels\Plesk\Additional\PleskPHP5\php.ini file
for zend_extension_ts
for example I have installed Ioncube dll to C:\Program Files\Parallels\Plesk\Additional\PleskPHP5\ext\ so in php.ini should be at the beginning
zend_extension_ts= "C:\Program Files\Parallels\Plesk\Additional\PleskPHP5\ext\ioncube_loader_win_5.2.dll"
3.Download PleskBilling installation archive http://www.parallels.com/download/plesk/billing/
and extract Plesk Billing to home folder of created site
how example
C:\inetpub\vhosts\pppbs.com\httpdocs
4.Login to Plesk admin CP interface,
Go to Home>Database Servers> Local MySQL server ->WebAdmin
create for pleskbilling mysql user and database via phpmyadmin (with privileges according to installation guide http://download.ppb.parallels.com/6.0/doc/parallels-plesk-billing-6.0-for-windows-installation-guide/index.htm)
5.Start installation of Plesk Billing by usinghttp://download.ppb.parallels.com/6.0/doc/parallels-plesk-billing-6.0-for-windows-installation-guide/index.htm
Latest step - creating of database , so it can fail due to timeout reason, for this please increase values of
default_socket_timeout and mysql.connect_timeout in C:\Program Files\Parallels\Plesk\Additional\PleskPHP5\php.ini
After installation Plesk Billing database can have 214 tables with ~4,601 records.
Anonymous account name you may find in properties of PleskBilling site ->Feature View-> Authentication->Anonymous authentication ->Edit , via IIS Managenment, if will be problems with NTFS permissions this account you may add to the TEMP directory with modify permissions
9/12/2009
mod_dphpbb3_last_topics php warnings
Today after installing such pretty tool as mod_dphpbb3_last_topics I received a ton of such errors
Warning: cannot yet handle MBCS in html_entity_decode()! in helper.php in line 130
After googling I found this article. I tried to replace:
$title = html_entity_decode($title, ENT_QUOTES, 'UTF-8'); with $title =
utf8_decode($title);
but it brakes UA/RUS lang. After brainstorm I made following changes in code:
Was:
$title = html_entity_decode($title, ENT_QUOTES, 'UTF-8');
Become:
$title = html_entity_decode($title);
8/20/2009
Встановлення Xen на Debian Etch 4.0
Переклад Михайло "veselujm" Веселовський
Протягом довгого часу я випробуав багато технологій віртуалізації: Xen, VMWare, і
Microsoft VM. Я з впевненістю можу сказати що всі вони придатні для використання, але VMWare і Microsoft’s VM є більш вялими ніж Xen. Цих вихідних я розгорнув свій перший сервер на базі Debian Etch 4.0 і Xen. І все запрацювало з "коробки"Тут я опишу кроки які я зробив щоб поставити Xen на Debian Etch:
sudo apt-get install xen-linux-system-2.6.18-4-xen-686 libc6-xen bridge-utils
Грузимось в нове ядро з встановленим Xen
sudo reboot
Потім настроюємо настройки мережі в /etc/xen/xend-config.sxp. Вмикаємо network bridge:
(network-script network-bridge)
Встановлюю xen-tools:
apt-get install xen-tools
Xen tools це пакет який включає в себе різноманітні утиліти для Xen, утиліта для створення віртуальних машин тощо.
Редагуємо настройки ядра і initrd в /etc/xen-tools/xen-tools.conf, так щоб вони були подібними до ваших системних.
Взнаємо як ядро і initrd називаються у вашій системі:
ls /boot/vmlinuz*
/boot/vmlinuz-2.6.18-4-686 /boot/vmlinuz-2.6.18-4-xen-686і
ls /boot/initrd*
/boot/initrd.img-2.6.18-4-686 /boot/initrd.img-2.6.18-4-686.bak /boot/initrd.img-2.6.18-4-xen-686
Змінюємо рядки:
#
# Default kernel and ramdisk to use for the virtual servers
#
kernel = /boot/vmlinuz-2.6.18-4-xen-686
initrd = /boot/initrd.img-2.6.18-4-xen-686
В наступному кроці змінюємо наступні рядки в xen-tools.conf
dir = /home/xen
debootstrap = 1
size = 4Gb # Розмір диску
memory = 128Mb # Память
swap = 128Mb # Своп
fs = ext3 # використовувати файлову систему EXT3 для створення дисків
dist = etch # Стандартиний дистрибутив для встановлення
image = sparse # Визначаємо тип диску повний чи частинами
Створюємо домівки для наших віртуальних машин:
mkdir /home/xen
mkdir /home/xen/domains
Тепер ми готові до створення віртуальної машини
xen-create-image -hostname=mailserver -ip=10.0.0.21 -netmask=255.255.255.0 -gateway=10.0.0.1 -passwd
Після чого новостворену віртуалку можна запустити:
xm create mailserver.cfg
У випадку появи наступної помилки:
Error: Device 0 (vif) could not be connected. Backend device not found.
Потрібно перевірити чи ви увімкнена підтримка network bridge, “(network-script network-bridge)”, в /etc/xen/xend-config.sxp після додавання потрібно пергрузити демон xen /etc/init.d/xend restart. Здопомогою команд “xm list” чи “xentop” можна подивитись яка віртуалка зараз крутиться:
debian5:# sudo xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 874 1 r----- 657.9
mailserver 3 128 1 -b---- 8.0
Базуючись на моєму досвіді використання і впровадження технолоїй віртуалізації , а думаю що Xen це саме те для впровадження Linux і Linux-based технологій і це показує що вони готові до використання вже тепер. Технології віртуалізації вже тепер готові до впровадження в великих компаніях і дата центрах, і вони допомагають спростити настроювання, впровадження і встановлення працівникам, І я думаю що найближчі роки технології віртуалізації будуть грати важливу роль на серверному ринку.
2/17/2009
How to flush DNS cache in Linux / Windows / Mac
To flush DNS cache in Microsoft Windows (Win XP, Win ME, Win 2000):-
- Start -> Run -> type cmd
- in command prompt, type ipconfig /flushdns
- Done! You Window DNS cache has just been flush.
To flush the DNS cache in Linux, restart the nscd daemon:-
- To restart the nscd daemon, type /etc/rc.d/init.d/nscd restart in your terminal
- Once you run the command your linux DNS cache will flush.
To flush the DNS cache in Mac OS X Leopard:-
- type lookupd -flushcache in your terminal to flush the DNS resolver cache.
ex: bash-2.05a$ lookupd -flushcache
- Once you run the command your DNS cache (in Mac OS X) will flush.
To flush the DNS cache in Mac OS X:-
- type dscacheutil -flushcache in your terminal to flush the DNS resolver cache.
ex: bash-2.05a$ dscacheutil -flushcache
- Once you run the command your DNS cache (in Mac OS X Leopard) will flush.
9/25/2008
Створення шаблону для Joomla! 1.5
Пропонуємо Вашій увазі невеликий мануал-введення по створенню шаблонів для Joomla! 1.5. Стаття описує базовий функціонал розділення логіки та дизайну для тих, хто займається створенням шаблонів.
Шаблон
Структура шаблону практично не змінилася. Шаблони лежать у папці /templates. У папці Вашого шаблону обов'язково повинні бути наступні файли: index.php і templateDetails.xml (саме так з D у верхньому регістрі).
Папки для CSS і опис своїх типів відображення модулів (див. нижче) називаються css і html відповідно.
Структура:
- templates
- my_template
- css
- html
- index.php
- templateDetails.xml
- my_template
Файл templateDetails.xml містить опис шаблону (ім'я автора, дату створення та ін.) і список файлів, які містяться в шаблоні (необхідно для встановлення шаблона через Менеджер Встановлення). Файл index.php - це власне і є шаблон.
Код порожнього index.php:
<?php echo '<?xml version="1.0" encoding="utf-8"?' .'>'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml: dir="{LANG_DIR}" >
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="templates/{TEMPLATE}/css/template.css" type="text/css" />
</head> <body> </body>
</html>
Всередині теґів <body>...</body> міститься html-зміст шаблона (можливі включення PHP-коду).
Модулі
В Joomla! 1.0.x модулі виводилися так:
<?php mosLoadModules ( 'left',-1); ?>
де:
- left - позиція модуля,
- -1 - тип відображення модуля.
В Joomla! 1.5 відображення модулів здійснюється наступним чином:
<jdoc:include type="modules" name="right" style="-1" />
де:
- type="modules" - говорить про те, що виводиться модуль;
- name="right" - вказує на позицію модуля;
- style="-1" - вказує тип висновку модуля.
Для style="..." з'явилася можливість вказування типу виводу не тільки цифрами, але й ключовими словами.
style="table" - стандартний вивід модуля в таблиці:
<table cellpadding="0" cellspacing="0" class="moduletable">
<tr>
<th valign="top">Заголовок Модуля</th>
</tr>
<tr>
<td>Зміст Модуля</td>
</tr>
</table>
де:
- style="horz" - горизонтальний відображення.
Не побачив різниці з style="table", хоча в офіційному мануалі сказано, що формується горизонтальне відображення модуля.
style="xhtml" - вивід модуля в одному DIV із заголовком H3:
<div class="moduletable">
<h3>Заголовок Модуля</h3>
Зміст Модуля
</div>
style="rounded" - відображення модуля в чотирьох вкладених DIV (використовується для створення закруглених кутів у модулях):
<div class="module">
<div>
<div>
<div>
<h3>Заголовок Модуля</h3>
Зміст Модуля
</div>
</div>
</div>
</div>
style="raw" - буде виведений зміст модуля без заголовка, таблиць і DIV'ів:
Зміст Модуля
В Joomla 1.5 додана можливість створювати свої типи відображення модулів.
Опис типу відображення модуля знаходиться у файлі /templates/template_folder/html/modules.php. Ім'я функції обов'язково повинне починатися з modChrome_.
Приклад відображення модулів
Створимо тип відображення style="example", у якому модулі будуть виводитися в таблиці шириною 180px, заголовок модуля має червоне тло, текст заголовка виводиться в тегах <H3>…</H3>, тіло модуля має сіре тло. Весь текст у верхньому регістрі.
Код найпростішого файлу modules.php буде таким:
<?php defined('_JEXEC') or die('Restricted access'); function modChrome_example($module, & $params)
{ ?> <table width="180px" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="background-color:red;"><h3><?php echo $module->title ?></h3></td>
</tr>
<tr>
<td style="background-color:gray; text-transform:uppercase;"><?php echo $module->content ?></td>
</tr>
</table> <?php } ?>Контент
Відображення контента здійснюється таким чином:
В Joomla! 1.0.x
<?php mosMainBody(); ?>
В Joomla! 1.5
<jdoc:include type="component" />
Код найпростішого index.php трьохколоночного шаблону
<?php echo '<?xml version="1.0" encoding="utf-8"?' .'>'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml: dir="{LANG_DIR}" >
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="templates/{TEMPLATE}/css/template.css" type="text/css" />
</head> <body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="left"><jdoc:include type="modules" name="left" style="raw"/></td>
<td class="center"><jdoc:include type="component" /></td>
<td class="right"><jdoc:include type="modules" name="right" style="raw"/></td>
</tr>
</table>
</body> </html>
Трюки з відображенням модулів
Завдання:
Для зареєстрованих користувачів виводимо модулі в right для всіх інші модулі в user1.
Вирішення:
Після тегу <body> пишемо
<?php $user =& JFactory::getUser(); ?>
у тілі шаблона
<?php if($user->_id) {?>
<jdoc:include type="modules" name="right" style="raw"/>
<?php } else {?>
<jdoc:include type="modules" name="user1" style="raw"/>
<?php }?>Завдання:
Для користувачів групи author виводимо модулі в right для всіх інші модулі в user1.
Вирішення:
Після тегу <body> пишемо
<?php $user =& JFactory::getUser(); ?>
у тілі шаблона
<?php if($user->get('usertype') == 'Author') {?>
<jdoc:include type="modules" name="right" style="raw"/>
<?php } else {?>
<jdoc:include type="modules" name="user1" style="raw"/>
<?php }?>Завдання:
Разом з компонентом weblinks виводимо модулі в user2.
Вирішення:
Після тегу <body> пишемо
<?php $option = JRequest::getVar( 'option' );?>
у тілі шаблона
<?php if($option == 'com_weblinks') {?>
<jdoc:include type="modules" name="user2" style="raw"/>
<?php } ?>Деякі змінні використовувані в шаблонах
- $mainframe->getCfg('sitename') - назва сайту;
- $mainframe->getCfg('mailfrom') - електронна адреса Адміністратора;
- $mainframe->getCfg('live_site') - URL сайту;
- $this->template - ім'я папки шаблона.
7/13/2008
qutIM - аналог qip під Linux
http://qutim.org:
qutIM - is new instant messenger. Project began at 2008 January and is under development right now. Main goal is to create fast and user friendly ICQ analogue client for Linux OS. Windows and Mac users will be able to use qutIM as well - it's written in C++ with Qt, so it will run on most platforms.- Tabbed and windowed messaging modes
- Fast and uses little memory
- Lots of smiles packs
- X-statuses
- Cross platform
- Open source
- Permanent development
6/02/2008
Dummy Credit Card
Test Credit Card Account Numbers
| Credit Card Type | Credit Card Number |
| American Express | 378282246310005 |
| American Express | 371449635398431 |
| American Express Corporate | 378734493671000 |
| Australian BankCard | 5610591081018250 |
| Diners Club | 30569309025904 |
| Diners Club | 38520000023237 |
| Discover | 6011111111111117 |
| Discover | 6011000990139424 |
| JCB | 3530111333300000 |
| JCB | 3566002020360505 |
| MasterCard | 5555555555554444 |
| MasterCard | 5105105105105100 |
| Visa | 4111111111111111 |
| Visa | 4012888888881881 |
| Visa | 4222222222222 Note : Even though this number has a different character count than the other test numbers, it is the correct and functional number. |
| Processor-specific Cards | |
| Dankort (PBS) | 76009244561 |
| Dankort (PBS) | 5019717010103742 |
| Switch/Solo (Paymentech) | 6331101999990016 |
5/21/2008
Windows Live Writer у Блогері
При публікуванні записів у свій ЖЖ я використовую Semagic. А от щоб написати щось у Блогер я змушений був користуватись веб мордою яку надає Блогер. Додавання запису у мене займає приблизно годину, що мене дуже не тішить. Промоніторивши нет я знайшов Windows Live Writer. І тепер у мене є нормальний кліент для постання топіків.
П.С. Даний запис створено у Windows Live Writer
12/14/2007
Перший Нах
Для чого цей блог.
Для тих хто хоче дізнатись про адміінстрування з середини.
Для того щоб писати про улюблену справу.
Для себе і для всіх))
Попередньо у планах є написання статтей про те з чим я стикався і були проблеми зі стандартними настройками.