Свобода

Свобода

Последние публикации
Самые читаемые статьи
Последние комментарии

Финстрип за декабрь 2011

27-12-2011, 14:31 | Просмотров: 335
Раздел: О заработках в сети
Сапа: 5 568 рублей (-1852)
Трастлинк: 3 946 рублей (+406)
Миралинкс: 400 рублей (+44)
Партнерки: 92 366 рублей (+55373)
Баннерная реклама: 3 600 рублей (+0)
Рефералы: 550 рублей (+0)
AdSense: 442 рублей (+0)
Итоговый доход: ~3504$ или 106 872 рублей (+53971)

Расходы:
Сервер/хостинг:
Хостинг: 565р (+0)
Сервер: 9 730р (-15270)
Сапа: 258р (+0)
Сеопульт: 2 697р (+152)
Руки: 200р (0)
Баннерная реклама: 2 030р (-6000)
Домены: 190р (+95)
Зарплата сотрудникам: 19 000р (+6000)
Итого расход: 34 670р (-15023)

Итого прибыль: 72 202 рублей (+68994)

Финстрип за ноябрь 2011

1-12-2011, 00:03 | Просмотров: 348
Раздел: Продвижение и сео-палево
Сапа: 7 420 рублей (-2504)
Трастлинк: 3 540 рублей (+169)
Миралинкс: 356 рублей (-1644)
Партнерки: 36 993 рублей (+14793)
Баннерная реклама: 3 600 рублей (-600)
Рефералы: 550 рублей (+24)
AdSense: 442 рублей (+142)
Итоговый доход: ~1763$ или 52 901 рублей (+10380)

Расходы:
Хостинг: 565р (+0)
Сервер: 25 000р (+19357)
Сапа: 258р (+0)
Сеопульт: 2 545р (+1405)
Руки: 200р (0)
Баннерная реклама: 8 030р (+5880)
Домены: 95р (-1505)
Зарплата сотрудникам: 13 000р (0)
Итого расход: 49 693р (+24287)

Итого прибыль: 3 208 рублей (-13907)

Чтож, процесс запущен, проекты раскручиваются, сервера закуплены (дорогой сетап вышел, диски то подорожали... в следующем месяце аренда будет на много дешевле). Следующий финстрип покажет что к чему.

Мигрируем с raid1 на raid10

11-11-2011, 04:13 | Просмотров: 226
Раздел: Разработка
Мигрируем с raid1 на raid10 без потери данных. Загрузчик тоже оставляем на месте.

Исходные данные. Есть raid1 /dev/md1 из 4х дисков с названиями sda6, sdb6, sdc6, sdd6 и sda5, sdb5, sdc5, sdd5. Boot расположен на sdd1 (этот диск будем эталоном).

Для начала займемся загрузчиком. Создадим раид1 /dev/md0 на 2х дисках /dev/sdd и /dev/sdb (можно и на 4х) и поместим туда загрузчик.

fdisk /dev/sdb. Создаем на нём разделы по образу и подобию /dev/sdd. Либо можно запустить дублирование разделов:

sfdisk -d /dev/sdd --force | sfdisk /dev/sdb --force


Теперь создадим деградированный raid1 на /dev/md4

mdadm --create /dev/md4 --level=1 --raid-disks=2 missing /dev/sdb1
mke2fs -j /dev/md4


Далее мы должны внести изменения в файл /etc/mdadm/mdadm.conf в данный момент времени которые не содержат никакой информации о наших новых массивах RAID.

mdadm --examine --scan >> /etc/mdadm/mdadm.conf


Перезагрузимся, чтобы получить UUID для массива /dev/md4
reboot


Если после перезагрузки у вас появились массивы со странными названиями вроде /dev/md127 и при этом есть /dev/md4 (или его вовсе нет), то выполните остановку этих массивов и добавьте их снова
mdadm -S /dev/md127
mdadm -S /dev/md4
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm --assemble /dev/md4


