1 Kim¶
Gestioni dei servizi
- Author:
Andrea Manni
- Copyright:
GFDL
- Version:
0.1
Questi appunti sono ad uso privato.
Generato il 2024-01-27 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/