Рубрика: man

  • Резервное копирование данных на сервере ( backup mysql)

    часть первая mysql
    Важная часть стабильности жизни сервера.

    создаём каталог для бэкапа например
    /var/backup
    в нём будет находится скрипт бэкапа и подкаталоги для различных баз.
    у меня на сервере несколько сайтов для каждого сайта я создам отдельные подкаталоги
    /var/backup/site1
    /var/backup/site2
    в них будут находится непосредственно бэкапы

    далее создаём скрипт бэкапа mysql сервера.

    #touch database.sh

    делаем файл исполняемым

    #chmod +x database.sh

    первой строкой в файле указываем исполнять данный файл интерпретатором bash

    #!/bin/bash

    далее делаем дап

    mysqldump -u root -pMyPass database_name > site1/database_name.sql

    где
    -u root имя пользователя БД
    -p Указывает на пароль пользователя root в данном примере MyPass
    database_name — имя базы данных
    > site1/database_name.sql положить дам в данный файл.

    Далее надо упаковать данный дамп и указать дату его создания

    7z a -t7z site1/$(date +%d_%b_%Y)_database_name.sql.7z site1/database_name.sql

    7zip упаковывает файл site1/database_name.sql в каталоге site1 с именем сегодняшняя_дата_database_name.sql.7z

    $(date +%d_%b_%Y) — задаётся формат даты. в данном примере имя файла будет выглядеть так:
    14_Янв_2009_database_name.sql.7z

    Теперь можно удалить временный файл дампа, ведь есть его архив :))

    find ./ -name «*.sql» -exec rm {} \;

    утилита find находит все файлы в данном каталоге и подкаталогах соответствующие формату «*.sql» и удаляет их.
    в итоге в каталогах остаются лишь архивные копии дампов.

    теперь осталось добавить данный скрипт на авто запуск по расписанию в крон.

    редактируем список задач крона

    crontab -e

    дописываем наш скрипт
    00 01 * * * /var/backup/database.sh

    выходим с сохранением
    Ctrl+X
    и подтверждаем наши намерения Y

    В итоге каждый день в час ночи будет запускаться скрипт резервного копирования баз данных mysql

  • Создать раздел linux

    просмотр linux разделов

    root@SERVER:/# fdisk -l
    Disk /dev/sda: 499.9 GB, 499989348352 bytes
    255 heads, 63 sectors/track, 60786 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x0000849c
    
    Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1       59650   479138593+  83  Linux
    /dev/sda2           59651       60786     9124920    5  Extended
    /dev/sda5           59651       60786     9124888+  82  Linux swap / Solaris
    
    Disk /dev/sdb: 1499.9 GB, 1499989016576 bytes
    255 heads, 63 sectors/track, 182363 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x00093e0cCode language: Bash (bash)

    Создание linux раздела

    #fdisk /dev/sdbCode language: Bash (bash)

    далее жмём n
    далее жирным что вводил

    Command action
    e   extended
    p   primary partition (1-4)Code language: Bash (bash)

    p

    Partition number (1-4):1
    First cylinder (1-182363, default 1):
    Using default value 1
    Last cylinder or +size or +sizeM or +sizeK (1-182363, default 182363):
    Using default value 182363Code language: Bash (bash)

    Сохраняем и выходим

    Command (m for help): w
    
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.Code language: Bash (bash)

    раздел sdb1 создан. далее форматируем его.

    # mkfs -t ext3 /dev/sdb1
    mke2fs 1.40.2 (12-Jul-2007)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    183107584 inodes, 366207691 blocks
    18310384 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=0
    11176 block groups
    32768 blocks per group, 32768 fragments per group
    16384 inodes per group
    Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
    102400000, 214990848
    
    Writing inode tables: done
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done
    
    This filesystem will be automatically checked every 26 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.Code language: Bash (bash)

    Монтируем и вперёд 🙂

  • После обновления ALERT — canary mismatch on efree() — heap overflow detected

    После очередного обновления ubuntu 8.04 LTS, Апач начал вываливаться с ошибкой
    ALERT — canary mismatch on efree() — heap overflow detected
    Долгие поиски выявили что баг описан уже и я не первый.
    Для меня это первый баг, который повлиял на стабильность работы сервера

    This bug has been fixed in CVS.

    Snapshots of the sources are packaged every three hours; this change
    will be in the next snapshot. You can grab the snapshot at
    http://snaps.php.net/.

    Thank you for the report, and for helping us make PHP better.

    Собирать свежий пхп из сорцов мне не хотелось(суровое детсво, где я много компилил..), я слил с ubuntu 8.10 sources.list
    сделал
    apt-get update
    apt-get install php5-common
    после чего установилась php 5.2.6
    После ночи работы пока всё работает

  • Оптимизация web-сервера: eAccelerator

    продолжаю облегчать жизнь серверу.
    eAccelerator — все мы знаем что при обращении к файлу пхп вэб сервер компилирует пхп файл в некую программу, которая в дальнейшем, что-то делает и выдаёт нам результат в виде html, ну и кто-то задумался(может отбукился 🙂 ): «а зачем постоянно делать одну и туже работу — компилировать при каждом обращении один и тот же файл», и вот eAccelerator берёт откомпилированный php файл и складывает во временную папку и когда пользователь обращается к очередному пхп файлу в дело вступает eAccelerator, который проверяет есть ли уже «готовый» запрашиваемый файл, если находит готовый то сразу запускает его, тем самым облегчает жизнь серверу (значительно снижает нагрузку на процессор) например у меня нагрузка в часы пик с 70% упала до 7-25%

    ставим php5-dev

    apt-get install php5-dev

    берём свежий дистрибутив с http://eaccelerator.net/
    распаковываем, заходим в извлечённый каталог

    phpize

    ./configure —enable-eaccelerator=shared

    make

    make install

    cd /etc/php5/conf.d

    Создаём конфигурационный файл для акселератора

    touch eacclerator.ini

    вставляем в него содержимое

    zend_extension = «/usr/lib/php5/20060613+lfs/eaccelerator.so»
    eaccelerator.shm_size = «0»
    eaccelerator.cache_dir = «/var/cache/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 = «7»
    eaccelerator.allowed_admin_path = «/var/www/»

    создаю каталог для кэша

    mkdir /var/cache/eaccelerator

    chmod 777 /var/cache/eaccelerator

    теперь можно перезапустить apache

    для контроля над тех процессом есть файл control.php
    в нём находим логин пароль и перекидываем в нужную нам папку на территории вэб сервера ну и заходим 🙂

  • iptables пробросить порт

    есть ubuntu шлюз надо чтоб с инета был доступен нейкий сервис на внутренней машине

    iptables -t nat -A PREROUTING -p tcp -d 91.195.101.20 --dport 7888 -j DNAT --to-destination 192.168.100.251:7888
    iptables -t nat -A POSTROUTING -p tcp --dst 192.168.100.251 --dport 7888 -j SNAT --to-source 91.195.101.20Code language: Bash (bash)

    Первое правило подменяет ip приёмника на внутренний ип, а второе обратно подменяет ип отправителя на внешний.