воскресенье, 17 октября 2010 г.

Линукс сервер

В целом я справился. Администрировать по ssh было непривычно, но не так противно, как я думал.

Чтобы поднять необходимую конфигурацию: Trac и Mercurial под Apache, мне пришлось
  • Установить программное обеспечение
    apt-get install apache2
    apt-get install libapache2-mod-auth-plain
    apt-get install libapache2-mod-macro
    apt-get install libapache2-mod-wsgi
    apt-get install binutils
    apt-get install python-setuptools
    apt-get install mercurial
    easy_install genshi
    easy_install trac
    easy_install TracMercurial

  • Подключить второй диск, на котором будут данные
    mkdir /data
    mount /dev/xvdd /data
    nano /etc/fstab
    Диск был уже отформатирован, так что с fdisk/mkfs возиться не пришлось.

  • Включить необходимые модули в Apache. Делается это очень круто, созданием симлинков в нужной папке.
    ln -s /etc/apache2/mods-available/ssl.load     /etc/apache2/mods-enabled/ssl.load
    ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf
    ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
    ln -s /etc/apache2/mods-available/wsgi.load /etc/apache2/mods-enabled/wsgi.load
    ln -s /etc/apache2/mods-available/wsgi.conf /etc/apache2/mods-enabled/wsgi.conf
    ln -s /etc/apache2/mods-available/macro.load /etc/apache2/mods-enabled/macro.load
    Работает такой метод за счёт включения файлов по маске
    Include mods-enabled/*.load
    Include mods-enabled/*.conf
    Особенностью является так же то, что основной файл кончигурации - apache2.conf, а не httpd.conf как я привык.

  • Настроить Apache, это я уже умел.


У python 2.7.0 нет стандартного модуля WSGI, так что подключил 2.6.6. Компилировать было лень.

Ещё настроил бекапирование данных.
apt-get install libio-socket-ssl-perl
apt-get install sendemail

и bash скрипт

#!/bin/bash

date2stamp () {
date --utc +%Y-%m-%d-%H-%M-%S
}

timestamp=$(date2stamp)

for path in /mnt/data/backup/*.tar.gz
do
rm $path
done


cd /mnt/data/

rm -rf /mnt/data/backup/mercurial
mkdir /mnt/data/backup/mercurial

for path in /mnt/data/mercurial/*
do
name=$(basename $path)

hg clone $path /mnt/data/backup/mercurial/$name

tar --create --file=/mnt/data/backup/mercurial-$name-$timestamp.tar.gz --gzip backup/mercurial/

rm -rf /mnt/data/backup/mercurial/$name
done

rm -rf /mnt/data/backup/trac
mkdir /mnt/data/backup/trac

for path in /mnt/data/trac/*
do
name=$(basename $path)

trac-admin $path hotcopy /mnt/data/backup/trac/$name

tar --create --file=/mnt/data/backup/trac-$name-$timestamp.tar.gz --gzip backup/trac/

rm -rf /mnt/data/backup/trac/$name
done

for path in /mnt/data/backup/*.tar.gz
do
name=$(basename $path)

sendemail -f backup-collector@triflesoft.org -u "$name" -m "Backup." -a $path -t backup-collector@triflesoft.org -s smtp.triflesoft.org:25 -o tls=yes -xu backup-collector@triflesoft.org -xp BaCkuPpa$$Word
done