Узнаем какой UUID у старого загрузчика /dev/md0 и узнаем новый UUID у /dev/md4 (советую пару раз перезагрузится чтобы проверить что UUID каждый раз одинаковый для /dev/md4)
ls -l /dev/disk/by-uuid


В файле /etc/fstab сделаем замену
#UUID=7092eb46-9ee8-4a32-b9a7-5d759cc74af0 /boot           ext3    defaults        0       2
/dev/md4 /boot           ext3    defaults        0       2


В файле /etc/mtab добавим:
#/dev/sdd1 /boot ext3 rw 0 0
/dev/md4 /boot ext3 rw 0 0


Теперь возьмемся за загрузчик GRUB2. Отредактируем загрузчик /boot/grub/grub.cfg. Везде где встречается старый UUID - 4d7faa7f-25b3-4a14-b644-682ffd52943b заменяем на наш новый UUID - 29683c02-5bd7-4805-8608-5815ba578b6c, по сути это будет в каждой секций search
И везде где мы меняли UUID на 1 строчку выше есть set root, например
set root='(hd0)'
или что-то в этом роде. всю строку заменим везде эту строку на
set root='(md/4)'

В итоге получиться вот так:

insmod raid
insmod mdraid
insmod part_msdos
insmod part_msdos
insmod part_msdos
insmod part_msdos
insmod ext2
set root='(md/4)'
search --no-floppy --fs-uuid --set 59f76eb9-00d2-479e-b94e-6eb54fc574d4
set locale_dir=($root)/grub/locale

А секция ### BEGIN /etc/grub.d/10_linux ### будет выглядеть так

menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
    insmod raid
    insmod mdraid
    insmod part_msdos
    insmod part_msdos
    insmod part_msdos
    insmod part_msdos
    insmod ext2
    set root='(md/4)'
    search --no-floppy --fs-uuid --set 59f76eb9-00d2-479e-b94e-6eb54fc574d4
    echo    'Loading Linux 2.6.32-5-amd64 ...'
    linux    /vmlinuz-2.6.32-5-amd64 root=/dev/md1 ro  quiet
    echo    'Loading initial ramdisk ...'
    initrd    /initrd.img-2.6.32-5-amd64
}
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os {


В первый раз не советую что-то менять ниже menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64 (recovery mode)', в случае чего (доступ к серверу через KVM-IP) сможете загрузится с рековери и откатить все изменения или починить все.

Мы указываем, что будем грузится с root='(md/4)' – производим загрузку с нашего RAID1 массива /dev/md4 (который будет производится с /boot раздела) вместо /dev/sdd или /dev/sdb, что важно, если один из наших жестких дисков выйдет из строя, то система будет по-прежнему работоспособна и сможет загрузится.

Обновим ram-диск, иначе система просто не загрузится.
update-initramfs -u


Теперь скопируем информация на /dev/md4. Примонтируем:

mkdir /mnt/md4
mount /dev/md4 /mnt/md4


И скопируем на /dev/md4 содержимое /boot

rsync -avHxl --progress --inplace --exclude 'lost+found' /boot/ /mnt/md4/
umount /mnt/md4/


Мы должны убедится, что загрузчик GRUB2 установлен на обоих жестких дисках, а так же на массиве /dev/md4. Запускаем

dpkg-reconfigure grub-pc


и выбираем все диски, на которые нужно установить загрузчик. Этот способ самый надежный.

Теперь пора перезагрузиться, и посмотреть правильно ли мы все сделали.
reboot


Если все загрузилось, то заканчиваем собирать raid1 для загрузчика

mdadm /dev/md4 --add /dev/sdd1
reboot


Инструкция писалась в живую, работа велась на рабочем сервере и все делалось один в один как описано в этой инструкции. Так что она полностью рабочая.

---------------------------------------------

А теперь займемся миграцией с RAID1 на RAID10.
На /dev/md0 находится /boot
На /dev/md1 находится /
На /dev/md2 находится swap

Будем работать только с /dev/md1 и /dev/md2

Для начала извлечем 2 диска из массива:
mdadm /dev/md1 --fail /dev/sda6 --remove /dev/sda6
mdadm /dev/md1 --fail /dev/sdb6 --remove /dev/sdb6
mdadm /dev/md2 --fail /dev/sda5 --remove /dev/sda5
mdadm /dev/md2 --fail /dev/sdb5 --remove /dev/sdb5


Уменьшим размер массива:
mdadm -G /dev/md1 -n2
mdadm -G /dev/md2 -n2


И в тоге, у нас более стандартноя ситуация, когда есть RAID1 массив из 2х дисков, и 2 свободных диска, и мы хотим собрать из этого RAID10

Вытащим 1 диск из RAID1
mdadm /dev/md1 --fail /dev/sdc6 --remove /dev/sdc6
mdadm /dev/md2 --fail /dev/sdc5 --remove /dev/sdc5


Т.к. на /dev/md2 находится swap раздел, то можно просто сделать так:
swapoff -a
mdadm -S /dev/md2
mdadm --create /dev/md2 --chunk=2048 --level=10 --raid-devices=4 /dev/sda5 /dev/sdb5 /dev/sdc5 /dev/sdd5
mkswap /dev/md2
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
ls -l /dev/disk/by-uuid
nano /etc/fstab -> UUID для swap подставляем новый
swapon -a


Соберем деградированный RAID10 на /dev/md3, создадим там раздел и примонтируем

mdadm --create /dev/md3 --chunk=2048 --level=10 --raid-devices=4 /dev/sda6 /dev/sdb6 /dev/sdc6 missing
mke2fs -j /dev/md3

[/code]
Запишем данные о массивах в конфиг, чтобы после перезагрузки они были:
[code]mdadm --examine --scan >> /etc/mdadm/mdadm.conf


Если случайно перезагрузились до того, как записали данные о массивах в конфиг, то выполните
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm --assemble /dev/md3

[/code]
Теперь будем монтировать / не на /dev/md1 а на /dev/md3.
Редактируем файл /etc/fstab, конкртено эту строчку
[code]# / was on /dev/md1 during installation
UUID=4d7faa7f-25b3-4a14-b644-682ffd52943b /               ext3    errors=remount-ro 0       1


Узнаем какой UUID у /dev/md3
ls -l /dev/disk/by-uuid
lrwxrwxrwx 1 root root 9 Nov  9 20:56 29683c02-5bd7-4805-8608-5815ba578b6c -> ../../md3


В итоге файл /etc/fstab
# / was on /dev/md1 during installation
#UUID=4d7faa7f-25b3-4a14-b644-682ffd52943b /               ext3    errors=remount-ro 0       1
UUID=29683c02-5bd7-4805-8608-5815ba578b6c /               ext3    errors=remount-ro 0       1


Теперь редактируем /etc/mtab. Заменяем все /dev/md1 на /dev/md3
/dev/md3 / ext3 rw,errors=remount-ro 0 0


Отредактируем загрузчик /boot/grub/grub.cfg. Везде где встречается 4d7faa7f-25b3-4a14-b644-682ffd52943b заменяем на наш новый UUID - 29683c02-5bd7-4805-8608-5815ba578b6c, по суди это важно для секций search
Внутри секции ### BEGIN /etc/grub.d/10_linux ### заменим
root=/dev/md1 на
root=/dev/md3

Осталось только скопировать информацию с /dev/md1 на /dev/md3 и закончить сборку.
mkdir /mnt/md3
mount -t ext3 /dev/md3 /mnt/md3
rsync -avHxl --progress --inplace --exclude 'lost+found' / /mnt/md3/
umount /mnt/md3


И чтобы все это дело загрузилось, update-initramfs надо делать когда меняется устройство /boot или /
update-initramfs -u


Теперь можно перезагрузится, все должно пройти успешно.
reboot


Загрузившись мы должны закончить создания raid10, добавив /dev/sdd6. Но вначале нужно остановить старый raid1 и очистить раздел
mdadm -S /dev/md1
mdadm --zero-superblock /dev/sdd6
mdadm /dev/md3 --add /dev/sdd6


Снова запишем данные о массивах в конфиг:
mdadm --examine --scan >> /etc/mdadm/mdadm.conf


Вот и все, мы мигрировали на raid10 с raid1 без потери данных.

Nginx и Apache плангины для munin

4-11-2011, 15:25 | Просмотров: 295
Раздел: Разработка
Nginx и Apache плангины для munin
Надеюсь c установкой munin ни у кого нет проблем, поэтому перейду сразу к установке плагинов для Nginx и Apache

Типичная настрока. Nginx на 80 порту, Апачь на 8080

Выполним
munin-node-configure --suggest


И видим:
apache_accesses | no | no
apache_processes | no | no
apache_volume | no | no

Апачь плагины уже есть в наличии, а про nginx ни слова. Значит будем активировать апачевские плагины и устанавливать nginx'овые.

В файле /etc/munin/plugin-conf.d/munin-node в конце добавим:
[nginx*]
env.url http://localhost/nginx_status

[apache*]
env.ports 8080


Теперь скачаем и установим плагины :
cd /usr/share/munin/plugins
wget -O nginx_memory http://exchange.munin-monitoring.org/plugins/nginx_memory/version/1/raw
wget -O nginx_request http://exchange.munin-monitoring.org/plugins/nginx_request/version/1/raw
wget -O nginx_status http://exchange.munin-monitoring.org/plugins/nginx_status/version/1/raw

chmod +x nginx_memory
chmod +x nginx_request
chmod +x nginx_status

ln -s /usr/share/munin/plugins/nginx_memory /etc/munin/plugins/nginx_memory
ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins/nginx_request
ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/nginx_status

ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes
ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses
ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume


Проверим правильно ли установилось:
munin-run nginx_memory
ram.value 826966016
munin-run nginx_request
Name "main::port" used only once: possible typo at /etc/munin/plugins/nginx_request line 49.
Can't locate object method "new" via package "LWP::UserAgent" at /etc/munin/plugins/nginx_request line 55.
aptitude install libwww-perl
munin-run nginx_request
request.value 3496660


Теперь нужно собрать nginx с модулем --with-http_stub_status_module
./configure --with-http_stub_status_module
make
checkinstall


И прописать в файле /etc/nginx/nginx.conf

   server {
        listen 127.0.0.1:80;
        location /nginx_status
     {
            stub_status on;
            access_log   off;
            allow 127.0.0.1;
            deny all;
        }
    }


И перезапустим nginx
/etc/init.d/nginx restart


У апача тоже нужно включить /server-status, если он еще не включен. В файле /etc/apache2/mods-available/status.conf лежит все нужная информация.

Если на всех этапах все прошло без ошибок, то все готово, осталось только перезапустить munin
/etc/init.d/munin-node restart

Протестировать производительность диска

3-11-2011, 21:50 | Просмотров: 148
Раздел: Разработка
Тестирование скорости записи:
dd if=/dev/zero of=5G bs=10M count=500 или dd if=/dev/zero of=/dev/sdb bs=64k count=100k


результат для RAID10:
5242880000 bytes (5.2 GB) copied, 24.3414 s, 215 MB/s

результат для RAID1 совпадает с результатом одного диска:
5242880000 bytes (5.2 GB) copied, 47.2359 s, 111 MB/s


Тестирование скорости чтения:
dd of=/dev/null if=/dev/sdb bs=64k count=100k


Результат для RAID10:
6710886400 bytes (6.7 GB) copied, 27.7939 s, 279 MB/s

Результат для RAID1:
4148690944 bytes (4.1 GB) copied, 32.2609 s, 129 MB/s

Финстрип за октябрь 2011

3-11-2011, 17:23 | Просмотров: 263
Раздел: О заработках в сети
Сапа: 9 924 рублей (-473)
Линкфид: 0 рублей (-176)
Трастлинк: 3 371 рублей (+66)
Миралинкс: 2000 рублей (+2000)
Партнерки: 22 200 рублей (+3053)
Баннерная реклама: 4200 рублей (+1100)
Рефералы: 526 рублей (+10)
AdSense: 300 рублей (+190)
Итоговый доход: ~1400$ или 42 521 рублей (+4443)

Расходы:
Хостинг: 565р (+0)
Сервер: 5 643 р (-278)
VPS: 900р (+900)
Сапа: 258р (+0)
Сеопульт: 1 140р (-960)
Руки: 200р (0)
Баннерная реклама: 2 150р (+1070)
Домены: 1600р (+1600)
Зарплата сотрудникам: 13 000р (0)
Итого расход: 25 406р (+1413)

Итого прибыль: 17 115 рублей (+3030)

Новые проекты запущены, осталось только на новый сервак переехать. Текущего конечно бы еще на долго хватило, но не достаточно для серьезного и быстрого роста, ради чего все и делалось.

Синхронизировать папки на разных серверах

28-10-2011, 13:00 | Просмотров: 145
Раздел: Разработка
С помощью rsync можно это реализовать вот так:

rsync -a -essh /home/uploads/ root@server:/home/uploads


/home/uploads/ - то что копируем
root@server:/home/uploads - куда копируем, где server адрес второго сервера

Соединение будет происходить по ssh, во время соединения вас попросят ввести пароль от root

Финстрип за сентябрь 2011

1-10-2011, 08:25 | Просмотров: 668
Раздел: О заработках в сети
Сапа: 10 397 рублей (-1257)
Линкфид: 176 рублей (-704)
Трастлинк: 3 436 рублей (+239)
Миралинкс: 206 рублей (-1076)
Партнерки: 19 147 рублей (+2281)
Баннерная реклама: 3100 рублей (+0)
Рефералы: 516 рублей (+17)
AdSense: 110 рублей (-131)
Итоговый доход: ~1200$ или 38 078 рублей (+349)

Расходы:
Хостинг: 565р (+0)
Сервер: 5 920р (+555)
Сапа: 258р (+0)
Сеопульт: 1 900р (+597)
Руки: 200р (-102)
Баннерная реклама: 2 150р (+1070)
Домены: 0р (0)
Зарплата сотрудникам: 13 000р (+250)
Итого расход: 23 993р (+2248)

Итого прибыль: 14 085 рублей (-1899)

С Linkfeed больше не работаю, слишком низкие доходы. В сапе доходы вернулись на прежний уровень. А по остальным доходам был небольшой застой в середине сентября, не поддерживаю привычную динамику роста доходов. 1.5 месяца работаю над новым крупным проектом, не остается времени на что-то еще. Но как я и говорю, застой справедлив только для начала и середины сентября (начало учебного года, оказывается этот сезон сильное бьет по доходам первые 2 недели), ближе к октябрю уже велись активные работы и результаты очень хорошие, так что октябрь будет форсированным месяцем, если все запланированное получится, планирую взять планку в 120к в месяц.

Debian 6 awstat

30-09-2011, 19:43 | Просмотров: 204
Раздел: Разработка
Debian 6 awstatПроблема с awstat на Debian под управлением ISPmanager.
Вылазит ошибка вида: cd: 22: can't cd to /etc/awstats

apache2 установлен MPM: ITK

Чтобы избавится от этой проблемы нужно:
1. chown -R www-data:www-data /etc/awstats/
2. chmod 755 -R /var/log/apache2/*
chmod 755 -R /var/log/apache2/
3. в файле /etc/logrotate.d/apache2
create 640 root adm
заменить на
create 644 root adm

4. chown -R www-data:USER /var/www/USER/data/www/USER.NET/webstat
5. chmod 755 -R /var/www/USER/data/www/USER.NET/webstat/

libgd для nginx в Debian

25-09-2011, 22:30 | Просмотров: 186
Раздел: Разработка
Где взять libgd для работы модуля ngx_http_image_filter_module в debian?

А вот тут:
aptitude install libgd2-xpm
aptitude install libgd2-xpm-dev