1   Kim

Gestioni dei servizi

Author:Andrea Manni
Copyright:GFDL
Version:0.1

Questi appunti sono ad uso privato.

Generato il 2017-03-16 con: http://docutils.sourceforge.net/rst.html

1.1   Virtual server

Deployment dei siti web

1.1.1   Filesystem

Mettere nella home dell’utente (per FTP) le cartelle:

  • sitoweb
  • logs
  • stats
logs
Dedicata ai log di apache
stats
Dedicata a webalizer

1.1.2   Virtual host per apache

Esempio di un file per /etc/apache2/sites-available/ sample:

<VirtualHost *:80>
        ServerAdmin webmaster@andreamanni.com
        ServerName www.paspped.it
        ServerAlias paspped.it

        DocumentRoot /home/danilooo/sitoweb
        <Directory /home/danilooo/sitoweb >
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>


        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /home/danilooo/logs/access.log combined
        #ErrorLog /home/danilooo/logs/error.log
</VirtualHost>


#<VirtualHost *:80>
#       # This goes for webalizer
#       # Create a web.conf in /etc/webalizer and cron daily will process it
#       # You should create directories for stats/ and logs/
#       ServerAdmin webmaster@andreamanni.com
#       ServerName stats.pasequipped.it
#       DocumentRoot /home/danilo/stats
#
#       <Directory /home/danilooo/stats >
#               Options Indexes FollowSymLinks MultiViews
#               AllowOverride None
#               Order allow,deny
#               allow from all
#       </Directory>
#       LogLevel crit
#</VirtualHost>

1.1.3   Webalizer

I file di configurazione per webalizer vanno nella cartella /etc/webalizer , possono essere anche link simbolici. Da qui vengono letti direttamente da cron.daily.

Copiare un file di esempio e modificare:

#ReportTitle    Usage Statistics for
ReportTitle    Statistiche per nomesito.it

HostName       www.nomesito.it
Quiet           yes

# Your own site should be hidden
HideSite        *nomesito.it

# Your own site gives most referrals
HideReferrer    www.nomesito.it/

1.2   Backup

Scripts vari per il backup

1.2.1   Incremental

Script per il backup incrementale del file system di root (o altro) su un filesystem locale. Questo usa un link relativo latest piuttosto che usare qualche parametro come yesterday.

rsynt_root_incremental.sh

#!/bin/sh
# This script goes for the periodic incremental backup
# of the OS: root partition.
# Beware: garage is not build on LVM

FS_path=/mnt/backup
# Path where the backup filesystem is located:
# this could be used for a mount ro | rw

BAK_path=garage/os
# Relative path to FS_path where the actual backup is

mount -o remount,rw $FS_path
rsync --progress --stats -ax --delete \
        --link-dest=$FS_path/$BAK_path/latest \
        --exclude=/tmp/ \
        --exclude=var/spool/squid3 \
        --exclude=mnt/clusters \
        --exclude=mnt/backup \
        --exclude=/proc \
        --exclude=/sys \
        --exclude=*vmdk \
        --exclude=*iso \
/ $FS_path/$BAK_path/root_$(date +%Y%m%d)

rm $FS_path/$BAK_path/latest
ln -s $FS_path/$BAK_path/root_$(date +%Y%m%d) $FS_path/$BAK_path/latest

mount -o remount,ro $FS_path

1.2.2   Backup di kim

Script per una partizione che non sta su LVM:

