Gestioni dei servizi
Author: Andrea Manni Copyright: GFDL Version: 0.1
Questi appunti sono ad uso privato.
Indice degli argomenti
Generato il 2017-03-16 con: http://docutils.sourceforge.net/rst.html
Deployment dei siti web
Mettere nella home dell’utente (per FTP) le cartelle:
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>
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/
Scripts vari per il backup
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
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.
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
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...).
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:
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
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...
Ci sono due strumenti:
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
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
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
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
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.
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
Per purgare un archivio on line:
vim /var/lib/mailman/archives/private/aerei.mbox/aerei.mbox
/var/lib/mailman/bin/arch --wipe aerei
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
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/