#mount mount /dev/main/squeeze_bak /mnt/squeeze_bak/
mount /mnt/squeeze_bak
rsync -ax  --delete \
        --exclude=/proc \
        --exclude=/sys \
        --exclude=/sys \
        /* /mnt/squeeze_bak/
umount /mnt/squeeze_bak
fsarchiver -j2  savefs /tmp/squeeze_$(date +%Y%m%d).fsa /dev/main/squeeze_backup

# put the thing on ftp server
HOST='ftpback'
R_PATH='/kim'
LOCAL_PATH='/tmp'
FILE="squeeze_$(date +%Y%m%d).fsa"

/usr/bin/ftp -i $HOST <<OMG
cd $R_PATH
lcd $LOCAL_PATH
put $FILE
quit
OMG

rm /tmp/squeeze_$(date +%Y%m%d).fsa

exit 0

Ovviamente per far funzionare il client FTP normale in automatico serve un file ntrc.

~/.netrc::
machine ftpback login user_name password passwd

Potendo non sarebbe male usare ncftpput:

#/bin/bash
FTPU="user" # ftp login name
FTPP="passwd" # ftp password
FTPS="ftp.server.com" # remote ftp server
FTPF="/home/backup/" # remote ftp server directory for $FTPU & $FTPP
LOCALD="backup.$(date +%d.%m.%y).tgz"
ncftpput -m -u $FTPU -p $FTPP $FTPS  $FTPF $LOCAL

1.2.2.1   FTP fs con fuse

Si puo’ montare un filesystem ftp con fuse, per quanto non sia affidabile per fare il backup puo’ essere comodo per controllarlo.

/etf/fstab:

curlftpfs#ftp://ftpback /mnt/ftp fuse rw,nosuid,nodev,noauto 0 0

Le password di accesso sono sempre in ~/.netrc/ (che fa schifio...).

1.2.3   LDAP backup

Backup non incrementale di un’intera tree:

#to backup slapd:
mount -o remount,rw /mnt/backup/
/usr/sbin/slapcat  -f /etc/ldap/slapd.conf -l /mnt/backup/garage/ldap/$(date +%Y%m%d).ldif
/bin/bzip2 /mnt/backup/garage/ldap/$(date +%Y%m%d).ldif
mount -o remount,ro /mnt/backup/

Ripristino di ldap:

  • Stoppare ldap
  • rimuovere il db presente: rm /var/lib/ldap/*

caricare il backup:

slapadd -v -c -l backup.ldif
# slapadd -v -c -l backup.ldif -f /etc/ldap/slapd.conf
  • Eseguire slapindex e cambiare i propietari dei file di ldap:

    slapindex
    chown openldap:openldap /var/lib/ldap/*
    

-Tornare ad eseguire ldap

1.3   Postgresql

Installazione di postgresql in ambiente distribuito: sincronizzazione tra servers. Pacchetti da installare:

postgresql
( postgresql-8.4 postgresql-common )

Per la creazione di utenti, gestione delle autenticazioni si veda la guida di PHP.

Per distribuire / backuppare Postgres con un warm standby e’ consigliato Postgres v.9 , quindi la guida stata’ altrove...

1.3.1   Backup

Ci sono due strumenti:

pg_dumpall
CRea un backup di tutto il cluster, le informazioni sui privilegi sui database e i singoli database. E’ l’ottimale per fare unbackup completo dell’intero server.
pg_dump
Crea un backup di singoli elementi: un database o anche una solo tabella.

Si usi pg_dump per scaricare i dati di un db:

# Dump di un intero database
pg_dump -Fc dbname > dbname.dump

# Dump di una tabella
pg_dump -t mytab mydb > db.sql
# " compresso
pg_dump -Fc -t mytab mydb > db.sql

Tutti i backup sono comprimibili al volo:

pg_dump dbname |  gzip -c > dbname.sql.gz

1.3.2   Ripristino

pg_restore -d dbname < dbname.dump # see Section 23.1.3, Updating Planner Statistics in the documentation and Section 23.1.5, The Autovacuum Daemon analyse

1.4   DPKG / APT

Per fare una lista dei pacchetti installati:

dpkg --get-selections > /tmp/dpkg-list.txt

Per ricaricare la lista e reinstallare il tutto:

dpkg --clear-selections
dpkg --set-selections < /tmp/dpkg-list.txt\
dpkg --get-selections | sed -e \'s/deinstall/purge/\' > /tmp/dpkg-list.txt
dpkg --set-selections < /tmp/dpkg-list.txt

1.5   Dist-upgrade

Routine per il dist-upgrade da una release all’altra:

status/
      apt.conf       ifconfig   passwd  sfdisk_sda.out  uname
      dpkg-list.txt  lilo.conf  ps      sources.list    uptime
      fstab          mount      route   umount

Per status si usa:
cd status
dpkg --get-selections > dpkg-list.txt
sfdisk -d /dev/sda > sfdisk_sda.out
cp /etc/apt/sources.list ./
cp /etc/apt/apt.conf ./
cp /etc/fstab ./
ifconfig > ifconfig
route -n > route
cp /etc/passwd ./
uname -a > uname
cp /etc/lilo.conf ./
ps -aef > ps
uptime > uptime
cp /etc/fstab ./
mount > mount
cp /etc/mtab ./
lvs > lvs
vgs > vgs
pvs > pvs
cat /proc/mdstat  > mdstat
df -h > df
discus > discus

Preparazione pre update

ntpdate-debian update
Stoppare cron: /etc/init.d/cron stop
Eseguire tutti gli script di back up
Fare un fsck fi tutti i filesystem
Eseguire un apt-get install -f



vim /etc/apt/sources.list
apt-get update
apt-get -d dist-upgrade
apt-get  install apt dpkg
apt-get install -f
apt-get dist-upgrade

1.5.1   Lilo reboot test

E’ possibile far fare a lilo un reboot sul nuovo kernel, se questo non funziona e si va in panic rifare un reboot con il kernel vecchio. Si deve mettere come default il kernel vecchio, aggiungere un panic:

default=LinuxOLD

image=/vmlinuz
        label=Linux
        append="panic=5"
        read-only
#       restricted
        initrd=/initrd.img

eseguire lilo, eseguire un:

lilo -R Linux

Che fara’ fare un boot solo per una volta sul kernel nuovo, se questo va in panic istanzia un reboot che tornera’ sul kernel vecchio di default.

1.6   Btrfs

Creare un subvolume:

btrfsctl -S NewSubVol /mnt/test

Creare uno snapshot:

btrfsctl -s /mnt/test/NewSnapShot /mnt/test/NewSubVol

Note

Se lo stesso subvolume viene montato in piu’ punti sara’ sempre con le stesse opzioni, alias compresso in questo caso.

Visualizzare i btrfs disponibili:

btrfs filesystem show

Visualizzare i sottovolumi disponibili:

btrfs subvolume list

Montare un subvolume compresso:

mount /dev/main/btrfs -o subvol=Sid64,compress /mnt/sid

Lo stesso in fstab:

/dev/mapper/main-btrfs  /       btrfs    subvol=Sid64,compress,noatime 0       1

Opzioni di mount: https://btrfs.wiki.kernel.org/index.php/Getting_started#Mount_Options

1.7   Mailman

1.7.1   Purgare archivio

Per purgare un archivio on line:

vim /var/lib/mailman/archives/private/aerei.mbox/aerei.mbox
/var/lib/mailman/bin/arch --wipe aerei
Settare il campo reply to nei settaggi della mail in caso di liste virtuali:
reply_to_address

1.7.2   Nuova lista con virtual domain

Per le liste @lists.andreamanni.com non ci dovrebbero essere problemi, basta inserire le voci in /etc/aliases e tutto dovrebbe andare.

Per liste @piffa.net bisogna invece usare i virtual: l’indirizzo email principale dovrebbe andare in

/etc/mailman/virtual-mailman

Poi fare un postmap virtual-mailman e un reload di mailman

Gli indirizzi di servizio (iscrizioni, admini,...) al momento funzionano mettendoli nei virtual di postfix:

/etc/postfix/virtual poi fare un postmap virtual e un reload di postfix

1.8   Dkim

Tests:

dig @ns1.piffa.net mail._domainkey.piffa.net txt
dig @ns2.piffa.net mail._domainkey.piffa.net txt

Altri hosts:
dig @ns1.piffa.net mail._domainkey.zap.piffa.net txt
dig @ns1.piffa.net mail._domainkey.andreamanni.com txt

Open dkim:
opendkim-testkey -d piffa.net -s mail -vvv
opendkim-testkey -d zap.piffa.net -s mail -vvv
opendkim-testkey -d andreamanni.com -s mail -vvv


SMTP test:
http://dkimvalidator.com/